Merge commit '1a07df31128da3a0020b66502399989b91770d44'
* commit '1a07df31128da3a0020b66502399989b91770d44': DNxHD: Add support for id 1258 (DNx100 960x720@8) Conflicts: Changelog libavcodec/dnxhddata.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		
						commit
						56252a5e09
					
				@ -17,6 +17,7 @@ version <next>:
 | 
				
			|||||||
- fspp, uspp, pp7 MPlayer postprocessing filters ported to native filters
 | 
					- fspp, uspp, pp7 MPlayer postprocessing filters ported to native filters
 | 
				
			||||||
- showpalette filter
 | 
					- showpalette filter
 | 
				
			||||||
- Twofish symmetric block cipher
 | 
					- Twofish symmetric block cipher
 | 
				
			||||||
 | 
					- Support DNx100 (960x720@8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
version 2.5:
 | 
					version 2.5:
 | 
				
			||||||
 | 
				
			|||||||
@ -233,6 +233,28 @@ static const uint8_t dnxhd_1256_chroma_weight[] = {
 | 
				
			|||||||
    34, 37, 39, 44, 51, 56, 61, 70,
 | 
					    34, 37, 39, 44, 51, 56, 61, 70,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const uint8_t dnxhd_1258_luma_weight[] = {
 | 
				
			||||||
 | 
					     0, 32, 36, 36,  40,  40, 55, 60,
 | 
				
			||||||
 | 
					    34, 36, 37, 40,  41,  48, 57, 82,
 | 
				
			||||||
 | 
					    35, 36, 41, 41,  46,  52, 73, 82,
 | 
				
			||||||
 | 
					    37, 40, 42, 45,  50,  65, 80, 87,
 | 
				
			||||||
 | 
					    39, 41, 44, 49,  62,  78, 88, 90,
 | 
				
			||||||
 | 
					    41, 44, 49, 58,  73,  90, 95, 95,
 | 
				
			||||||
 | 
					    43, 52, 55, 68,  90, 100, 97, 93,
 | 
				
			||||||
 | 
					    52, 53, 71, 82, 107, 103, 99, 99,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const uint8_t dnxhd_1258_chroma_weight[] = {
 | 
				
			||||||
 | 
					     0, 32, 37,  38,  49,  53,  65,  66,
 | 
				
			||||||
 | 
					    35, 37, 40,  49,  56,  64,  65,  82,
 | 
				
			||||||
 | 
					    36, 42, 50,  56,  64,  67,  73,  85,
 | 
				
			||||||
 | 
					    46, 50, 57,  63,  71,  72,  89,  87,
 | 
				
			||||||
 | 
					    49, 58, 65,  72,  78,  88,  88,  90,
 | 
				
			||||||
 | 
					    60, 64, 74,  81,  84,  90,  95, 134,
 | 
				
			||||||
 | 
					    62, 74, 77,  80,  90, 114, 129, 125,
 | 
				
			||||||
 | 
					    74, 74, 90, 100, 128, 125, 116, 116,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const uint8_t dnxhd_1237_dc_codes[12] = {
 | 
					static const uint8_t dnxhd_1237_dc_codes[12] = {
 | 
				
			||||||
    0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
 | 
					    0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@ -956,6 +978,14 @@ static const uint8_t dnxhd_1252_ac_flags[257] = {
 | 
				
			|||||||
    3,
 | 
					    3,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const uint8_t dnxhd_1258_dc_codes[14] = {
 | 
				
			||||||
 | 
					    0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63, 0, 0,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const uint8_t dnxhd_1258_dc_bits[14] = {
 | 
				
			||||||
 | 
					    3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6, 0, 0,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const CIDEntry ff_dnxhd_cid_table[] = {
 | 
					const CIDEntry ff_dnxhd_cid_table[] = {
 | 
				
			||||||
    { 1235, 1920, 1080, 0, 917504, 917504, 6, 10, 4,
 | 
					    { 1235, 1920, 1080, 0, 917504, 917504, 6, 10, 4,
 | 
				
			||||||
      dnxhd_1235_luma_weight, dnxhd_1235_chroma_weight,
 | 
					      dnxhd_1235_luma_weight, dnxhd_1235_chroma_weight,
 | 
				
			||||||
@ -1045,6 +1075,14 @@ const CIDEntry ff_dnxhd_cid_table[] = {
 | 
				
			|||||||
      dnxhd_1235_1238_1241_run_codes, dnxhd_1235_1238_1241_run_bits, dnxhd_1235_1241_run,
 | 
					      dnxhd_1235_1238_1241_run_codes, dnxhd_1235_1238_1241_run_bits, dnxhd_1235_1241_run,
 | 
				
			||||||
      { 350, 390, 440, 730, 880 },
 | 
					      { 350, 390, 440, 730, 880 },
 | 
				
			||||||
      { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
 | 
					      { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
 | 
				
			||||||
 | 
					    { 1258, 960, 720, 0, 212992, 212992, 4, 8, 5,
 | 
				
			||||||
 | 
					      dnxhd_1258_luma_weight, dnxhd_1258_chroma_weight,
 | 
				
			||||||
 | 
					      dnxhd_1258_dc_codes, dnxhd_1258_dc_bits,
 | 
				
			||||||
 | 
					      dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_level,
 | 
				
			||||||
 | 
					      dnxhd_1252_ac_flags,
 | 
				
			||||||
 | 
					      dnxhd_1251_run_codes, dnxhd_1251_run_bits, dnxhd_1251_run,
 | 
				
			||||||
 | 
					      { 42, 60, 75, 115 } },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int ff_dnxhd_get_cid_table(int cid)
 | 
					int ff_dnxhd_get_cid_table(int cid)
 | 
				
			||||||
 | 
				
			|||||||
@ -175,6 +175,15 @@ static int dnxhd_decode_header(DNXHDContext *ctx, AVFrame *frame,
 | 
				
			|||||||
    if ((ret = dnxhd_init_vlc(ctx, cid)) < 0)
 | 
					    if ((ret = dnxhd_init_vlc(ctx, cid)) < 0)
 | 
				
			||||||
        return ret;
 | 
					        return ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // make sure profile size constraints are respected
 | 
				
			||||||
 | 
					    // DNx100 allows 1920->1440 and 1280->960 subsampling
 | 
				
			||||||
 | 
					    if (ctx->width != ctx->cid_table->width) {
 | 
				
			||||||
 | 
					        av_reduce(&ctx->avctx->sample_aspect_ratio.num,
 | 
				
			||||||
 | 
					                  &ctx->avctx->sample_aspect_ratio.den,
 | 
				
			||||||
 | 
					                  ctx->width, ctx->cid_table->width, 255);
 | 
				
			||||||
 | 
					        ctx->width = ctx->cid_table->width;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (buf_size < ctx->cid_table->coding_unit_size) {
 | 
					    if (buf_size < ctx->cid_table->coding_unit_size) {
 | 
				
			||||||
        av_log(ctx->avctx, AV_LOG_ERROR, "incorrect frame size (%d < %d).\n",
 | 
					        av_log(ctx->avctx, AV_LOG_ERROR, "incorrect frame size (%d < %d).\n",
 | 
				
			||||||
               buf_size, ctx->cid_table->coding_unit_size);
 | 
					               buf_size, ctx->cid_table->coding_unit_size);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user