[FFmpeg-devel] [PATCH] avcodec: ViewQuest VQC decoder

Tomas Härdin git at haerdin.se
Fri Oct 7 15:48:21 EEST 2022


fre 2022-10-07 klockan 14:33 +0200 skrev Andreas Rheinhardt:
> Tomas Härdin:
> > fre 2022-10-07 klockan 12:38 +0200 skrev Andreas Rheinhardt:
> > > Tomas Härdin:
> > > > 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
> > > > 
> > > 
> > > Actually, sizeof(int16_t) is guaranteed to be two, so that
> > > sizeof(int16_t) / 2 is always one.
> > 
> > Not on machines where CHAR_BIT >= 16. But we could enforce that
> > during
> > configuration
> > 
> 
> The fixed-wide integers are required by the spec to have no padding.
> We
> rely on uint8_t/int8_t to be present and so CHAR_BIT divides 8, but
> it
> has to be >= 8, too, so it is eight. (Apart from that, we probably
> rely
> on CHAR_BIT to be eight in thousands of other places, too.)

Right, the presence of (u)int8_t together with ISO/IEC 9899:1999 saying
CHAR_BIT >= 8 does imply CHAR_BIT == 8.

/Tomas



More information about the ffmpeg-devel mailing list