[FFmpeg-cvslog] h264: do not print "too many references" warning for intra-only.

Ronald S. Bultje git at videolan.org
Wed May 11 06:06:42 CEST 2011


ffmpeg | branch: master | Ronald S. Bultje <rsbultje at gmail.com> | Fri May  6 16:31:26 2011 -0400| [e86fbe1751772a3b6790652ab382dcebaeec3aa8] | committer: Ronald S. Bultje

h264: do not print "too many references" warning for intra-only.

Fixes issue 2679.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e86fbe1751772a3b6790652ab382dcebaeec3aa8
---

 libavcodec/h264_refs.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/libavcodec/h264_refs.c b/libavcodec/h264_refs.c
index 13d43e6..a025f7d 100644
--- a/libavcodec/h264_refs.c
+++ b/libavcodec/h264_refs.c
@@ -621,15 +621,17 @@ int ff_h264_execute_ref_pic_marking(H264Context *h, MMCO *mmco, int mmco_count){
         }
     }
 
-    if (h->long_ref_count + h->short_ref_count > h->sps.ref_frame_count){
+    if (h->long_ref_count + h->short_ref_count -
+            (h->short_ref[0] == s->current_picture_ptr) > h->sps.ref_frame_count){
 
         /* We have too many reference frames, probably due to corrupted
          * stream. Need to discard one frame. Prevents overrun of the
          * short_ref and long_ref buffers.
          */
         av_log(h->s.avctx, AV_LOG_ERROR,
-               "number of reference frames exceeds max (probably "
-               "corrupt input), discarding one\n");
+               "number of reference frames (%d+%d) exceeds max (%d; probably "
+               "corrupt input), discarding one\n",
+               h->long_ref_count, h->short_ref_count, h->sps.ref_frame_count);
 
         if (h->long_ref_count && !h->short_ref_count) {
             for (i = 0; i < 16; ++i)



More information about the ffmpeg-cvslog mailing list