tor 2022-10-06 klockan 21:45 +1100 skrev Peter Ross: > > +static av_cold int vqc_decode_init(AVCodecContext * avctx) > +{ > + static AVOnce init_static_once = AV_ONCE_INIT; > + VqcContext *s = avctx->priv_data; > + > + s->vectors = av_malloc((avctx->width * avctx->height * 3) / 2); > + if (!s->vectors) > + return AVERROR(ENOMEM); > + > + s->coeff = av_malloc(2 * avctx->width * sizeof(int16_t)); > + if (!s->coeff) > + return AVERROR(ENOMEM); > + > + s->tmp1 = av_malloc(avctx->width * sizeof(int16_t) / 2); > + if (!s->tmp1) > + return AVERROR(ENOMEM); > + > + s->tmp2 = av_malloc(avctx->width * sizeof(int16_t) / 2);
av_malloc_array() perhaps? Not that these are likely to overflow since max pixels is usually far away from INT_MAX > +static uint8_t sat1(int x) > +{ > + return x >= -128 ? x <= 127 ? x + 0x80 : 0xFF : 0x00; > +} Use av_clip*() > +static uint8_t sat2(int x) > +{ > + return x >= -128 ? x <= 127 ? x + 0x80 : 0x00 : 0xFF; > +} Doesn't look like av_clip() will work here. Or? > +static int vqc_decode_frame(AVCodecContext *avctx, AVFrame * rframe, > + int * got_frame, AVPacket * avpkt) > +{ > + VqcContext *s = avctx->priv_data; > + int ret; > + uint8_t * buf = avpkt->data; > + int cache, seed[7], gamma, contrast; > + > + if (avpkt->size < 7) > + return AVERROR_INVALIDDATA; > + > + if ((ret = ff_reget_buffer(avctx, s->frame, 0)) < 0) > + return ret; > + > + av_log(avctx, AV_LOG_DEBUG, "VQC%d format\n", (buf[2] & 1) + 1); > + > + if (((buf[0] >> 1) & 7) != 5) { > + avpriv_request_sample(avctx, "subversion != 5\n"); > + return AVERROR_PATCHWELCOME; > + } > + > + cache = buf[4] | (AV_RL16(buf + 5) << 8); AV_RL24() No tests? Looks like samp.avi would make a fine addition to FATE /Tomas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".