[FFmpeg-devel] [PATCH 7/7] avcodec/h264*: Use get_ue_golomb2() where appropriate
Andreas Rheinhardt
andreas.rheinhardt at gmail.com
Tue Jul 14 18:34:54 EEST 2020
The difference of this function and get_ue_golomb() is that the latter
emits an error message upon encountering an exp golomb code outside the
range of 0..8190. But this error message is unnecessary in cases where
there is a dedicate error message in case of range error (these error
messages also use a correct logcontext and not NULL). So replace
get_ue_golomb() by get_ue_golomb2() everywhere where there is a
dedicated error message in case of errors.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
---
libavcodec/cavsdec.c | 6 +++---
libavcodec/h264_cavlc.c | 4 ++--
libavcodec/h264_parse.c | 4 ++--
libavcodec/h264_parser.c | 2 +-
libavcodec/h264_ps.c | 8 ++++----
libavcodec/h264_slice.c | 2 +-
6 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/libavcodec/cavsdec.c b/libavcodec/cavsdec.c
index 0aea9757b7..8da57ec80a 100644
--- a/libavcodec/cavsdec.c
+++ b/libavcodec/cavsdec.c
@@ -502,7 +502,7 @@ static inline void mv_pred_sym(AVSContext *h, cavs_vector *src,
/** kth-order exponential golomb code */
static inline int get_ue_code(GetBitContext *gb, int order)
{
- unsigned ret = get_ue_golomb(gb);
+ unsigned ret = get_ue_golomb2(gb);
if (ret >= ((1U<<31)>>order)) {
av_log(NULL, AV_LOG_ERROR, "get_ue_code: value too larger\n");
return AVERROR_INVALIDDATA;
@@ -613,7 +613,7 @@ static inline int decode_residual_inter(AVSContext *h)
int block;
/* get coded block pattern */
- int cbp = get_ue_golomb(&h->gb);
+ int cbp = get_ue_golomb2(&h->gb);
if (cbp > 63U) {
av_log(h->avctx, AV_LOG_ERROR, "Inter cbp not in 0-63 range\n");
return AVERROR_INVALIDDATA;
@@ -685,7 +685,7 @@ static int decode_mb_i(AVSContext *h, int cbp_code)
/* get coded block pattern */
if (h->cur.f->pict_type == AV_PICTURE_TYPE_I)
- cbp_code = get_ue_golomb(gb);
+ cbp_code = get_ue_golomb2(gb);
if (cbp_code > 63U) {
av_log(h->avctx, AV_LOG_ERROR, "illegal intra cbp\n");
return AVERROR_INVALIDDATA;
diff --git a/libavcodec/h264_cavlc.c b/libavcodec/h264_cavlc.c
index c4b14d2578..3dcb82c71c 100644
--- a/libavcodec/h264_cavlc.c
+++ b/libavcodec/h264_cavlc.c
@@ -739,7 +739,7 @@ int ff_h264_decode_mb_cavlc(const H264Context *h, H264SliceContext *sl)
sl->prev_mb_skipped = 0;
- mb_type= get_ue_golomb(&sl->gb);
+ mb_type = get_ue_golomb2(&sl->gb);
if (sl->slice_type_nos == AV_PICTURE_TYPE_B) {
if(mb_type < 23){
partition_count = ff_h264_b_mb_type_info[mb_type].partition_count;
@@ -1067,7 +1067,7 @@ decode_intra_mb:
write_back_motion(h, sl, mb_type);
if(!IS_INTRA16x16(mb_type)){
- cbp= get_ue_golomb(&sl->gb);
+ cbp = get_ue_golomb2(&sl->gb);
if(decode_chroma){
if(cbp > 47){
diff --git a/libavcodec/h264_parse.c b/libavcodec/h264_parse.c
index fd9b824756..11ae20a32a 100644
--- a/libavcodec/h264_parse.c
+++ b/libavcodec/h264_parse.c
@@ -234,9 +234,9 @@ int ff_h264_parse_ref_count(int *plist_count, int ref_count[2],
num_ref_idx_active_override_flag = get_bits1(gb);
if (num_ref_idx_active_override_flag) {
- ref_count[0] = get_ue_golomb(gb) + 1;
+ ref_count[0] = get_ue_golomb2(gb) + 1;
if (slice_type_nos == AV_PICTURE_TYPE_B) {
- ref_count[1] = get_ue_golomb(gb) + 1;
+ ref_count[1] = get_ue_golomb2(gb) + 1;
} else
// full range is spec-ok in this case, even for frames
ref_count[1] = 1;
diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c
index 3b62567245..d5bf80a89a 100644
--- a/libavcodec/h264_parser.c
+++ b/libavcodec/h264_parser.c
@@ -348,7 +348,7 @@ static inline int parse_nal_units(AVCodecParserContext *s,
/* key frame, since recovery_frame_cnt is set */
s->key_frame = 1;
}
- pps_id = get_ue_golomb(&nal.gb);
+ pps_id = get_ue_golomb2(&nal.gb);
if (pps_id >= MAX_PPS_COUNT) {
av_log(avctx, AV_LOG_ERROR,
"pps_id not in 0-255 range\n");
diff --git a/libavcodec/h264_ps.c b/libavcodec/h264_ps.c
index 18e5d9578f..9f0d07810b 100644
--- a/libavcodec/h264_ps.c
+++ b/libavcodec/h264_ps.c
@@ -459,7 +459,7 @@ int ff_h264_decode_seq_parameter_set(GetBitContext *gb, AVCodecContext *avctx,
goto fail;
}
- sps->poc_cycle_length = get_ue_golomb(gb);
+ sps->poc_cycle_length = get_ue_golomb2(gb);
if ((unsigned)sps->poc_cycle_length >=
FF_ARRAY_ELEMS(sps->offset_for_ref_frame)) {
@@ -750,7 +750,7 @@ int ff_h264_decode_picture_parameter_set(GetBitContext *gb, AVCodecContext *avct
{
AVBufferRef *pps_buf;
const SPS *sps;
- unsigned int pps_id = get_ue_golomb(gb);
+ unsigned int pps_id = get_ue_golomb2(gb);
PPS *pps;
int qp_bd_offset;
int bits_left;
@@ -821,8 +821,8 @@ int ff_h264_decode_picture_parameter_set(GetBitContext *gb, AVCodecContext *avct
ret = AVERROR_PATCHWELCOME;
goto fail;
}
- pps->ref_count[0] = get_ue_golomb(gb) + 1;
- pps->ref_count[1] = get_ue_golomb(gb) + 1;
+ pps->ref_count[0] = get_ue_golomb2(gb) + 1;
+ pps->ref_count[1] = get_ue_golomb2(gb) + 1;
if (pps->ref_count[0] - 1 > 32 - 1 || pps->ref_count[1] - 1 > 32 - 1) {
av_log(avctx, AV_LOG_ERROR, "reference overflow (pps)\n");
ret = AVERROR_INVALIDDATA;
diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
index 29b57bc305..fab8cbc839 100644
--- a/libavcodec/h264_slice.c
+++ b/libavcodec/h264_slice.c
@@ -1762,7 +1762,7 @@ static int h264_slice_header_parse(const H264Context *h, H264SliceContext *sl,
return AVERROR_INVALIDDATA;
}
- sl->pps_id = get_ue_golomb(&sl->gb);
+ sl->pps_id = get_ue_golomb2(&sl->gb);
if (sl->pps_id >= MAX_PPS_COUNT) {
av_log(h->avctx, AV_LOG_ERROR, "pps_id not in 0-255 range\n");
return AVERROR_INVALIDDATA;
--
2.20.1
More information about the ffmpeg-devel
mailing list