aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2010-07-05 14:36:03 +0000
committerMichael Niedermayer <michaelni@gmx.at>2010-07-05 14:36:03 +0000
commit3d5421201ba21d108adc0c76458300ea425114a9 (patch)
treed3f2f43784064ba0434abc54ee0f1f4a3468301e /libavcodec
parent733f5990d0600589782bcfa5c9e22a9391c6c19e (diff)
downloadffmpeg-3d5421201ba21d108adc0c76458300ea425114a9.tar.gz
Perform sliding window operation during frame gap handling.
This avoids some warnings about too many reference frames. Originally committed as revision 24057 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/h264.c3
-rw-r--r--libavcodec/h264_refs.c1
2 files changed, 3 insertions, 1 deletions
diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index e7ffe45d0f..d1662fcb6b 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -1908,7 +1908,8 @@ static int decode_slice_header(H264Context *h, H264Context *h0){
h->prev_frame_num++;
h->prev_frame_num %= 1<<h->sps.log2_max_frame_num;
s->current_picture_ptr->frame_num= h->prev_frame_num;
- ff_h264_execute_ref_pic_marking(h, NULL, 0);
+ ff_generate_sliding_window_mmcos(h);
+ ff_h264_execute_ref_pic_marking(h, h->mmco, h->mmco_index);
}
/* See if we have a decoded first field looking for a pair... */
diff --git a/libavcodec/h264_refs.c b/libavcodec/h264_refs.c
index 7caa4b0003..74eaaa8ada 100644
--- a/libavcodec/h264_refs.c
+++ b/libavcodec/h264_refs.c
@@ -478,6 +478,7 @@ void ff_generate_sliding_window_mmcos(H264Context *h) {
MpegEncContext * const s = &h->s;
assert(h->long_ref_count + h->short_ref_count <= h->sps.ref_frame_count);
+ h->mmco_index= 0;
if(h->short_ref_count && h->long_ref_count + h->short_ref_count == h->sps.ref_frame_count &&
!(FIELD_PICTURE && !s->first_field && s->current_picture_ptr->reference)) {
h->mmco[0].opcode= MMCO_SHORT2UNUSED;