From dc032f33322ea94c9a9cc7b7fc92f1c0a840c277 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Le=20Loarer?= <lll+ffmpeg@m4x.org>
Date: Tue, 1 Feb 2005 11:12:53 +0000
Subject: [PATCH] correct long term picture management patch by (Loic
 <lll+ffmpeg m4x org>) fixes decoding of MR2_MW_A.264

Originally committed as revision 3916 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 libavcodec/h264.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index 83464826ea9..dbedcb48ce2 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -3150,10 +3150,12 @@ static void idr(H264Context *h){
             break; \
         }
 
-    for(i=0; i<h->long_ref_count; i++){
-        h->long_ref[i]->reference=0;
-        CHECK_DELAY(h->long_ref[i]);
-        h->long_ref[i]= NULL;
+    for(i=0; i<16; i++){
+        if (h->long_ref[i] != NULL) {
+            h->long_ref[i]->reference=0;
+            CHECK_DELAY(h->long_ref[i]);
+            h->long_ref[i]= NULL;
+        }
     }
     h->long_ref_count=0;
 
@@ -3263,6 +3265,7 @@ static int execute_ref_pic_marking(H264Context *h, MMCO *mmco, int mmco_count){
             
             h->long_ref[ mmco[i].long_index ]= remove_short(h, mmco[i].short_frame_num);
             h->long_ref[ mmco[i].long_index ]->long_ref=1;
+            h->long_ref_count++;
             break;
         case MMCO_LONG2UNUSED:
             pic= remove_long(h, mmco[i].long_index);
-- 
GitLab