mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-30 11:22:14 +00:00
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 Originally committed as revision 10664 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
f57e2af68b
commit
3a22d7fa1f
@ -2249,6 +2249,13 @@ static int frame_start(H264Context *h){
|
|||||||
if(MPV_frame_start(s, s->avctx) < 0)
|
if(MPV_frame_start(s, s->avctx) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
ff_er_frame_start(s);
|
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);
|
assert(s->linesize && s->uvlinesize);
|
||||||
|
|
||||||
@ -7189,7 +7196,7 @@ static int decode_nal_units(H264Context *h, uint8_t *buf, int buf_size){
|
|||||||
if((err = decode_slice_header(hx, h)))
|
if((err = decode_slice_header(hx, h)))
|
||||||
break;
|
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
|
if(hx->redundant_pic_count==0 && hx->s.hurry_up < 5
|
||||||
&& (avctx->skip_frame < AVDISCARD_NONREF || hx->nal_ref_idc)
|
&& (avctx->skip_frame < AVDISCARD_NONREF || hx->nal_ref_idc)
|
||||||
&& (avctx->skip_frame < AVDISCARD_BIDIR || hx->slice_type!=B_TYPE)
|
&& (avctx->skip_frame < AVDISCARD_BIDIR || hx->slice_type!=B_TYPE)
|
||||||
|
Loading…
Reference in New Issue
Block a user