mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
h264: Workaround invalid MPEG-TS broadcasts
Fixes seeking to the first keyframe Fixes Ticket1029 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
9e5f79ed8a
commit
76c3fff2f3
@ -3867,11 +3867,17 @@ again:
|
||||
if ((err = decode_slice_header(hx, h)))
|
||||
break;
|
||||
|
||||
if (h->sei_recovery_frame_cnt >= 0 && (h->frame_num != h->sei_recovery_frame_cnt || hx->slice_type_nos != AV_PICTURE_TYPE_I))
|
||||
h->valid_recovery_point++;
|
||||
|
||||
if ( h->sei_recovery_frame_cnt >= 0
|
||||
&& ( h->recovery_frame<0
|
||||
|| ((h->recovery_frame - h->frame_num) & ((1 << h->sps.log2_max_frame_num)-1)) > h->sei_recovery_frame_cnt)) {
|
||||
h->recovery_frame = (h->frame_num + h->sei_recovery_frame_cnt) %
|
||||
(1 << h->sps.log2_max_frame_num);
|
||||
|
||||
if (!h->valid_recovery_point)
|
||||
h->recovery_frame = h->frame_num;
|
||||
}
|
||||
|
||||
s->current_picture_ptr->f.key_frame |=
|
||||
|
@ -580,6 +580,11 @@ typedef struct H264Context {
|
||||
*/
|
||||
int recovery_frame;
|
||||
|
||||
/**
|
||||
* Are the SEI recovery points looking valid.
|
||||
*/
|
||||
int valid_recovery_point;
|
||||
|
||||
int luma_weight_flag[2]; ///< 7.4.3.2 luma_weight_lX_flag
|
||||
int chroma_weight_flag[2]; ///< 7.4.3.2 chroma_weight_lX_flag
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user