luvcviewを読むその2

取り合えずいろいろすっ飛ばして、画像取り込みのところを見る。
んで今回からSDLが入ってくる。

こことか参照

        SDL_LockYUVOverlay(overlay);
        memcpy(p, videoIn->framebuffer,
                videoIn->width * (videoIn->height) * 2);
        SDL_UnlockYUVOverlay(overlay);
        SDL_DisplayYUVOverlay(overlay, &drect);

        if (videoIn->getPict) {
            switch(videoIn->formatIn){
                case V4L2_PIX_FMT_MJPEG:
                    get_picture(videoIn->tmpbuffer,videoIn->buf.bytesused);
                    break;
                case V4L2_PIX_FMT_YUYV:
                    get_pictureYV2(videoIn->framebuffer,videoIn->width,videoIn->height);
                    break;
                default:
                    break;
            }

処理を書くと

  • ビデオオーバーレイをロック
  • ビデオのフレームバッファからpにコピーちなみにpはcharのポインタ
  • ビデオオーバーレイをアンロック
  • オーバーレイを表画面にbitblit転送
  • ピクチャーゲットのフラグを判別しさらにピクチャーフォーマットも確認
  • picturegetは基本的に、fopenしてfwriteしてfcloseしてる。
  • YUVの場合は変換してfopen,fwrite,fcloseしてる。

と意外と対した工程でもないかもSDLの恩恵がおおきそうだが。