Mercurial > libavcodec.hg
comparison dvdata.h @ 8118:890df98a7848 libavcodec
implementing more efficient (and direct) allocation of work for DV codec workers
author | romansh |
---|---|
date | Sat, 08 Nov 2008 00:18:00 +0000 |
parents | fed91eaa6444 |
children | c30bdda1adb1 |
comparison
equal
deleted
inserted
replaced
8117:a0f9045e0a82 | 8118:890df98a7848 |
---|---|
45 AVRational time_base; /* 1/framerate */ | 45 AVRational time_base; /* 1/framerate */ |
46 int ltc_divisor; /* FPS from the LTS standpoint */ | 46 int ltc_divisor; /* FPS from the LTS standpoint */ |
47 int height; /* picture height in pixels */ | 47 int height; /* picture height in pixels */ |
48 int width; /* picture width in pixels */ | 48 int width; /* picture width in pixels */ |
49 AVRational sar[2]; /* sample aspect ratios for 4:3 and 16:9 */ | 49 AVRational sar[2]; /* sample aspect ratios for 4:3 and 16:9 */ |
50 void **work_chunks; /* each thread gets its own chunk of frame to work on */ | |
50 const uint16_t *video_place; /* positions of all DV macroblocks */ | 51 const uint16_t *video_place; /* positions of all DV macroblocks */ |
51 enum PixelFormat pix_fmt; /* picture pixel format */ | 52 enum PixelFormat pix_fmt; /* picture pixel format */ |
52 int bpm; /* blocks per macroblock */ | 53 int bpm; /* blocks per macroblock */ |
53 const uint8_t *block_sizes; /* AC block sizes, in bits */ | 54 const uint8_t *block_sizes; /* AC block sizes, in bits */ |
54 int audio_stride; /* size of audio_shuffle table */ | 55 int audio_stride; /* size of audio_shuffle table */ |
6157 | 6158 |
6158 static const uint8_t block_sizes_dv100[8] = { | 6159 static const uint8_t block_sizes_dv100[8] = { |
6159 80, 80, 80, 80, 80, 80, 64, 64, | 6160 80, 80, 80, 80, 80, 80, 64, 64, |
6160 }; | 6161 }; |
6161 | 6162 |
6163 static void *work_chunks_dv25pal [1*12*27]; | |
6164 static void *work_chunks_dv25pal411[1*12*27]; | |
6165 static void *work_chunks_dv25ntsc [1*10*27]; | |
6166 static void *work_chunks_dv50pal [2*12*27]; | |
6167 static void *work_chunks_dv50ntsc [2*10*27]; | |
6168 static void *work_chunks_dv100palp [2*12*27]; | |
6169 static void *work_chunks_dv100ntscp[2*10*27]; | |
6170 static void *work_chunks_dv100pali [4*12*27]; | |
6171 static void *work_chunks_dv100ntsci[4*10*27]; | |
6172 | |
6162 static const DVprofile dv_profiles[] = { | 6173 static const DVprofile dv_profiles[] = { |
6163 { .dsf = 0, | 6174 { .dsf = 0, |
6164 .video_stype = 0x0, | 6175 .video_stype = 0x0, |
6165 .frame_size = 120000, /* IEC 61834, SMPTE-314M - 525/60 (NTSC) */ | 6176 .frame_size = 120000, /* IEC 61834, SMPTE-314M - 525/60 (NTSC) */ |
6166 .difseg_size = 10, | 6177 .difseg_size = 10, |
6169 .ltc_divisor = 30, | 6180 .ltc_divisor = 30, |
6170 .height = 480, | 6181 .height = 480, |
6171 .width = 720, | 6182 .width = 720, |
6172 .sar = {{10, 11}, {40, 33}}, | 6183 .sar = {{10, 11}, {40, 33}}, |
6173 .video_place = dv_place_411, | 6184 .video_place = dv_place_411, |
6185 .work_chunks = &work_chunks_dv25ntsc[0], | |
6174 .pix_fmt = PIX_FMT_YUV411P, | 6186 .pix_fmt = PIX_FMT_YUV411P, |
6175 .bpm = 6, | 6187 .bpm = 6, |
6176 .block_sizes = block_sizes_dv2550, | 6188 .block_sizes = block_sizes_dv2550, |
6177 .audio_stride = 90, | 6189 .audio_stride = 90, |
6178 .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */ | 6190 .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */ |
6188 .ltc_divisor = 25, | 6200 .ltc_divisor = 25, |
6189 .height = 576, | 6201 .height = 576, |
6190 .width = 720, | 6202 .width = 720, |
6191 .sar = {{59, 54}, {118, 81}}, | 6203 .sar = {{59, 54}, {118, 81}}, |
6192 .video_place = dv_place_420, | 6204 .video_place = dv_place_420, |
6205 .work_chunks = &work_chunks_dv25pal[0], | |
6193 .pix_fmt = PIX_FMT_YUV420P, | 6206 .pix_fmt = PIX_FMT_YUV420P, |
6194 .bpm = 6, | 6207 .bpm = 6, |
6195 .block_sizes = block_sizes_dv2550, | 6208 .block_sizes = block_sizes_dv2550, |
6196 .audio_stride = 108, | 6209 .audio_stride = 108, |
6197 .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32kHz */ | 6210 .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32kHz */ |
6207 .ltc_divisor = 25, | 6220 .ltc_divisor = 25, |
6208 .height = 576, | 6221 .height = 576, |
6209 .width = 720, | 6222 .width = 720, |
6210 .sar = {{59, 54}, {118, 81}}, | 6223 .sar = {{59, 54}, {118, 81}}, |
6211 .video_place = dv_place_411P, | 6224 .video_place = dv_place_411P, |
6225 .work_chunks = &work_chunks_dv25pal411[0], | |
6212 .pix_fmt = PIX_FMT_YUV411P, | 6226 .pix_fmt = PIX_FMT_YUV411P, |
6213 .bpm = 6, | 6227 .bpm = 6, |
6214 .block_sizes = block_sizes_dv2550, | 6228 .block_sizes = block_sizes_dv2550, |
6215 .audio_stride = 108, | 6229 .audio_stride = 108, |
6216 .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32kHz */ | 6230 .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32kHz */ |
6226 .ltc_divisor = 30, | 6240 .ltc_divisor = 30, |
6227 .height = 480, | 6241 .height = 480, |
6228 .width = 720, | 6242 .width = 720, |
6229 .sar = {{10, 11}, {40, 33}}, | 6243 .sar = {{10, 11}, {40, 33}}, |
6230 .video_place = dv_place_422_525, | 6244 .video_place = dv_place_422_525, |
6245 .work_chunks = &work_chunks_dv50ntsc[0], | |
6231 .pix_fmt = PIX_FMT_YUV422P, | 6246 .pix_fmt = PIX_FMT_YUV422P, |
6232 .bpm = 6, | 6247 .bpm = 6, |
6233 .block_sizes = block_sizes_dv2550, | 6248 .block_sizes = block_sizes_dv2550, |
6234 .audio_stride = 90, | 6249 .audio_stride = 90, |
6235 .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */ | 6250 .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */ |
6245 .ltc_divisor = 25, | 6260 .ltc_divisor = 25, |
6246 .height = 576, | 6261 .height = 576, |
6247 .width = 720, | 6262 .width = 720, |
6248 .sar = {{59, 54}, {118, 81}}, | 6263 .sar = {{59, 54}, {118, 81}}, |
6249 .video_place = dv_place_422_625, | 6264 .video_place = dv_place_422_625, |
6265 .work_chunks = &work_chunks_dv50pal[0], | |
6250 .pix_fmt = PIX_FMT_YUV422P, | 6266 .pix_fmt = PIX_FMT_YUV422P, |
6251 .bpm = 6, | 6267 .bpm = 6, |
6252 .block_sizes = block_sizes_dv2550, | 6268 .block_sizes = block_sizes_dv2550, |
6253 .audio_stride = 108, | 6269 .audio_stride = 108, |
6254 .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32kHz */ | 6270 .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32kHz */ |
6264 .ltc_divisor = 30, | 6280 .ltc_divisor = 30, |
6265 .height = 1080, | 6281 .height = 1080, |
6266 .width = 1280, | 6282 .width = 1280, |
6267 .sar = {{1, 1}, {1, 1}}, | 6283 .sar = {{1, 1}, {1, 1}}, |
6268 .video_place = dv_place_1080i60, | 6284 .video_place = dv_place_1080i60, |
6285 .work_chunks = &work_chunks_dv100ntsci[0], | |
6269 .pix_fmt = PIX_FMT_YUV422P, | 6286 .pix_fmt = PIX_FMT_YUV422P, |
6270 .bpm = 8, | 6287 .bpm = 8, |
6271 .block_sizes = block_sizes_dv100, | 6288 .block_sizes = block_sizes_dv100, |
6272 .audio_stride = 90, | 6289 .audio_stride = 90, |
6273 .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */ | 6290 .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */ |
6283 .ltc_divisor = 25, | 6300 .ltc_divisor = 25, |
6284 .height = 1080, | 6301 .height = 1080, |
6285 .width = 1440, | 6302 .width = 1440, |
6286 .sar = {{1, 1}, {1, 1}}, | 6303 .sar = {{1, 1}, {1, 1}}, |
6287 .video_place = dv_place_1080i50, | 6304 .video_place = dv_place_1080i50, |
6305 .work_chunks = &work_chunks_dv100pali[0], | |
6288 .pix_fmt = PIX_FMT_YUV422P, | 6306 .pix_fmt = PIX_FMT_YUV422P, |
6289 .bpm = 8, | 6307 .bpm = 8, |
6290 .block_sizes = block_sizes_dv100, | 6308 .block_sizes = block_sizes_dv100, |
6291 .audio_stride = 108, | 6309 .audio_stride = 108, |
6292 .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32kHz */ | 6310 .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32kHz */ |
6302 .ltc_divisor = 60, | 6320 .ltc_divisor = 60, |
6303 .height = 720, | 6321 .height = 720, |
6304 .width = 960, | 6322 .width = 960, |
6305 .sar = {{1, 1}, {1, 1}}, | 6323 .sar = {{1, 1}, {1, 1}}, |
6306 .video_place = dv_place_720p60, | 6324 .video_place = dv_place_720p60, |
6325 .work_chunks = &work_chunks_dv100ntscp[0], | |
6307 .pix_fmt = PIX_FMT_YUV422P, | 6326 .pix_fmt = PIX_FMT_YUV422P, |
6308 .bpm = 8, | 6327 .bpm = 8, |
6309 .block_sizes = block_sizes_dv100, | 6328 .block_sizes = block_sizes_dv100, |
6310 .audio_stride = 90, | 6329 .audio_stride = 90, |
6311 .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */ | 6330 .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */ |
6321 .ltc_divisor = 50, | 6340 .ltc_divisor = 50, |
6322 .height = 720, | 6341 .height = 720, |
6323 .width = 960, | 6342 .width = 960, |
6324 .sar = {{1, 1}, {1, 1}}, | 6343 .sar = {{1, 1}, {1, 1}}, |
6325 .video_place = dv_place_720p50, | 6344 .video_place = dv_place_720p50, |
6345 .work_chunks = &work_chunks_dv100palp[0], | |
6326 .pix_fmt = PIX_FMT_YUV422P, | 6346 .pix_fmt = PIX_FMT_YUV422P, |
6327 .bpm = 8, | 6347 .bpm = 8, |
6328 .block_sizes = block_sizes_dv100, | 6348 .block_sizes = block_sizes_dv100, |
6329 .audio_stride = 90, | 6349 .audio_stride = 90, |
6330 .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */ | 6350 .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */ |