视频播放器—解码操作-图像后处理

------------------------------------全系列文章目录------------------------------------

大致流程
  • 初始化操作:根据源数据和目标数据的宽高以及像素格式,初始化SwsContext结构体
  • 解码操作:对demux出来的数据包进行解码
  • 后处理操作:若解码成功,则将源图像数据转换成目标图像数据
    在这里插入图片描述
解码相关API函数
  • avcodec_decode_video2:将大小为 avpkt->size 的视频帧从 avpkt->data 解码为图片。某些解码器可能支持单个 AVPacket包含多个帧,但解码器将只解码第一帧。

    int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture,
                              int *got_picture_ptr, const AVPacket *avpkt);
    
    • AVCodecContext:描述该音频解码器上下文的结构体

    • AVFrame:用于存储解码的数据

    • int * got_frame_ptr:如果当前无法解码帧,则返回0;否则返回非0

    • AVPacket:待解码的数据包

    • 返回值:负数表示出现错误,否则为解码时消耗AVPacket的字节数

图像后处理相关API函数
  • 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);
    
    • srcW,srcH,srcFormat:源数据宽高及格式
    • dstW,dstH,dstFormat:目标数据宽高及格式
    • flags:指定用于重新缩放的算法和选项,如SWS_FAST_BILINEAR,SWS_BICUBIC
    • srcFilter,dstFilter:源/目标图像的滤波器信息
    • param:特定缩放算法需要的参数
  • 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[]);
    
    • c:图像后处理结构体SwsContext
    • srcSlice:源切片平面的指针数组
    • srcStride:源切片平面的步幅(每行数据的字节数)数组
    • srcSliceY:要处理的切片在源图像中的位置,即切片第一行在图像中的数量(从零开始计数)
    • srcSliceH:源切片的高度,即切片中的行数
    • dst:输出图像的切片平面的指针数组
    • dstStride:输出图像的切片平面的步幅(每行数据的字节数)数组
参考
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值