[SCM] libav/experimental: Mask bits of reference indexes properly to avoid negative numbers entangling each other. Fixes at least: CAMA1_TOSHIBA_B cama1_vtc_c CAMA3_Sand_E cama3_vtc_b CAMASL3_Sony_B CVMA1_TOSHIBA_B CVMAQP3_Sony_D cvmp_mot_mbaff0_full_B FRExt/HCAMFF1_HHI FRExt/HCHP3_HHI_A FRExt/HVLCMFF0_Sony_B

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:27:15 UTC 2013


The following commit has been merged in the experimental branch:
commit beca9a286c46a67b39fde5fab62a60d0766fc5ad
Author: Michael Niedermayer <michaelni at gmx.at>
Date:   Sun Aug 10 16:10:39 2008 +0000

    Mask bits of reference indexes properly to avoid negative numbers entangling
    each other.
    Fixes at least:
    CAMA1_TOSHIBA_B
    cama1_vtc_c
    CAMA3_Sand_E
    cama3_vtc_b
    CAMASL3_Sony_B
    CVMA1_TOSHIBA_B
    CVMAQP3_Sony_D
    cvmp_mot_mbaff0_full_B
    FRExt/HCAMFF1_HHI
    FRExt/HCHP3_HHI_A
    FRExt/HVLCMFF0_Sony_B
    
    Originally committed as revision 14683 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index a4e3339..619b618 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -191,10 +191,10 @@ static void fill_caches(H264Context *h, int mb_type, int for_deblock){
                 if(USES_LIST(mb_type,list)){
                     int8_t *ref = &s->current_picture.ref_index[list][h->mb2b8_xy[mb_xy]];
                     *(uint32_t*)&h->ref_cache[list][scan8[ 0]] =
-                    *(uint32_t*)&h->ref_cache[list][scan8[ 2]] = pack16to32(ref[0],ref[1])*0x0101;
+                    *(uint32_t*)&h->ref_cache[list][scan8[ 2]] = (pack16to32(ref[0],ref[1])&0x00FF00FF)*0x0101;
                     ref += h->b8_stride;
                     *(uint32_t*)&h->ref_cache[list][scan8[ 8]] =
-                    *(uint32_t*)&h->ref_cache[list][scan8[10]] = pack16to32(ref[0],ref[1])*0x0101;
+                    *(uint32_t*)&h->ref_cache[list][scan8[10]] = (pack16to32(ref[0],ref[1])&0x00FF00FF)*0x0101;
                 }
             }
         }

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list