On 8/16/18, James Almer <jamr...@gmail.com> wrote: > On 8/16/2018 8:00 AM, Paul B Mahol wrote: >> Hi, >> >> another patch attached, please review. > >> +static int decode_frame(AVCodecContext *avctx, void *data, >> + int *got_frame, AVPacket *avpkt) >> +{ >> + IMM4Context *s = avctx->priv_data; >> + GetBitContext *gb = &s->gb; >> + AVFrame *frame = data; >> + unsigned type; >> + int ret, scaled; >> + >> + if (avpkt->size <= 32) >> + return AVERROR_INVALIDDATA; >> + >> + av_fast_padded_malloc(&s->bitstream, &s->bitstream_size, >> + FFALIGN(avpkt->size, 4)); >> + if (!s->bitstream) >> + return AVERROR(ENOMEM); >> + >> + s->bdsp.bswap_buf((uint32_t *)s->bitstream, >> + (uint32_t *)avpkt->data, >> + (avpkt->size + 3) >> 2); >> + >> + if ((ret = init_get_bits8(gb, s->bitstream, FFALIGN(avpkt->size, 4))) >> < 0) > > Split this in two, just to be safe.
Why?, not mandatory. > >> + return ret; >> + >> + avctx->pix_fmt = AV_PIX_FMT_YUV420P; >> + avctx->color_range = AVCOL_RANGE_JPEG; >> + >> + scaled = avpkt->data[8]; >> + if (scaled < 2) { >> + int width, height; >> + int mode = avpkt->data[10]; >> + >> + switch (mode) { >> + case 1: >> + width = 352; >> + height = 240; >> + break; >> + case 2: >> + width = 704; >> + height = 240; >> + break; >> + case 4: >> + width = 480; >> + height = 704; >> + break; >> + case 17: >> + width = 352; >> + height = 288; >> + break; >> + case 18: >> + width = 704; >> + height = 288; >> + break; >> + default: >> + width = 704; >> + height = 576; >> + break; >> + } >> + >> + if (s->changed_size == 1 && >> + (avctx->width != width || avctx->height != height)) { >> + av_log(avctx, AV_LOG_ERROR, "Frame size change is >> unsupported.\n"); >> + return AVERROR_INVALIDDATA; >> + } >> + avctx->width = width; >> + avctx->height = height; > > ff_set_dimensions()? These are hardcoded values, always sane. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel