diff --git a/Changelog b/Changelog index 73a23ab2cc..844f5a56a6 100644 --- a/Changelog +++ b/Changelog @@ -35,6 +35,7 @@ version : - vectorscope filter - waveform filter - hstack and vstack filter +- Support DNx100 (1440x1080@8) version 2.7: diff --git a/libavcodec/dnxhddata.c b/libavcodec/dnxhddata.c index 3471de522e..85e382906c 100644 --- a/libavcodec/dnxhddata.c +++ b/libavcodec/dnxhddata.c @@ -258,6 +258,50 @@ static const uint8_t dnxhd_1258_chroma_weight[] = { 74, 74, 90, 100, 128, 125, 116, 116, }; +static const uint8_t dnxhd_1259_luma_weight[] = { + 0, 32, 36, 37, 41, 44, 54, 60, + 33, 34, 36, 39, 43, 51, 62, 78, + 34, 36, 38, 41, 49, 59, 73, 79, + 37, 38, 40, 47, 55, 66, 80, 95, + 38, 41, 46, 54, 63, 79, 93, 96, + 46, 47, 56, 64, 78, 90, 97, 98, + 49, 58, 66, 78, 89, 97, 102, 98, + 61, 65, 82, 87, 100, 104, 99, 99, +}; + +static const uint8_t dnxhd_1259_chroma_weight[] = { + 0, 32, 38, 39, 47, 51, 77, 83, + 36, 39, 41, 48, 55, 74, 85, 95, + 39, 45, 53, 58, 72, 83, 105, 89, + 51, 58, 66, 73, 82, 109, 92, 95, + 57, 75, 78, 89, 105, 95, 93, 96, + 81, 82, 99, 99, 94, 90, 97, 98, + 83, 96, 97, 93, 89, 97, 102, 98, + 90, 94, 92, 88, 100, 104, 99, 99, +}; + +static const uint8_t dnxhd_1260_luma_weight[] = { + 0, 32, 37, 37, 40, 41, 52, 53, + 33, 36, 36, 38, 40, 48, 49, 52, + 34, 34, 37, 39, 44, 47, 49, 54, + 33, 35, 38, 40, 45, 46, 54, 51, + 34, 37, 37, 42, 44, 49, 52, 48, + 34, 34, 38, 43, 44, 51, 50, 50, + 33, 36, 41, 44, 51, 52, 50, 54, + 36, 38, 44, 47, 53, 53, 54, 54, +}; + +static const uint8_t dnxhd_1260_chroma_weight[] = { + 0, 32, 40, 38, 42, 40, 45, 45, + 34, 42, 36, 43, 38, 46, 46, 49, + 38, 35, 43, 39, 44, 47, 47, 49, + 35, 42, 43, 42, 46, 47, 49, 52, + 38, 43, 43, 44, 50, 49, 56, 50, + 42, 43, 44, 50, 51, 57, 52, 53, + 41, 45, 46, 53, 53, 56, 53, 54, + 46, 46, 51, 49, 56, 53, 58, 58, +}; + /* Used in CID 1235, 1241, 1250, 1256 */ static const uint8_t dnxhd_1235_dc_codes[14] = { 10, 62, 11, 12, 13, 0, 1, 2, 3, 4, 14, 30, 126, 127, @@ -268,17 +312,17 @@ static const uint8_t dnxhd_1235_dc_bits[14] = { 4, 6, 4, 4, 4, 3, 3, 3, 3, 3, 4, 5, 7, 7, }; -/* Used in CID 1237, 1238, 1242, 1243, 1251, 1252, 1253, 1258 */ +/* Used in CID 1237, 1238, 1242, 1243, 1251, 1252, 1253, 1258, 1259, 1260 */ static const uint8_t dnxhd_1237_dc_codes[12] = { 0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63, }; -/* Used in CID 1237, 1238, 1242, 1243, 1251, 1252, 1253, 1258 */ +/* Used in CID 1237, 1238, 1242, 1243, 1251, 1252, 1253, 1258, 1259, 1260 */ static const uint8_t dnxhd_1237_dc_bits[12] = { 3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6, }; -/* Used in CID 1237, 1242, 1253 */ +/* Used in CID 1237, 1242, 1253, 1259, 1260 */ static const uint16_t dnxhd_1237_ac_codes[257] = { 0, 1, 4, 5, 12, 26, 27, 56, 57, 58, 59, 120, 121, 244, 245, 246, @@ -315,7 +359,7 @@ static const uint16_t dnxhd_1237_ac_codes[257] = { 65535, }; -/* Used in CID 1237, 1242, 1253 */ +/* Used in CID 1237, 1242, 1253, 1259, 1260 */ static const uint8_t dnxhd_1237_ac_bits[257] = { 2, 2, 3, 3, 4, 5, 5, 6, 6, 6, 6, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11, @@ -336,7 +380,7 @@ static const uint8_t dnxhd_1237_ac_bits[257] = { 16, }; -/* Used in CID 1237, 1242, 1253 */ +/* Used in CID 1237, 1242, 1253, 1259, 1260 */ static const uint8_t dnxhd_1237_ac_level[257] = { 3, 3, 5, 0, 7, 9, 5, 11, 13, 15, 7, 17, 19, 21, 23, 25, 9, 11, 27, 29, 31, 33, 13, 35, 37, 39, 41, 43, 15, 45, 47, 49, @@ -357,6 +401,7 @@ static const uint8_t dnxhd_1237_ac_level[257] = { 129, }; +/* Used in CID 1237, 1242, 1253, 1259, 1260 */ static const uint8_t dnxhd_1237_ac_flags[257] = { 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, @@ -892,7 +937,7 @@ static const uint8_t dnxhd_1235_run[62] = { 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, }; -/* Used in CID 1237, 1242, 1253 */ +/* Used in CID 1237, 1242, 1253, 1259, 1260 */ static const uint16_t dnxhd_1237_run_codes[62] = { 0, 4, 10, 11, 24, 25, 26, 54, 55, 56, 57, 58, 118, 119, 240, 482, @@ -904,7 +949,7 @@ static const uint16_t dnxhd_1237_run_codes[62] = { 1018, 1019, 1020, 1021, 1022, 1023, }; -/* Used in CID 1237, 1242, 1253 */ +/* Used in CID 1237, 1242, 1253, 1259, 1260 */ static const uint8_t dnxhd_1237_run_bits[62] = { 1, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, @@ -912,7 +957,7 @@ static const uint8_t dnxhd_1237_run_bits[62] = { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, }; -/* Used in CID 1237, 1242, 1253 */ +/* Used in CID 1237, 1242, 1253, 1259, 1260 */ static const uint8_t dnxhd_1237_run[62] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 53, 57, 58, 59, 60, 61, 62, 22, 23, 24, 25, @@ -1051,7 +1096,20 @@ const CIDEntry ff_dnxhd_cid_table[] = { dnxhd_1252_ac_flags, dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run, { 42, 60, 75, 115 } }, - + { 1259, 1440, 1080, 0, 417792, 417792, 4, 8, 3, + dnxhd_1259_luma_weight, dnxhd_1259_chroma_weight, + dnxhd_1237_dc_codes, dnxhd_1237_dc_bits, + dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level, + dnxhd_1237_ac_flags, + dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run, + { 63, 84, 100, 110 } }, + { 1260, 1440, 1080, 1, 417792, 417792, 4, 8, 3, + dnxhd_1260_luma_weight, dnxhd_1260_chroma_weight, + dnxhd_1237_dc_codes, dnxhd_1237_dc_bits, + dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level, + dnxhd_1237_ac_flags, + dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run, + { 80, 90, 100, 110 } }, }; int ff_dnxhd_get_cid_table(int cid)