summaryrefslogtreecommitdiff
path: root/libavcodec/dnxhddec.c
diff options
context:
space:
mode:
authorSteven Robertson <steven@strobe.cc>2016-08-01 23:26:12 -0700
committerMichael Niedermayer <michael@niedermayer.cc>2016-08-03 03:17:32 +0200
commite1be80aa11cca765881d04f21119487db53c4ffa (patch)
tree10f8ec8002daac89fcec0bc9365b47263c870271 /libavcodec/dnxhddec.c
parent708d9e9fbad49cc0723f44954a3c0a93a3f54b37 (diff)
downloadffmpeg-e1be80aa11cca765881d04f21119487db53c4ffa.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>
Diffstat (limited to 'libavcodec/dnxhddec.c')
-rw-r--r--libavcodec/dnxhddec.c7
1 files changed, 1 insertions, 6 deletions
diff --git a/libavcodec/dnxhddec.c b/libavcodec/dnxhddec.c
index 4d3a4a6d22..4d1b006bb5 100644
--- a/libavcodec/dnxhddec.c
+++ b/libavcodec/dnxhddec.c
@@ -119,11 +119,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);
@@ -134,7 +129,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,