前言
视频绘制使用的qt的QOpenGLWidget,QOpenGLWidget已经对OpenGL做了封装处理,这里主要介绍代码的处理。
YUV转RGB
sws_getContext
功能
多路码流转换,为每个不同的码流都指定一个不同的转换上下文。
函数
struct SwsContext *sws_getContext(
int srcW, /* 输入图像的宽度 */
int srcH, /* 输入图像的宽度 */
enum AVPixelFormat srcFormat, /* 输入图像的像素格式 */
int dstW, /* 输出图像的宽度 */
int dstH, /* 输出图像的高度 */
enum AVPixelFormat dstFormat, /* 输出图像的像素格式 */
int flags, /* 选择缩放算法(只有当输入输出图像大小不同时有效),一般选择SWS_FAST_BILINEAR */
SwsFilter *srcFilter, /* 输入图像的滤波器信息, 若不需要传NULL */
SwsFilter *dstFilter, /* 输出图像的滤波器信息, 若不需要传NULL */
const double *param /* 特定缩放算法需要的参数(?),默认为NULL */
);
sws_getCachedContext
功能
用于一路码流转换。
函数
struct SwsContext *sws_getCachedContext(struct SwsContext *context,
int srcW, // 输入图像的宽度