mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avcodec/h264_slice: clear old slice POC values on parsing failure
If a slice header fails to parse, and the next one uses different Sequence and
Picture parameter sets, certain values may not be read if they are not coded,
resulting in the previous slice values being used.
Signed-off-by: James Almer <jamrial@gmail.com>
(cherry picked from commit ce4a31cd1f
)
This commit is contained in:
parent
d44da66fac
commit
347bcf6054
@ -1821,6 +1821,8 @@ static int h264_slice_header_parse(const H264Context *h, H264SliceContext *sl,
|
||||
if (nal->type == H264_NAL_IDR_SLICE)
|
||||
get_ue_golomb_long(&sl->gb); /* idr_pic_id */
|
||||
|
||||
sl->poc_lsb = 0;
|
||||
sl->delta_poc_bottom = 0;
|
||||
if (sps->poc_type == 0) {
|
||||
sl->poc_lsb = get_bits(&sl->gb, sps->log2_max_poc_lsb);
|
||||
|
||||
@ -1828,6 +1830,7 @@ static int h264_slice_header_parse(const H264Context *h, H264SliceContext *sl,
|
||||
sl->delta_poc_bottom = get_se_golomb(&sl->gb);
|
||||
}
|
||||
|
||||
sl->delta_poc[0] = sl->delta_poc[1] = 0;
|
||||
if (sps->poc_type == 1 && !sps->delta_pic_order_always_zero_flag) {
|
||||
sl->delta_poc[0] = get_se_golomb(&sl->gb);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user