[SCM] libav/experimental: fix decoding of conformace streams AUD_MW_E.264 and BA1_FT_C.264 again (there where last correctly decoded with h264.c rev 1.96)

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 15:43:51 UTC 2013


The following commit has been merged in the experimental branch:
commit b712fb67402caba158eb507a3e32fbe067ed139c
Author: Michael Niedermayer <michaelni at gmx.at>
Date:   Fri May 6 17:04:03 2005 +0000

    fix decoding of conformace streams AUD_MW_E.264 and BA1_FT_C.264 again (there where last correctly decoded with h264.c rev 1.96)
    
    Originally committed as revision 4189 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index fbd11d2..0cd04f9 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -3697,6 +3697,11 @@ static int init_poc(H264Context *h){
     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)
@@ -6946,7 +6951,7 @@ static int decode_frame(AVCodecContext *avctx,
             cur->reference = 1;
 
         for(i=0; h->delayed_pic[i]; i++)
-            if(h->delayed_pic[i]->key_frame)
+            if(h->delayed_pic[i]->key_frame || h->delayed_pic[i]->poc==0)
                 cross_idr = 1;
 
         out = h->delayed_pic[0];

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list