c-如何确定某个色度的每个像素的平面数和字节数



我正在使用LibVLC,希望在内存中渲染视频像素,这样我就可以在不在窗口中绘制视频的情况下拍摄帧的快照(默认情况下)。

如果我理解正确,这可以通过调用libvlc_video_set_callbacks和libvlc_video_set_format_callbacks来实现。在第一个函数中,我必须指定一个类型为libvlc_video_lock_cb的回调,在其中我必须初始化三个平面中的一个,我知道这三个平面是将在其中绘制像素的缓冲区。

我的问题是,每个像素使用的字节数以及必须初始化的平面数取决于视频色度。虽然我知道如何获得这种色度的四个字母的标识符,但我不知道如何获得它的这些特定性质;如果没有这些信息,我不知道我必须分配的缓冲区需要多大,以及有多少个平面。

有人知道怎么做吗?还是我理解错误了?

如前所述,每个像素的字节数和平面数取决于编解码器。因此,一个选项是对代码中当前选项(GREY、I240、RV16、RV15、RV24、RV32、YUY2、YUYV、UYVY、I41N、I422、I420、I411、I410、MJPG)的值进行硬编码。

转到http://www.fourcc.org/以获取详细的代码/格式信息。

您还可以查看vlc项目中的vlc_fourcc.h和fourcc.c。具体参见函数vlc_fourcc_GetChromaDescription

setup回调(libvlc_video_set_format_callbacks()的第二个参数,类型为libvlc_video_format_cb)允许您读取并更改视频格式(可选)。

如果这个回调得到了一个它不理解的格式,它可以将其更改为一个它知道的格式。

最新更新