static av_cold int hevc_decode_init(AVCodecContext *avctx)

{

    HEVCContext *s = avctx->priv_data;

    int ret;



    avctx->internal->allocate_progress = 1;



    ret = hevc_init_context(avctx);

    if (ret < 0)

        return ret;



    s->enable_parallel_tiles = 0;

    s->sei.picture_timing.picture_struct = 0;

    s->eos = 1;



    atomic_init(&s->wpp_err, 0);



    if(avctx->active_thread_type & FF_THREAD_SLICE)

        s->threads_number = avctx->thread_count;

    else

        s->threads_number = 1;



    if (avctx->extradata_size > 0 && avctx->extradata) {

        ret = hevc_decode_extradata(s, avctx->extradata, avctx->extradata_size);

        if (ret < 0) {

            hevc_decode_free(avctx);

            return ret;

        }

    }



    if((avctx->active_thread_type & FF_THREAD_FRAME) && avctx->thread_count > 1)

            s->threads_type = FF_THREAD_FRAME;

        else

            s->threads_type = FF_THREAD_SLICE;



    return 0;

}
