|
|
|
@ -559,7 +559,7 @@ int ff_h264_decode_seq_parameter_set(H264Context *h, int ignore_truncation) |
|
|
|
|
|
|
|
|
|
fail: |
|
|
|
|
av_free(sps); |
|
|
|
|
return -1; |
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void build_qp_table(PPS *pps, int t, int index, const int depth) |
|
|
|
@ -593,6 +593,7 @@ int ff_h264_decode_picture_parameter_set(H264Context *h, int bit_length) |
|
|
|
|
PPS *pps; |
|
|
|
|
int qp_bd_offset; |
|
|
|
|
int bits_left; |
|
|
|
|
int ret; |
|
|
|
|
|
|
|
|
|
if (pps_id >= MAX_PPS_COUNT) { |
|
|
|
|
av_log(h->avctx, AV_LOG_ERROR, "pps_id %u out of range\n", pps_id); |
|
|
|
@ -606,6 +607,7 @@ int ff_h264_decode_picture_parameter_set(H264Context *h, int bit_length) |
|
|
|
|
if ((unsigned)pps->sps_id >= MAX_SPS_COUNT || |
|
|
|
|
!h->sps_buffers[pps->sps_id]) { |
|
|
|
|
av_log(h->avctx, AV_LOG_ERROR, "sps_id %u out of range\n", pps->sps_id); |
|
|
|
|
ret = AVERROR_INVALIDDATA; |
|
|
|
|
goto fail; |
|
|
|
|
} |
|
|
|
|
sps = h->sps_buffers[pps->sps_id]; |
|
|
|
@ -613,11 +615,13 @@ int ff_h264_decode_picture_parameter_set(H264Context *h, int bit_length) |
|
|
|
|
av_log(h->avctx, AV_LOG_ERROR, |
|
|
|
|
"Invalid luma bit depth=%d\n", |
|
|
|
|
sps->bit_depth_luma); |
|
|
|
|
ret = AVERROR_INVALIDDATA; |
|
|
|
|
goto fail; |
|
|
|
|
} else if (sps->bit_depth_luma == 11 || sps->bit_depth_luma == 13) { |
|
|
|
|
av_log(h->avctx, AV_LOG_ERROR, |
|
|
|
|
"Unimplemented luma bit depth=%d\n", |
|
|
|
|
sps->bit_depth_luma); |
|
|
|
|
ret = AVERROR_PATCHWELCOME; |
|
|
|
|
goto fail; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -663,6 +667,7 @@ int ff_h264_decode_picture_parameter_set(H264Context *h, int bit_length) |
|
|
|
|
pps->ref_count[1] = get_ue_golomb(&h->gb) + 1; |
|
|
|
|
if (pps->ref_count[0] - 1 > 32 - 1 || pps->ref_count[1] - 1 > 32 - 1) { |
|
|
|
|
av_log(h->avctx, AV_LOG_ERROR, "reference overflow (pps)\n"); |
|
|
|
|
ret = AVERROR_INVALIDDATA; |
|
|
|
|
goto fail; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -724,5 +729,5 @@ int ff_h264_decode_picture_parameter_set(H264Context *h, int bit_length) |
|
|
|
|
|
|
|
|
|
fail: |
|
|
|
|
av_free(pps); |
|
|
|
|
return -1; |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|