static av_cold int decode_init(AVCodecContext *avctx) { ProresContext *ctx = avctx->priv_data; uint8_t idct_permutation[64]; avctx->bits_per_raw_sample = 10; ff_dsputil_init(&ctx->dsp, avctx); ff_proresdsp_init(&ctx->prodsp, avctx); ff_init_scantable_permutation(idct_permutation, ctx->prodsp.idct_permutation_type); permute(ctx->progressive_scan, ff_prores_progressive_scan, idct_permutation); permute(ctx->interlaced_scan, ff_prores_interlaced_scan, idct_permutation); return 0; }
static av_cold int decode_init(AVCodecContext *avctx) { ProresContext *ctx = avctx->priv_data; uint8_t idct_permutation[64]; avctx->bits_per_raw_sample = 10; ff_blockdsp_init(&ctx->bdsp, avctx); ff_proresdsp_init(&ctx->prodsp, avctx); ff_init_scantable_permutation(idct_permutation, ctx->prodsp.idct_permutation_type); permute(ctx->progressive_scan, ff_prores_progressive_scan, idct_permutation); permute(ctx->interlaced_scan, ff_prores_interlaced_scan, idct_permutation); switch (avctx->codec_tag) { case MKTAG('a','p','c','o'): avctx->profile = FF_PROFILE_PRORES_PROXY; break; case MKTAG('a','p','c','s'): avctx->profile = FF_PROFILE_PRORES_LT; break; case MKTAG('a','p','c','n'): avctx->profile = FF_PROFILE_PRORES_STANDARD; break; case MKTAG('a','p','c','h'): avctx->profile = FF_PROFILE_PRORES_HQ; break; case MKTAG('a','p','4','h'): avctx->profile = FF_PROFILE_PRORES_4444; break; case MKTAG('a','p','4','x'): avctx->profile = FF_PROFILE_PRORES_XQ; break; default: avctx->profile = FF_PROFILE_UNKNOWN; av_log(avctx, AV_LOG_WARNING, "Unknown prores profile %d\n", avctx->codec_tag); } return 0; }
static av_cold int decode_init(AVCodecContext *avctx) { ProresContext *ctx = avctx->priv_data; uint8_t idct_permutation[64]; avctx->bits_per_raw_sample = 10; ff_blockdsp_init(&ctx->bdsp, avctx); ff_proresdsp_init(&ctx->prodsp, avctx); switch (avctx->codec_tag) { case MKTAG('a', 'p', 'c', 'h'): avctx->pix_fmt = PIX_FMT_YUV422P10; break; case MKTAG('a', 'p', 'c', 'n'): avctx->pix_fmt = PIX_FMT_YUV422P10; break; case MKTAG('a', 'p', 'c', 's'): avctx->pix_fmt = PIX_FMT_YUV422P10; break; case MKTAG('a', 'p', 'c', 'o'): avctx->pix_fmt = PIX_FMT_YUV422P10; break; case MKTAG('a', 'p', '4', 'h'): avctx->pix_fmt = PIX_FMT_YUV444P10; break; default: av_log(avctx, AV_LOG_WARNING, "Unknown ProRes FOURCC provided (%08X)\n", avctx->codec_tag); } ff_init_scantable_permutation(idct_permutation, ctx->prodsp.idct_permutation_type); permute(ctx->progressive_scan, ff_prores_progressive_scan, idct_permutation); permute(ctx->interlaced_scan, ff_prores_interlaced_scan, idct_permutation); return 0; }