我正在this教程的帮助下使用ffmpeg和SDL的最新开发库来处理一些代码。我被困在必须在屏幕上显示解码帧(AVFrame)的位置。我倾向于使用SDL 2.0的最新API(使用渲染器和纹理以及SDL_Window的使用)执行上述任务即,在屏幕上显示AVFrame 。坦率地说,我不是 SDL_Renderer , SDL_Texture 的专家以及与之相关的功能。但我正在阅读SDL 2.0官方网站上的文档,并通过它们的方式。
有没有办法使用SDL 2.0 API执行以下操作:
将原生帧格式转换为 YUV 的风格并显示它。
(OR)
如果可以,则显示框架而不必将其从原生格式转换。
我想使用渲染器和纹理来完成上述操作。似乎没有一种简单的方法可以使用它们。
任何人都可以指导我完成上述任务的步骤吗?
PS:虽然我还没有明确尝试过,但是我通过将AVFrame格式(原生)转换为RGB来在屏幕上显示AVFrame。但我不希望原生帧格式(主要是YUV)转换为RGB,因为它的计算成本很高。格式之间的转换由sws_scale()
完成答案 0 :(得分:2)
他们有几个平面和包装变体:
SDL_PIXELFORMAT_YV12
:平面模式:Y + V + U(3个平面)
SDL_PIXELFORMAT_IYUV
:平面模式:Y + U + V(3个平面)
SDL_PIXELFORMAT_YUY2
:打包模式:Y0 + U0 + Y1 + V0(1个平面)
SDL_PIXELFORMAT_UYVY
:打包模式:U0 + Y0 + V0 + Y1(1平面)
SDL_PIXELFORMAT_YVYU
:打包模式:Y0 + V0 + Y1 + U0(1个平面)