[Armadillo:07445] Re: Armadillo-420 MJPG-streamer の画像乱れ問題について

Yasuhisa Nakamura email@hidden
2011年 8月 2日 (火) 00:22:40 JST


中村です。

[Armadillo:07434]で自分:

> -f 20 -r 960x720 にしたら、ほとんどのフレームがダメで、

このカメラは 960x720 で 20fps は使えませんでした。
input_uvc.so の引数で -f 20 を指定しても、その解像度での
最大値(この解像度の場合は15)が使われるようです。

使用できる最大解像度より大きな解像度を指定した場合、次のように、
実際に設定された解像度を表示してくれます。

 i: Desired Resolution: 1280 x 960
 i: Frames Per Second.: 10
 i: Format............: MJPEG
 format asked unavailable get width 960 height 720

ですが、fpsに関してはこういう処理(表示)をしてくれません。

そこで、解像度と同じように実際に設定された値を表示するように
してみました。
こんな感じ。

 i: Desired Resolution: 960 x 720
 i: Frames Per Second.: 20
 i: Format............: MJPEG
 framerate asked unavailable get 15 fps

以下は、そのパッチです。

#ioctl(VIDIOC_S_PARM)のエラーチェックもしていなかったので、
#それも入れました。

--- v4l2uvc.c-orig      2011-07-29 14:13:10.000000000 +0900
+++ v4l2uvc.c   2011-07-31 03:45:12.000000000 +0900
@@ -159,6 +159,15 @@
   setfps->parm.capture.timeperframe.numerator = 1;
   setfps->parm.capture.timeperframe.denominator = vd->fps;
   ret = ioctl(vd->fd, VIDIOC_S_PARM, setfps);
+  if (ret < 0) {
+    perror("Unable to set framerate");
+    goto fatal;
+  }
+  if (setfps->parm.capture.timeperframe.denominator != vd->fps) {
+    fprintf(stderr, " framerate asked unavailable get %d fps \n",
+                        setfps->parm.capture.timeperframe.denominator);
+    vd->fps = setfps->parm.capture.timeperframe.denominator;
+  }

   /*
    * request buffers

-- 
なかむら




armadillo メーリングリストの案内