diff options
author | Steven Robertson <steven@strobe.cc> | 2016-08-01 23:26:12 -0700 |
---|---|---|
committer | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2016-08-05 23:00:58 +0200 |
commit | 5222f660d7fb52ef447e8b8ee5f92615e9fcf5ec (patch) | |
tree | 084252a1f8257a8eacdd6341a0bf4e85449c99a4 /libavcodec | |
parent | c70b1ae93023831664588726e32f8fcd7db4250b (diff) | |
download | ffmpeg-5222f660d7fb52ef447e8b8ee5f92615e9fcf5ec.tar.gz |
libavcodec/dnxhd: Enable 12-bit DNxHR support.
10- and 12-bit DNxHR use the same DC coefficient decoding process and
VLC table, just with a different shift value. From SMPTE 2019-1:2016,
8.2.4 DC Coefficient Decoding:
"For 8-bit video sampling, the maximum value of η=11 and for
10-/12-bit video sampling, the maximum value of η=13."
A sample file will be uploaded to show that with this patch, things
decode correctly:
dnxhr_hqx_12bit_1080p_smpte_colorbars_davinci_resolve.mov
Signed-off-by: Steven Robertson <steven@strobe.cc>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit e1be80aa11cca765881d04f21119487db53c4ffa)
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/dnxhddec.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/libavcodec/dnxhddec.c b/libavcodec/dnxhddec.c index 18080803fa..cb1fc798b2 100644 --- a/libavcodec/dnxhddec.c +++ b/libavcodec/dnxhddec.c @@ -118,11 +118,6 @@ static int dnxhd_init_vlc(DNXHDContext *ctx, uint32_t cid, int bitdepth) av_log(ctx->avctx, AV_LOG_ERROR, "bit depth mismatches %d %d\n", ff_dnxhd_cid_table[index].bit_depth, bitdepth); return AVERROR_INVALIDDATA; } - if (bitdepth > 10) { - avpriv_request_sample(ctx->avctx, "DNXHR 12-bit"); - if (ctx->avctx->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL) - return AVERROR_PATCHWELCOME; - } ctx->cid_table = &ff_dnxhd_cid_table[index]; av_log(ctx->avctx, AV_LOG_VERBOSE, "Profile cid %d.\n", cid); @@ -133,7 +128,7 @@ static int dnxhd_init_vlc(DNXHDContext *ctx, uint32_t cid, int bitdepth) init_vlc(&ctx->ac_vlc, DNXHD_VLC_BITS, 257, ctx->cid_table->ac_bits, 1, 1, ctx->cid_table->ac_codes, 2, 2, 0); - init_vlc(&ctx->dc_vlc, DNXHD_DC_VLC_BITS, bitdepth + 4, + init_vlc(&ctx->dc_vlc, DNXHD_DC_VLC_BITS, bitdepth > 8 ? 14 : 12, ctx->cid_table->dc_bits, 1, 1, ctx->cid_table->dc_codes, 1, 1, 0); init_vlc(&ctx->run_vlc, DNXHD_VLC_BITS, 62, |