织梦CMS - 轻松建站从此开始!

罗索

avcodec_alloc_frame

jackyhwei 发布于 2012-01-04 10:01 点击:次 
对从文件中读取的包进行解码,将解码后的yuv数据填充在 AVFrame的 data及linesize的字段内。而且经过打印发现从始至终 AVFrame一直在两组数据中间1:1变动。说明 AVFrame始终指向一块内存数据,这块内存数据有可能由avcodec_decode_video()函数内部负责去申请,然后在
TAG:

struct AVFrame
{
uint8_t *data[4];分别指向yuv三个位面及一个未知的位面或者是rgb模式下只有data[0]指向raw data
int linesize[4];四个位面分别的内存块大小
}

AVFrame *avcodec_alloc_frame() //Allocates an AVFrame and sets its fields to default values
初始化的时候AVFrame中的元素data,linesize均为空。未指向任何内存数据

avcodec_decode_video()// Decodes a video frame from \p buf into \p picture.
* The avcodec_decode_video() function decodes a video frame from the input
* buffer \p buf of size \p buf_size.
对从文件中读取的包进行解码,将解码后的yuv数据填充在 AVFrame的 data及linesize的字段内。而且经过打印发现从始至终 AVFrame一直在两组数据中间1:1变动。说明 AVFrame始终指向一块内存数据,这块内存数据有可能由avcodec_decode_video()函数内部负责去申请,然后在解码结束之后自动释 放。

这也说明了为什么在yuv转rgb的时候需要自己去申请一块内存空间并将其绑定在AVFrame上,有可能因为
sws_scale()并不会自动帮用户去申请内存空间,所以为了获取转化之后的RGB数据则需要自动去申请内存使用。
sws_scale()负责图像数据的缩放及尺寸的变法
比如:  yuv420-->yuv444
CIF -> QCIF   QCIF-->CIF等
(zzcqh)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201201/15584.html]
本文出处:百度博客 作者:zzcqh 原文
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容