[FFmpeg-devel] [PATCH] Native VP9 decoder.

Ronald S. Bultje rsbultje at gmail.com
Sun Sep 29 21:21:22 CEST 2013


Hi,

On Sun, Sep 29, 2013 at 12:41 PM, Kieran Kunhya <kierank at obe.tv> wrote:

> +    DECLARE_ALIGNED(16, uint8_t, edge_emu_buffer)[71*80];
>> +
>> +    DECLARE_ALIGNED(16, int16_t, block)[4096];
>> +    uint8_t eob[256];
>> +    DECLARE_ALIGNED(16, int16_t, uvblock)[2][1024];
>> +    uint8_t uveob[2][64];
>> +    VP56mv min_mv, max_mv;
>> +    DECLARE_ALIGNED(16, uint8_t, tmp_y)[64*64];
>> +    DECLARE_ALIGNED(16, uint8_t, tmp_uv)[2][32*32];
>> +} VP9Context;
>>
>
> Presumably you'll be writing AVX2 from the beginning so perhaps make these
> 32-byte aligned?
>

Done.


>
>
>> +static int update_size(AVCodecContext *ctx, int w, int h)
>> +{
>> +    VP9Context *s = ctx->priv_data;
>> +
>> +    if (s->above_partition_ctx && w == ctx->width && h == ctx->height)
>> +        return 0;
>> +
>> +    ctx->width  = w;
>> +    ctx->height = h;
>> +    s->sb_cols  = (w + 63) >> 6;
>> +    s->sb_rows  = (h + 63) >> 6;
>> +    s->cols     = (w + 7) >> 3;
>> +    s->rows     = (h + 7) >> 3;
>> +    av_free(s->above_partition_ctx);
>> +    s->above_partition_ctx = av_malloc(s->sb_cols * 368);
>>
>> Maybe want to #define some of these random numbers
>

Hm yeah that's ugly, rewrote that part to be more obvious.


> +    s->above_mv_ctx = (void *) (s->above_filter_ctx + s->sb_cols * 8);
>> +    s->segmentation_map = av_malloc(s->sb_cols * s->sb_rows * 64);
>> +    s->mv[0] = av_malloc(sizeof(*s->mv[0]) * s->sb_cols * s->sb_rows *
>> 64);
>> +    s->mv[1] = av_malloc(sizeof(*s->mv[1]) * s->sb_cols * s->sb_rows *
>> 64);
>> +    s->lflvl = av_malloc(sizeof(*s->lflvl) * s->sb_cols);
>> +
>> +    return 0;
>> +}
>>
>
> unchecked mallocs
>

Fixed.

Ronald


More information about the ffmpeg-devel mailing list