Message ID | 1591111034-15499-1-git-send-email-lance.lmwang@gmail.com |
---|---|
State | Superseded |
Headers | show |
Series | [FFmpeg-devel,v3,01/24] avcodec/h264dec: cosmetics | expand |
Context | Check | Description |
---|---|---|
andriy/default | pending | |
andriy/make | success | Make finished |
andriy/make_fate | success | Make fate finished |
On Tue, Jun 02, 2020 at 11:16:29PM +0800, lance.lmwang@gmail.com wrote: > From: Limin Wang <lance.lmwang@gmail.com> > > Signed-off-by: Limin Wang <lance.lmwang@gmail.com> > --- > libavcodec/h264dec.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c > index 6270ea8..4d8c0b1 100644 > --- a/libavcodec/h264dec.c > +++ b/libavcodec/h264dec.c > @@ -253,8 +253,7 @@ int ff_h264_slice_context_init(H264Context *h, H264SliceContext *sl) > > if (sl != h->slice_ctx) { > memset(er, 0, sizeof(*er)); > - } else > - if (CONFIG_ERROR_RESILIENCE) { > + } else if (CONFIG_ERROR_RESILIENCE) { > > /* init ER */ > er->avctx = h->avctx; > -- > 1.8.3.1 > Sorry, git send-email the wrong directory, please ignore v3, will resend as v4.
On Tue, 2 Jun 2020, lance.lmwang@gmail.com wrote: > From: Limin Wang <lance.lmwang@gmail.com> > > Signed-off-by: Limin Wang <lance.lmwang@gmail.com> > --- > libavcodec/mpegvideo.c | 132 ++++++++++++++++++++++--------------------------- > 1 file changed, 60 insertions(+), 72 deletions(-) > > diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c > index 58fc850..76fb381 100644 > --- a/libavcodec/mpegvideo.c > +++ b/libavcodec/mpegvideo.c > @@ -372,25 +372,27 @@ static int init_duplicate_context(MpegEncContext *s) > s->sc.obmc_scratchpad = NULL; > > if (s->encoding) { > - FF_ALLOCZ_OR_GOTO(s->avctx, s->me.map, > - ME_MAP_SIZE * sizeof(uint32_t), fail) > - FF_ALLOCZ_OR_GOTO(s->avctx, s->me.score_map, > - ME_MAP_SIZE * sizeof(uint32_t), fail) > + if (!FF_ALLOCZ_TYPED_ARRAY(s->me.map, ME_MAP_SIZE) || > + !FF_ALLOCZ_TYPED_ARRAY(s->me.score_map, ME_MAP_SIZE)) > + return AVERROR(ENOMEM); > + > if (s->noise_reduction) { > - FF_ALLOCZ_OR_GOTO(s->avctx, s->dct_error_sum, > - 2 * 64 * sizeof(int), fail) > + if (!FF_ALLOCZ_TYPED_ARRAY(s->dct_error_sum, 2 * 64)) > + return AVERROR(ENOMEM); sizeof(*s->dct_error_sum) does not equal sizeof(int). You should check all your patches in the series for similar mistakes. Thanks, Marton > } > } > - FF_ALLOCZ_OR_GOTO(s->avctx, s->blocks, 64 * 12 * 2 * sizeof(int16_t), fail) > + if (!FF_ALLOCZ_TYPED_ARRAY(s->blocks, 64 * 12 * 2)) > + return AVERROR(ENOMEM); > s->block = s->blocks[0]; > > for (i = 0; i < 12; i++) { > s->pblocks[i] = &s->block[i]; > } > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->block32, sizeof(*s->block32), fail) > + if (!(s->block32 = av_mallocz(sizeof(*s->block32))) || > + !(s->dpcm_macroblock = av_mallocz(sizeof(*s->dpcm_macroblock)))) > + return AVERROR(ENOMEM); > s->dpcm_direction = 0; > - FF_ALLOCZ_OR_GOTO(s->avctx, s->dpcm_macroblock, sizeof(*s->dpcm_macroblock), fail) > > if (s->avctx->codec_tag == AV_RL32("VCR2")) { > // exchange uv > @@ -399,16 +401,14 @@ static int init_duplicate_context(MpegEncContext *s) > > if (s->out_format == FMT_H263) { > /* ac values */ > - FF_ALLOCZ_OR_GOTO(s->avctx, s->ac_val_base, > - yc_size * sizeof(int16_t) * 16, fail); > + if (!FF_ALLOCZ_TYPED_ARRAY(s->ac_val_base, yc_size * 16)) > + return AVERROR(ENOMEM); > s->ac_val[0] = s->ac_val_base + s->b8_stride + 1; > s->ac_val[1] = s->ac_val_base + y_size + s->mb_stride + 1; > s->ac_val[2] = s->ac_val[1] + c_size; > } > > return 0; > -fail: > - return AVERROR(ENOMEM); // free() through ff_mpv_common_end() > } > > static void free_duplicate_context(MpegEncContext *s) > @@ -715,8 +715,8 @@ static int init_context_frame(MpegEncContext *s) > if (s->mb_height & 1) > yc_size += 2*s->b8_stride + 2*s->mb_stride; > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->mb_index2xy, (s->mb_num + 1) * sizeof(int), > - fail); // error resilience code looks cleaner with this > + if (!FF_ALLOCZ_TYPED_ARRAY(s->mb_index2xy, s->mb_num + 1)) > + return AVERROR(ENOMEM); > for (y = 0; y < s->mb_height; y++) > for (x = 0; x < s->mb_width; x++) > s->mb_index2xy[x + y * s->mb_width] = x + y * s->mb_stride; > @@ -725,12 +725,13 @@ static int init_context_frame(MpegEncContext *s) > > if (s->encoding) { > /* Allocate MV tables */ > - FF_ALLOCZ_OR_GOTO(s->avctx, s->p_mv_table_base, mv_table_size * 2 * sizeof(int16_t), fail) > - FF_ALLOCZ_OR_GOTO(s->avctx, s->b_forw_mv_table_base, mv_table_size * 2 * sizeof(int16_t), fail) > - FF_ALLOCZ_OR_GOTO(s->avctx, s->b_back_mv_table_base, mv_table_size * 2 * sizeof(int16_t), fail) > - FF_ALLOCZ_OR_GOTO(s->avctx, s->b_bidir_forw_mv_table_base, mv_table_size * 2 * sizeof(int16_t), fail) > - FF_ALLOCZ_OR_GOTO(s->avctx, s->b_bidir_back_mv_table_base, mv_table_size * 2 * sizeof(int16_t), fail) > - FF_ALLOCZ_OR_GOTO(s->avctx, s->b_direct_mv_table_base, mv_table_size * 2 * sizeof(int16_t), fail) > + if (!FF_ALLOCZ_TYPED_ARRAY(s->p_mv_table_base, mv_table_size * 2) || > + !FF_ALLOCZ_TYPED_ARRAY(s->b_forw_mv_table_base, mv_table_size * 2) || > + !FF_ALLOCZ_TYPED_ARRAY(s->b_back_mv_table_base, mv_table_size * 2) || > + !FF_ALLOCZ_TYPED_ARRAY(s->b_bidir_forw_mv_table_base, mv_table_size * 2) || > + !FF_ALLOCZ_TYPED_ARRAY(s->b_bidir_back_mv_table_base, mv_table_size * 2) || > + !FF_ALLOCZ_TYPED_ARRAY(s->b_direct_mv_table_base, mv_table_size * 2)) > + return AVERROR(ENOMEM); > s->p_mv_table = s->p_mv_table_base + s->mb_stride + 1; > s->b_forw_mv_table = s->b_forw_mv_table_base + s->mb_stride + 1; > s->b_back_mv_table = s->b_back_mv_table_base + s->mb_stride + 1; > @@ -739,15 +740,11 @@ static int init_context_frame(MpegEncContext *s) > s->b_direct_mv_table = s->b_direct_mv_table_base + s->mb_stride + 1; > > /* Allocate MB type table */ > - FF_ALLOCZ_OR_GOTO(s->avctx, s->mb_type, mb_array_size * sizeof(uint16_t), fail) // needed for encoding > - > - FF_ALLOCZ_OR_GOTO(s->avctx, s->lambda_table, mb_array_size * sizeof(int), fail) > - > - FF_ALLOC_OR_GOTO(s->avctx, s->cplx_tab, > - mb_array_size * sizeof(float), fail); > - FF_ALLOC_OR_GOTO(s->avctx, s->bits_tab, > - mb_array_size * sizeof(float), fail); > - > + if (!FF_ALLOCZ_TYPED_ARRAY(s->mb_type, mb_array_size) || > + !FF_ALLOCZ_TYPED_ARRAY(s->lambda_table, mb_array_size) || > + !FF_ALLOC_TYPED_ARRAY (s->cplx_tab, mb_array_size) || > + !FF_ALLOC_TYPED_ARRAY (s->bits_tab, mb_array_size)) > + return AVERROR(ENOMEM); > } > > if (s->codec_id == AV_CODEC_ID_MPEG4 || > @@ -757,34 +754,34 @@ static int init_context_frame(MpegEncContext *s) > int j, k; > for (j = 0; j < 2; j++) { > for (k = 0; k < 2; k++) { > - FF_ALLOCZ_OR_GOTO(s->avctx, > - s->b_field_mv_table_base[i][j][k], > - mv_table_size * 2 * sizeof(int16_t), > - fail); > + if (!FF_ALLOCZ_TYPED_ARRAY(s->b_field_mv_table_base[i][j][k], mv_table_size * 2)) > + return AVERROR(ENOMEM); > s->b_field_mv_table[i][j][k] = s->b_field_mv_table_base[i][j][k] + > s->mb_stride + 1; > } > - FF_ALLOCZ_OR_GOTO(s->avctx, s->b_field_select_table [i][j], mb_array_size * 2 * sizeof(uint8_t), fail) > - FF_ALLOCZ_OR_GOTO(s->avctx, s->p_field_mv_table_base[i][j], mv_table_size * 2 * sizeof(int16_t), fail) > + if (!FF_ALLOCZ_TYPED_ARRAY(s->b_field_select_table [i][j], mv_table_size * 2) || > + !FF_ALLOCZ_TYPED_ARRAY(s->p_field_mv_table_base[i][j], mv_table_size * 2)) > + return AVERROR(ENOMEM); > s->p_field_mv_table[i][j] = s->p_field_mv_table_base[i][j] + s->mb_stride + 1; > } > - FF_ALLOCZ_OR_GOTO(s->avctx, s->p_field_select_table[i], mb_array_size * 2 * sizeof(uint8_t), fail) > + if (!FF_ALLOCZ_TYPED_ARRAY(s->p_field_select_table[i], mv_table_size * 2)) > + return AVERROR(ENOMEM); > } > } > if (s->out_format == FMT_H263) { > - /* cbp values */ > - FF_ALLOCZ_OR_GOTO(s->avctx, s->coded_block_base, y_size + (s->mb_height&1)*2*s->b8_stride, fail); > + /* cbp values, cbp, ac_pred, pred_dir */ > + if (!FF_ALLOCZ_TYPED_ARRAY(s->coded_block_base, y_size + (s->mb_height&1)*2*s->b8_stride) || > + !FF_ALLOCZ_TYPED_ARRAY(s->cbp_table, mb_array_size) || > + !FF_ALLOCZ_TYPED_ARRAY(s->pred_dir_table, mb_array_size)) > + return AVERROR(ENOMEM); > s->coded_block = s->coded_block_base + s->b8_stride + 1; > - > - /* cbp, ac_pred, pred_dir */ > - FF_ALLOCZ_OR_GOTO(s->avctx, s->cbp_table , mb_array_size * sizeof(uint8_t), fail); > - FF_ALLOCZ_OR_GOTO(s->avctx, s->pred_dir_table, mb_array_size * sizeof(uint8_t), fail); > } > > if (s->h263_pred || s->h263_plus || !s->encoding) { > /* dc values */ > // MN: we need these for error resilience of intra-frames > - FF_ALLOCZ_OR_GOTO(s->avctx, s->dc_val_base, yc_size * sizeof(int16_t), fail); > + if (!FF_ALLOCZ_TYPED_ARRAY(s->dc_val_base, yc_size)) > + return AVERROR(ENOMEM); > s->dc_val[0] = s->dc_val_base + s->b8_stride + 1; > s->dc_val[1] = s->dc_val_base + y_size + s->mb_stride + 1; > s->dc_val[2] = s->dc_val[1] + c_size; > @@ -792,17 +789,14 @@ static int init_context_frame(MpegEncContext *s) > s->dc_val_base[i] = 1024; > } > > - /* which mb is an intra block */ > - FF_ALLOCZ_OR_GOTO(s->avctx, s->mbintra_table, mb_array_size, fail); > + /* which mb is an intra block, init macroblock skip table */ > + if (!FF_ALLOCZ_TYPED_ARRAY(s->mbintra_table, mb_array_size) || > + // Note the + 1 is for a quicker MPEG-4 slice_end detection > + !FF_ALLOCZ_TYPED_ARRAY(s->mbskip_table, mb_array_size + 2)) > + return AVERROR(ENOMEM); > memset(s->mbintra_table, 1, mb_array_size); > > - /* init macroblock skip table */ > - FF_ALLOCZ_OR_GOTO(s->avctx, s->mbskip_table, mb_array_size + 2, fail); > - // Note the + 1 is for a quicker MPEG-4 slice_end detection > - > return ff_mpeg_er_init(s); > -fail: > - return AVERROR(ENOMEM); > } > > static void clear_context(MpegEncContext *s) > @@ -934,21 +928,22 @@ av_cold int ff_mpv_common_init(MpegEncContext *s) > if (ret) > return ret; > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->picture, > - MAX_PICTURE_COUNT * sizeof(Picture), fail_nomem); > + if (!FF_ALLOCZ_TYPED_ARRAY(s->picture, MAX_PICTURE_COUNT)) > + return AVERROR(ENOMEM); > for (i = 0; i < MAX_PICTURE_COUNT; i++) { > s->picture[i].f = av_frame_alloc(); > if (!s->picture[i].f) > - goto fail_nomem; > + return AVERROR(ENOMEM); > } > + > if (!(s->next_picture.f = av_frame_alloc()) || > !(s->last_picture.f = av_frame_alloc()) || > !(s->current_picture.f = av_frame_alloc()) || > !(s->new_picture.f = av_frame_alloc())) > - goto fail_nomem; > + return AVERROR(ENOMEM); > > if ((ret = init_context_frame(s))) > - goto fail_nomem; > + return AVERROR(ENOMEM); > > s->parse_context.state = -1; > > @@ -962,10 +957,10 @@ av_cold int ff_mpv_common_init(MpegEncContext *s) > if (i) { > s->thread_context[i] = av_memdup(s, sizeof(MpegEncContext)); > if (!s->thread_context[i]) > - goto fail_nomem; > + return AVERROR(ENOMEM); > } > if ((ret = init_duplicate_context(s->thread_context[i])) < 0) > - goto fail; > + return ret; > s->thread_context[i]->start_mb_y = > (s->mb_height * (i) + nb_slices / 2) / nb_slices; > s->thread_context[i]->end_mb_y = > @@ -973,7 +968,7 @@ av_cold int ff_mpv_common_init(MpegEncContext *s) > } > } else { > if ((ret = init_duplicate_context(s)) < 0) > - goto fail; > + return ret; > s->start_mb_y = 0; > s->end_mb_y = s->mb_height; > } > @@ -981,10 +976,6 @@ av_cold int ff_mpv_common_init(MpegEncContext *s) > // } > > return 0; > - fail_nomem: > - ret = AVERROR(ENOMEM); > - fail: > - return ret; > } > > /** > @@ -1077,10 +1068,10 @@ int ff_mpv_common_frame_size_change(MpegEncContext *s) > > if ((s->width || s->height) && > (err = av_image_check_size(s->width, s->height, 0, s->avctx)) < 0) > - goto fail; > + return err; > > if ((err = init_context_frame(s))) > - goto fail; > + return err; > > memset(s->thread_context, 0, sizeof(s->thread_context)); > s->thread_context[0] = s; > @@ -1092,12 +1083,11 @@ int ff_mpv_common_frame_size_change(MpegEncContext *s) > if (i) { > s->thread_context[i] = av_memdup(s, sizeof(MpegEncContext)); > if (!s->thread_context[i]) { > - err = AVERROR(ENOMEM); > - goto fail; > + return AVERROR(ENOMEM); > } > } > if ((err = init_duplicate_context(s->thread_context[i])) < 0) > - goto fail; > + return err; > s->thread_context[i]->start_mb_y = > (s->mb_height * (i) + nb_slices / 2) / nb_slices; > s->thread_context[i]->end_mb_y = > @@ -1106,7 +1096,7 @@ int ff_mpv_common_frame_size_change(MpegEncContext *s) > } else { > err = init_duplicate_context(s); > if (err < 0) > - goto fail; > + return err; > s->start_mb_y = 0; > s->end_mb_y = s->mb_height; > } > @@ -1114,8 +1104,6 @@ int ff_mpv_common_frame_size_change(MpegEncContext *s) > } > > return 0; > - fail: > - return err; > } > > /* init common structure for both encoder and decoder */ > -- > 1.8.3.1 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
On Wed, Jun 03, 2020 at 09:45:51PM +0200, Marton Balint wrote: > > On Tue, 2 Jun 2020, lance.lmwang@gmail.com wrote: > > > From: Limin Wang <lance.lmwang@gmail.com> > > > > Signed-off-by: Limin Wang <lance.lmwang@gmail.com> > > --- > > libavcodec/mpegvideo.c | 132 ++++++++++++++++++++++--------------------------- > > 1 file changed, 60 insertions(+), 72 deletions(-) > > > > diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c > > index 58fc850..76fb381 100644 > > --- a/libavcodec/mpegvideo.c > > +++ b/libavcodec/mpegvideo.c > > @@ -372,25 +372,27 @@ static int init_duplicate_context(MpegEncContext *s) > > s->sc.obmc_scratchpad = NULL; > > > > if (s->encoding) { > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->me.map, > > - ME_MAP_SIZE * sizeof(uint32_t), fail) > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->me.score_map, > > - ME_MAP_SIZE * sizeof(uint32_t), fail) > > + if (!FF_ALLOCZ_TYPED_ARRAY(s->me.map, ME_MAP_SIZE) || > > + !FF_ALLOCZ_TYPED_ARRAY(s->me.score_map, ME_MAP_SIZE)) > > + return AVERROR(ENOMEM); > > + > > if (s->noise_reduction) { > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->dct_error_sum, > > - 2 * 64 * sizeof(int), fail) > > + if (!FF_ALLOCZ_TYPED_ARRAY(s->dct_error_sum, 2 * 64)) > > + return AVERROR(ENOMEM); > > sizeof(*s->dct_error_sum) does not equal sizeof(int). > > You should check all your patches in the series for similar mistakes. good catch, will check for other place and fix it. > > Thanks, > Marton > > > } > > } > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->blocks, 64 * 12 * 2 * sizeof(int16_t), fail) > > + if (!FF_ALLOCZ_TYPED_ARRAY(s->blocks, 64 * 12 * 2)) > > + return AVERROR(ENOMEM); > > s->block = s->blocks[0]; > > > > for (i = 0; i < 12; i++) { > > s->pblocks[i] = &s->block[i]; > > } > > > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->block32, sizeof(*s->block32), fail) > > + if (!(s->block32 = av_mallocz(sizeof(*s->block32))) || > > + !(s->dpcm_macroblock = av_mallocz(sizeof(*s->dpcm_macroblock)))) > > + return AVERROR(ENOMEM); > > s->dpcm_direction = 0; > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->dpcm_macroblock, sizeof(*s->dpcm_macroblock), fail) > > > > if (s->avctx->codec_tag == AV_RL32("VCR2")) { > > // exchange uv > > @@ -399,16 +401,14 @@ static int init_duplicate_context(MpegEncContext *s) > > > > if (s->out_format == FMT_H263) { > > /* ac values */ > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->ac_val_base, > > - yc_size * sizeof(int16_t) * 16, fail); > > + if (!FF_ALLOCZ_TYPED_ARRAY(s->ac_val_base, yc_size * 16)) > > + return AVERROR(ENOMEM); > > s->ac_val[0] = s->ac_val_base + s->b8_stride + 1; > > s->ac_val[1] = s->ac_val_base + y_size + s->mb_stride + 1; > > s->ac_val[2] = s->ac_val[1] + c_size; > > } > > > > return 0; > > -fail: > > - return AVERROR(ENOMEM); // free() through ff_mpv_common_end() > > } > > > > static void free_duplicate_context(MpegEncContext *s) > > @@ -715,8 +715,8 @@ static int init_context_frame(MpegEncContext *s) > > if (s->mb_height & 1) > > yc_size += 2*s->b8_stride + 2*s->mb_stride; > > > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->mb_index2xy, (s->mb_num + 1) * sizeof(int), > > - fail); // error resilience code looks cleaner with this > > + if (!FF_ALLOCZ_TYPED_ARRAY(s->mb_index2xy, s->mb_num + 1)) > > + return AVERROR(ENOMEM); > > for (y = 0; y < s->mb_height; y++) > > for (x = 0; x < s->mb_width; x++) > > s->mb_index2xy[x + y * s->mb_width] = x + y * s->mb_stride; > > @@ -725,12 +725,13 @@ static int init_context_frame(MpegEncContext *s) > > > > if (s->encoding) { > > /* Allocate MV tables */ > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->p_mv_table_base, mv_table_size * 2 * sizeof(int16_t), fail) > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->b_forw_mv_table_base, mv_table_size * 2 * sizeof(int16_t), fail) > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->b_back_mv_table_base, mv_table_size * 2 * sizeof(int16_t), fail) > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->b_bidir_forw_mv_table_base, mv_table_size * 2 * sizeof(int16_t), fail) > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->b_bidir_back_mv_table_base, mv_table_size * 2 * sizeof(int16_t), fail) > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->b_direct_mv_table_base, mv_table_size * 2 * sizeof(int16_t), fail) > > + if (!FF_ALLOCZ_TYPED_ARRAY(s->p_mv_table_base, mv_table_size * 2) || > > + !FF_ALLOCZ_TYPED_ARRAY(s->b_forw_mv_table_base, mv_table_size * 2) || > > + !FF_ALLOCZ_TYPED_ARRAY(s->b_back_mv_table_base, mv_table_size * 2) || > > + !FF_ALLOCZ_TYPED_ARRAY(s->b_bidir_forw_mv_table_base, mv_table_size * 2) || > > + !FF_ALLOCZ_TYPED_ARRAY(s->b_bidir_back_mv_table_base, mv_table_size * 2) || > > + !FF_ALLOCZ_TYPED_ARRAY(s->b_direct_mv_table_base, mv_table_size * 2)) > > + return AVERROR(ENOMEM); > > s->p_mv_table = s->p_mv_table_base + s->mb_stride + 1; > > s->b_forw_mv_table = s->b_forw_mv_table_base + s->mb_stride + 1; > > s->b_back_mv_table = s->b_back_mv_table_base + s->mb_stride + 1; > > @@ -739,15 +740,11 @@ static int init_context_frame(MpegEncContext *s) > > s->b_direct_mv_table = s->b_direct_mv_table_base + s->mb_stride + 1; > > > > /* Allocate MB type table */ > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->mb_type, mb_array_size * sizeof(uint16_t), fail) // needed for encoding > > - > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->lambda_table, mb_array_size * sizeof(int), fail) > > - > > - FF_ALLOC_OR_GOTO(s->avctx, s->cplx_tab, > > - mb_array_size * sizeof(float), fail); > > - FF_ALLOC_OR_GOTO(s->avctx, s->bits_tab, > > - mb_array_size * sizeof(float), fail); > > - > > + if (!FF_ALLOCZ_TYPED_ARRAY(s->mb_type, mb_array_size) || > > + !FF_ALLOCZ_TYPED_ARRAY(s->lambda_table, mb_array_size) || > > + !FF_ALLOC_TYPED_ARRAY (s->cplx_tab, mb_array_size) || > > + !FF_ALLOC_TYPED_ARRAY (s->bits_tab, mb_array_size)) > > + return AVERROR(ENOMEM); > > } > > > > if (s->codec_id == AV_CODEC_ID_MPEG4 || > > @@ -757,34 +754,34 @@ static int init_context_frame(MpegEncContext *s) > > int j, k; > > for (j = 0; j < 2; j++) { > > for (k = 0; k < 2; k++) { > > - FF_ALLOCZ_OR_GOTO(s->avctx, > > - s->b_field_mv_table_base[i][j][k], > > - mv_table_size * 2 * sizeof(int16_t), > > - fail); > > + if (!FF_ALLOCZ_TYPED_ARRAY(s->b_field_mv_table_base[i][j][k], mv_table_size * 2)) > > + return AVERROR(ENOMEM); > > s->b_field_mv_table[i][j][k] = s->b_field_mv_table_base[i][j][k] + > > s->mb_stride + 1; > > } > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->b_field_select_table [i][j], mb_array_size * 2 * sizeof(uint8_t), fail) > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->p_field_mv_table_base[i][j], mv_table_size * 2 * sizeof(int16_t), fail) > > + if (!FF_ALLOCZ_TYPED_ARRAY(s->b_field_select_table [i][j], mv_table_size * 2) || > > + !FF_ALLOCZ_TYPED_ARRAY(s->p_field_mv_table_base[i][j], mv_table_size * 2)) > > + return AVERROR(ENOMEM); > > s->p_field_mv_table[i][j] = s->p_field_mv_table_base[i][j] + s->mb_stride + 1; > > } > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->p_field_select_table[i], mb_array_size * 2 * sizeof(uint8_t), fail) > > + if (!FF_ALLOCZ_TYPED_ARRAY(s->p_field_select_table[i], mv_table_size * 2)) > > + return AVERROR(ENOMEM); > > } > > } > > if (s->out_format == FMT_H263) { > > - /* cbp values */ > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->coded_block_base, y_size + (s->mb_height&1)*2*s->b8_stride, fail); > > + /* cbp values, cbp, ac_pred, pred_dir */ > > + if (!FF_ALLOCZ_TYPED_ARRAY(s->coded_block_base, y_size + (s->mb_height&1)*2*s->b8_stride) || > > + !FF_ALLOCZ_TYPED_ARRAY(s->cbp_table, mb_array_size) || > > + !FF_ALLOCZ_TYPED_ARRAY(s->pred_dir_table, mb_array_size)) > > + return AVERROR(ENOMEM); > > s->coded_block = s->coded_block_base + s->b8_stride + 1; > > - > > - /* cbp, ac_pred, pred_dir */ > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->cbp_table , mb_array_size * sizeof(uint8_t), fail); > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->pred_dir_table, mb_array_size * sizeof(uint8_t), fail); > > } > > > > if (s->h263_pred || s->h263_plus || !s->encoding) { > > /* dc values */ > > // MN: we need these for error resilience of intra-frames > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->dc_val_base, yc_size * sizeof(int16_t), fail); > > + if (!FF_ALLOCZ_TYPED_ARRAY(s->dc_val_base, yc_size)) > > + return AVERROR(ENOMEM); > > s->dc_val[0] = s->dc_val_base + s->b8_stride + 1; > > s->dc_val[1] = s->dc_val_base + y_size + s->mb_stride + 1; > > s->dc_val[2] = s->dc_val[1] + c_size; > > @@ -792,17 +789,14 @@ static int init_context_frame(MpegEncContext *s) > > s->dc_val_base[i] = 1024; > > } > > > > - /* which mb is an intra block */ > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->mbintra_table, mb_array_size, fail); > > + /* which mb is an intra block, init macroblock skip table */ > > + if (!FF_ALLOCZ_TYPED_ARRAY(s->mbintra_table, mb_array_size) || > > + // Note the + 1 is for a quicker MPEG-4 slice_end detection > > + !FF_ALLOCZ_TYPED_ARRAY(s->mbskip_table, mb_array_size + 2)) > > + return AVERROR(ENOMEM); > > memset(s->mbintra_table, 1, mb_array_size); > > > > - /* init macroblock skip table */ > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->mbskip_table, mb_array_size + 2, fail); > > - // Note the + 1 is for a quicker MPEG-4 slice_end detection > > - > > return ff_mpeg_er_init(s); > > -fail: > > - return AVERROR(ENOMEM); > > } > > > > static void clear_context(MpegEncContext *s) > > @@ -934,21 +928,22 @@ av_cold int ff_mpv_common_init(MpegEncContext *s) > > if (ret) > > return ret; > > > > - FF_ALLOCZ_OR_GOTO(s->avctx, s->picture, > > - MAX_PICTURE_COUNT * sizeof(Picture), fail_nomem); > > + if (!FF_ALLOCZ_TYPED_ARRAY(s->picture, MAX_PICTURE_COUNT)) > > + return AVERROR(ENOMEM); > > for (i = 0; i < MAX_PICTURE_COUNT; i++) { > > s->picture[i].f = av_frame_alloc(); > > if (!s->picture[i].f) > > - goto fail_nomem; > > + return AVERROR(ENOMEM); > > } > > + > > if (!(s->next_picture.f = av_frame_alloc()) || > > !(s->last_picture.f = av_frame_alloc()) || > > !(s->current_picture.f = av_frame_alloc()) || > > !(s->new_picture.f = av_frame_alloc())) > > - goto fail_nomem; > > + return AVERROR(ENOMEM); > > > > if ((ret = init_context_frame(s))) > > - goto fail_nomem; > > + return AVERROR(ENOMEM); > > > > s->parse_context.state = -1; > > > > @@ -962,10 +957,10 @@ av_cold int ff_mpv_common_init(MpegEncContext *s) > > if (i) { > > s->thread_context[i] = av_memdup(s, sizeof(MpegEncContext)); > > if (!s->thread_context[i]) > > - goto fail_nomem; > > + return AVERROR(ENOMEM); > > } > > if ((ret = init_duplicate_context(s->thread_context[i])) < 0) > > - goto fail; > > + return ret; > > s->thread_context[i]->start_mb_y = > > (s->mb_height * (i) + nb_slices / 2) / nb_slices; > > s->thread_context[i]->end_mb_y = > > @@ -973,7 +968,7 @@ av_cold int ff_mpv_common_init(MpegEncContext *s) > > } > > } else { > > if ((ret = init_duplicate_context(s)) < 0) > > - goto fail; > > + return ret; > > s->start_mb_y = 0; > > s->end_mb_y = s->mb_height; > > } > > @@ -981,10 +976,6 @@ av_cold int ff_mpv_common_init(MpegEncContext *s) > > // } > > > > return 0; > > - fail_nomem: > > - ret = AVERROR(ENOMEM); > > - fail: > > - return ret; > > } > > > > /** > > @@ -1077,10 +1068,10 @@ int ff_mpv_common_frame_size_change(MpegEncContext *s) > > > > if ((s->width || s->height) && > > (err = av_image_check_size(s->width, s->height, 0, s->avctx)) < 0) > > - goto fail; > > + return err; > > > > if ((err = init_context_frame(s))) > > - goto fail; > > + return err; > > > > memset(s->thread_context, 0, sizeof(s->thread_context)); > > s->thread_context[0] = s; > > @@ -1092,12 +1083,11 @@ int ff_mpv_common_frame_size_change(MpegEncContext *s) > > if (i) { > > s->thread_context[i] = av_memdup(s, sizeof(MpegEncContext)); > > if (!s->thread_context[i]) { > > - err = AVERROR(ENOMEM); > > - goto fail; > > + return AVERROR(ENOMEM); > > } > > } > > if ((err = init_duplicate_context(s->thread_context[i])) < 0) > > - goto fail; > > + return err; > > s->thread_context[i]->start_mb_y = > > (s->mb_height * (i) + nb_slices / 2) / nb_slices; > > s->thread_context[i]->end_mb_y = > > @@ -1106,7 +1096,7 @@ int ff_mpv_common_frame_size_change(MpegEncContext *s) > > } else { > > err = init_duplicate_context(s); > > if (err < 0) > > - goto fail; > > + return err; > > s->start_mb_y = 0; > > s->end_mb_y = s->mb_height; > > } > > @@ -1114,8 +1104,6 @@ int ff_mpv_common_frame_size_change(MpegEncContext *s) > > } > > > > return 0; > > - fail: > > - return err; > > } > > > > /* init common structure for both encoder and decoder */ > > -- > > 1.8.3.1 > > > > _______________________________________________ > > ffmpeg-devel mailing list > > ffmpeg-devel@ffmpeg.org > > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > > > To unsubscribe, visit link above, or email > > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c index 6270ea8..4d8c0b1 100644 --- a/libavcodec/h264dec.c +++ b/libavcodec/h264dec.c @@ -253,8 +253,7 @@ int ff_h264_slice_context_init(H264Context *h, H264SliceContext *sl) if (sl != h->slice_ctx) { memset(er, 0, sizeof(*er)); - } else - if (CONFIG_ERROR_RESILIENCE) { + } else if (CONFIG_ERROR_RESILIENCE) { /* init ER */ er->avctx = h->avctx;