Mercurial > libavcodec.hg
changeset 5773:e3d7a78e2df3 libavcodec
Fix Picture.key_frame setting to be compatible with frame and field contexts. Part of PAFF implementation.
Contributed in part by Neil Brown.
patch by Jeff Downs, heydowns a borg d com
original thread:
Subject: [FFmpeg-devel] [PATCH] Implement PAFF in H.264
Date: 18/09/07 20:30
author | andoma |
---|---|
date | Thu, 04 Oct 2007 06:50:44 +0000 |
parents | 65b71bd21a4d |
children | e71de81878c4 |
files | h264.c |
diffstat | 1 files changed, 8 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/h264.c Thu Oct 04 06:43:58 2007 +0000 +++ b/h264.c Thu Oct 04 06:50:44 2007 +0000 @@ -2249,6 +2249,13 @@ if(MPV_frame_start(s, s->avctx) < 0) return -1; ff_er_frame_start(s); + /* + * MPV_frame_start uses pict_type to derive key_frame. + * This is incorrect for H.264; IDR markings must be used. + * Zero here; IDR markings per slice in frame or fields are OR'd in later. + * See decode_nal_units(). + */ + s->current_picture_ptr->key_frame= 0; assert(s->linesize && s->uvlinesize); @@ -7189,7 +7196,7 @@ if((err = decode_slice_header(hx, h))) break; - s->current_picture_ptr->key_frame= (hx->nal_unit_type == NAL_IDR_SLICE); + s->current_picture_ptr->key_frame|= (hx->nal_unit_type == NAL_IDR_SLICE); if(hx->redundant_pic_count==0 && hx->s.hurry_up < 5 && (avctx->skip_frame < AVDISCARD_NONREF || hx->nal_ref_idc) && (avctx->skip_frame < AVDISCARD_BIDIR || hx->slice_type!=B_TYPE)