[FFmpeg-cvslog] r14377 - trunk/libavcodec/h264.c
michael
subversion
Fri Jul 25 00:04:29 CEST 2008
Author: michael
Date: Fri Jul 25 00:04:29 2008
New Revision: 14377
Log:
init_poc() vs. idr() cleanup
Modified:
trunk/libavcodec/h264.c
Modified: trunk/libavcodec/h264.c
==============================================================================
--- trunk/libavcodec/h264.c (original)
+++ trunk/libavcodec/h264.c Fri Jul 25 00:04:29 2008
@@ -3304,6 +3304,9 @@ static void idr(H264Context *h){
}
h->short_ref_count=0;
h->prev_frame_num= 0;
+ h->prev_frame_num_offset= 0;
+ h->prev_poc_msb=
+ h->prev_poc_lsb= 0;
}
/* forget old pics after a seek */
@@ -3696,23 +3699,14 @@ static int init_poc(H264Context *h){
const int max_frame_num= 1<<h->sps.log2_max_frame_num;
int field_poc[2];
- if(h->nal_unit_type == NAL_IDR_SLICE){
- h->frame_num_offset= 0;
- }else{
if(h->frame_num < h->prev_frame_num)
h->frame_num_offset= h->prev_frame_num_offset + max_frame_num;
else
h->frame_num_offset= h->prev_frame_num_offset;
- }
if(h->sps.poc_type==0){
const int max_poc_lsb= 1<<h->sps.log2_max_poc_lsb;
- if(h->nal_unit_type == NAL_IDR_SLICE){
- h->prev_poc_msb=
- h->prev_poc_lsb= 0;
- }
-
if (h->poc_lsb < h->prev_poc_lsb && h->prev_poc_lsb - h->poc_lsb >= max_poc_lsb/2)
h->poc_msb = h->prev_poc_msb + max_poc_lsb;
else if(h->poc_lsb > h->prev_poc_lsb && h->prev_poc_lsb - h->poc_lsb < -max_poc_lsb/2)
@@ -3760,12 +3754,8 @@ static int init_poc(H264Context *h){
field_poc[1] += h->delta_poc[1];
}else{
int poc;
- if(h->nal_unit_type == NAL_IDR_SLICE){
- poc= 0;
- }else{
if(h->nal_ref_idc) poc= 2*(h->frame_num_offset + h->frame_num);
else poc= 2*(h->frame_num_offset + h->frame_num) - 1;
- }
field_poc[0]= poc;
field_poc[1]= poc;
}
More information about the ffmpeg-cvslog
mailing list