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
a-mizutani
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()
に入ってくるはずです。