avcodec/h264: Fix poc_lsb in open gop context
When no IDR nor mmco_reset is found, prev_poc_lsb is undefined and shall not be assumed to be zero
This commit is contained in:
parent
9d1e98afee
commit
cae5b36e20
@ -287,6 +287,8 @@ int ff_h264_init_poc(int pic_field_poc[2], int *pic_poc,
|
|||||||
|
|
||||||
if (sps->poc_type == 0) {
|
if (sps->poc_type == 0) {
|
||||||
const int max_poc_lsb = 1 << sps->log2_max_poc_lsb;
|
const int max_poc_lsb = 1 << sps->log2_max_poc_lsb;
|
||||||
|
if (pc->prev_poc_lsb < 0)
|
||||||
|
pc->prev_poc_lsb = pc->poc_lsb;
|
||||||
|
|
||||||
if (pc->poc_lsb < pc->prev_poc_lsb &&
|
if (pc->poc_lsb < pc->prev_poc_lsb &&
|
||||||
pc->prev_poc_lsb - pc->poc_lsb >= max_poc_lsb / 2)
|
pc->prev_poc_lsb - pc->poc_lsb >= max_poc_lsb / 2)
|
||||||
|
@ -474,7 +474,7 @@ static void idr(H264Context *h)
|
|||||||
h->poc.prev_frame_num =
|
h->poc.prev_frame_num =
|
||||||
h->poc.prev_frame_num_offset = 0;
|
h->poc.prev_frame_num_offset = 0;
|
||||||
h->poc.prev_poc_msb = 1<<16;
|
h->poc.prev_poc_msb = 1<<16;
|
||||||
h->poc.prev_poc_lsb = 0;
|
h->poc.prev_poc_lsb = -1;
|
||||||
for (i = 0; i < MAX_DELAYED_PIC_COUNT; i++)
|
for (i = 0; i < MAX_DELAYED_PIC_COUNT; i++)
|
||||||
h->last_pocs[i] = INT_MIN;
|
h->last_pocs[i] = INT_MIN;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user