From c89cb5894e63d6d2698a8e1d12f8533823ed2c2f Mon Sep 17 00:00:00 2001 From: Roman Shaposhnik Date: Tue, 19 Aug 2008 16:02:43 +0000 Subject: Making block size in bits variable and dependent on the DV spec Originally committed as revision 14842 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/dvdata.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'libavcodec/dvdata.h') diff --git a/libavcodec/dvdata.h b/libavcodec/dvdata.h index 06b15662e7..3949bb7f88 100644 --- a/libavcodec/dvdata.h +++ b/libavcodec/dvdata.h @@ -50,6 +50,7 @@ typedef struct DVprofile { const uint16_t *video_place; /* positions of all DV macro blocks */ enum PixelFormat pix_fmt; /* picture pixel format */ int bpm; /* blocks per macroblock */ + const uint8_t *block_sizes; /* AC block sizes, in bits */ int audio_stride; /* size of audio_shuffle table */ int audio_min_samples[3];/* min ammount of audio samples */ /* for 48Khz, 44.1Khz and 32Khz */ @@ -2521,6 +2522,15 @@ static const av_unused int dv_audio_frequency[3] = { 48000, 44100, 32000, }; +/* macroblock bit budgets */ +static const uint8_t block_sizes_dv2550[8] = { + 112, 112, 112, 112, 80, 80, 0, 0, +}; + +static const uint8_t block_sizes_dv100[8] = { + 80, 80, 80, 80, 80, 80, 64, 64, +}; + static const DVprofile dv_profiles[] = { { .dsf = 0, .frame_size = 120000, /* IEC 61834, SMPTE-314M - 525/60 (NTSC) */ @@ -2535,6 +2545,7 @@ static const DVprofile dv_profiles[] = { .video_place = dv_place_411, .pix_fmt = PIX_FMT_YUV411P, .bpm = 6, + .block_sizes = block_sizes_dv2550, .audio_stride = 90, .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32Khz */ .audio_samples_dist = { 1600, 1602, 1602, 1602, 1602 }, /* per SMPTE-314M */ @@ -2553,6 +2564,7 @@ static const DVprofile dv_profiles[] = { .video_place = dv_place_420, .pix_fmt = PIX_FMT_YUV420P, .bpm = 6, + .block_sizes = block_sizes_dv2550, .audio_stride = 108, .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32Khz */ .audio_samples_dist = { 1920, 1920, 1920, 1920, 1920 }, @@ -2571,6 +2583,7 @@ static const DVprofile dv_profiles[] = { .video_place = dv_place_411P, .pix_fmt = PIX_FMT_YUV411P, .bpm = 6, + .block_sizes = block_sizes_dv2550, .audio_stride = 108, .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32Khz */ .audio_samples_dist = { 1920, 1920, 1920, 1920, 1920 }, @@ -2589,6 +2602,7 @@ static const DVprofile dv_profiles[] = { .video_place = dv_place_422_525, .pix_fmt = PIX_FMT_YUV422P, .bpm = 6, + .block_sizes = block_sizes_dv2550, .audio_stride = 90, .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32Khz */ .audio_samples_dist = { 1600, 1602, 1602, 1602, 1602 }, /* per SMPTE-314M */ @@ -2607,6 +2621,7 @@ static const DVprofile dv_profiles[] = { .video_place = dv_place_422_625, .pix_fmt = PIX_FMT_YUV422P, .bpm = 6, + .block_sizes = block_sizes_dv2550, .audio_stride = 108, .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32Khz */ .audio_samples_dist = { 1920, 1920, 1920, 1920, 1920 }, -- cgit v1.2.3