Armadilloフォーラム

ioctl VIDIOC_QBUFがエラーを返す

a-mizutani

2016年3月8日 11時57分

どうもお世話になっています水谷です

以前からアルマジロ840を使用して、疑似カメラを接続するシステムを作っています
大分進展があり、録画再生等も行える様になってきました

1600x1200までは問題なく動作するのですが

2560x2045に設定するとエラーが出てプログラムが落ちてしまいます

ベースになるプログラムはアルマジロのサンプルの” V4l2CameraView::capture()”を
変更して使っています
エラーが出る部分は、関数の最後にある
------------------------------------------------------------------------------------------
ret = ioctl(m_fd, VIDIOC_QBUF, &buf);
if (ret < 0) {
qWarning() << "failed to re-queue buffer " << buf.index;
return;
}
------------------------------------------------------------------------------------------
で、retに-1が返ってきます、buf.indexは4でした

この部分は2560x2048サイズでも1度はエラーなしで通過するのですが
(なので1枚だけ絵が表示されます)
2回目でabortしています
バッファの確保か何かのエラーだと思っているのですが
ioctlの中が覗けないので、どう調べて良いか悩んでいます
お知恵が頂けたら幸いです

コメント

at_yashi

2016年3月8日 13時21分

VIDIOC_QBUF がエラーになった場合、errno を確認すると簡単な原因がわかります。

http://linuxtv.org/downloads/v4l-dvb-apis/vidioc-qbuf.html

また、VIDIOC_QBUF の ioctl は、linux-3.4-at/drivers/media/video/v4l2-ioctl.c
video_ioctl2() に入ってくるはずです。

at_yashi

2016年3月8日 13時45分

後から見た人が分かりやすいように、件名を「ioctl VIDIOC_QBUFがエラーを返す」に変更しても良いですか?

a-mizutani

2016年3月8日 19時24分

お返事どうもありがとうございます

> 後から見た人が分かりやすいように、件名を「ioctl VIDIOC_QBUFがエラーを返す」に変更しても良いですか?
はい、お願いしてもよろしいですか?