ffmpeg中sws_scale和sws_getContext的api分析

sws_scale

可以使用它进行图像像素的转换,分辨率的转换

int sws_scale(struct SwsContext *c, const uint8_t *const srcSlice[],
              const int srcStride[], int srcSliceY, int srcSliceH,
              uint8_t *const dst[], const int dstStride[]);

/*
@params c   :   用来存放像素转换前后数据的上下文SwsContext,使用sws_getContext来创建
@params srcSlice    :   输入图像的每个颜色通道的数据指针。其实就是解码后的AVFrame中的data[]数组
@params srcStride :     输入图像的每个颜色通道的跨度。.也就是每个通道的行字节数,对应的是解码后的AVFrame中的linesize[]数组。
@param srcSliceY    :       定义在输入图像上处理区域,srcSliceY是起始位置
@param srcSliceH    :   定义在输入图像上处理区域,srcSliceY是处理多少行,如果srcSilceY=0,srcSliceH=height,表示一次性处理完整的图像,可以使用多线程进行优化处理
@param dst       图像输出信息,输出的data[]
@param dstStride 图像输出信息,输出的linesize[]
@return         返回值为高度
*/

sws_getContext

分配并返回一个SwsContext, 在sws_scale中可以执行执行转换和缩放的功能

struct SwsContext *sws_getContext(int srcW, int srcH, enum AVPixelFormat srcFormat,
                                  int dstW, int dstH, enum AVPixelFormat dstFormat,
                                  int flags, SwsFilter *srcFilter,
                                  SwsFilter *dstFilter, const double *param);
/*
@param srcW : 源图像的宽度
@param srcH : 源图像的高度
@param srcFormat : 源图像的像素格式
@param dstW : 目标图像的宽度
@param dstH : 目标图像的高度
@param dstFormat : 目标图像的格式
@param flags: 指定算法和选项进行重新缩放
@param srcFilter :  源图像滤波参数
@param dstFilter : 输出图像的滤波参数
@param param : 定义特定缩放算法需要的参数
@return 
        成功 :  返回一个上下文管理器 SwsContext
*/

相关推荐