注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

面包会有的

...

 
 
 

日志

 
 

i_frame等几个变量  

2011-10-25 01:44:01|  分类: H264 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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并没有实质进行编码。
  评论这张
 
阅读(868)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017