i_frame等几个变量


Encode()

for( i_frame = 0, i_file = 0, i_progress = 0; b_ctrl_c == 0 && (i_frame < i_frame_total || i_frame_total == 0); )
这个i_frame会一直增长,直到最大帧,它代表的是这个视频的总帧数,从0开始增长。

h->frames.i_last_idr,代表的是上一个IDR帧的编号(编码器自身的内部编号)。

举例:(下面所列数字均按下图所示排列)
i_frame等几个变量 - 加菲 - 视频会议 - 加菲
 
150
44;172

175
44;197

200
48;224

225
38;244

这些都是在代码中用printf语句实时打出来的。

h->fenc->i_frame - h->frames.i_last_idr 总是为h->fenc->i_poc的一半。这是因为poc每帧增长2,这是考虑场造成的。

h->frames.i_last_idr
h->fenc->i_frame
h->fenc->i_poc
这些参数不与其它函数的变量发生联系,它是编码过程中自已维护的。所以它和encode()函数的帧数统计是不一样的。
比如已编码帧数,encode()的计数要多两帧,因为它延迟了两帧编码。

可以从代码上看出它们这间的关系:
h->fenc->i_poc = 2 * (h->fenc->i_frame - h->frames.i_last_idr);

x264_frame_t *fenc
fenc->i_frame = h->frames.i_input++;
h->frames.i_input++记录从文件中输入编码器的总帧数,比如已经从文件读了100帧,这个fenc->i_frame就是100,而Encode_Frame就已经被调用了100次,x264_Encoder_Encode就被调用了100次,被编码的总帧数实际是10-2,因为前两次x264_Encoder_Encode并没有实质进行编码。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值