[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 メーリングリストの案内