From 80f8e035baf47a98cae3ce3a309cca1f5e499280 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michaelni@gmx.at>
Date: Thu, 24 Jul 2008 22:04:29 +0000
Subject: [PATCH] init_poc() vs. idr() cleanup

Originally committed as revision 14377 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 libavcodec/h264.c | 16 +++-------------
 1 file changed, 3 insertions(+), 13 deletions(-)

diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index fe14807b934..9107301a17e 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -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;
     }
-- 
GitLab