comparison dvdata.h @ 8175:0d1c9c936a52 libavcodec

Making idct factor tables dynamically allocated
author romansh
date Thu, 20 Nov 2008 01:40:40 +0000
parents ab31736c0f23
children 04423b2f6e0b
comparison
equal deleted inserted replaced
8174:f11197441364 8175:0d1c9c936a52
51 int ltc_divisor; /* FPS from the LTS standpoint */ 51 int ltc_divisor; /* FPS from the LTS standpoint */
52 int height; /* picture height in pixels */ 52 int height; /* picture height in pixels */
53 int width; /* picture width in pixels */ 53 int width; /* picture width in pixels */
54 AVRational sar[2]; /* sample aspect ratios for 4:3 and 16:9 */ 54 AVRational sar[2]; /* sample aspect ratios for 4:3 and 16:9 */
55 DVwork_chunk *work_chunks; /* each thread gets its own chunk of frame to work on */ 55 DVwork_chunk *work_chunks; /* each thread gets its own chunk of frame to work on */
56 uint32_t *idct_factor; /* set of iDCT factor tables */
56 enum PixelFormat pix_fmt; /* picture pixel format */ 57 enum PixelFormat pix_fmt; /* picture pixel format */
57 int bpm; /* blocks per macroblock */ 58 int bpm; /* blocks per macroblock */
58 const uint8_t *block_sizes; /* AC block sizes, in bits */ 59 const uint8_t *block_sizes; /* AC block sizes, in bits */
59 int audio_stride; /* size of audio_shuffle table */ 60 int audio_stride; /* size of audio_shuffle table */
60 int audio_min_samples[3]; /* min amount of audio samples */ 61 int audio_min_samples[3]; /* min amount of audio samples */
467 static DVwork_chunk work_chunks_dv100palp [2*12*27]; 468 static DVwork_chunk work_chunks_dv100palp [2*12*27];
468 static DVwork_chunk work_chunks_dv100ntscp[2*10*27]; 469 static DVwork_chunk work_chunks_dv100ntscp[2*10*27];
469 static DVwork_chunk work_chunks_dv100pali [4*12*27]; 470 static DVwork_chunk work_chunks_dv100pali [4*12*27];
470 static DVwork_chunk work_chunks_dv100ntsci[4*10*27]; 471 static DVwork_chunk work_chunks_dv100ntsci[4*10*27];
471 472
473 static uint32_t dv_idct_factor_sd [2*2*22*64];
474 static uint32_t dv_idct_factor_hd1080[2*4*16*64];
475 static uint32_t dv_idct_factor_hd720 [2*4*16*64];
476
472 static const DVprofile dv_profiles[] = { 477 static const DVprofile dv_profiles[] = {
473 { .dsf = 0, 478 { .dsf = 0,
474 .video_stype = 0x0, 479 .video_stype = 0x0,
475 .frame_size = 120000, /* IEC 61834, SMPTE-314M - 525/60 (NTSC) */ 480 .frame_size = 120000, /* IEC 61834, SMPTE-314M - 525/60 (NTSC) */
476 .difseg_size = 10, 481 .difseg_size = 10,
479 .ltc_divisor = 30, 484 .ltc_divisor = 30,
480 .height = 480, 485 .height = 480,
481 .width = 720, 486 .width = 720,
482 .sar = {{10, 11}, {40, 33}}, 487 .sar = {{10, 11}, {40, 33}},
483 .work_chunks = &work_chunks_dv25ntsc[0], 488 .work_chunks = &work_chunks_dv25ntsc[0],
489 .idct_factor = &dv_idct_factor_sd[0],
484 .pix_fmt = PIX_FMT_YUV411P, 490 .pix_fmt = PIX_FMT_YUV411P,
485 .bpm = 6, 491 .bpm = 6,
486 .block_sizes = block_sizes_dv2550, 492 .block_sizes = block_sizes_dv2550,
487 .audio_stride = 90, 493 .audio_stride = 90,
488 .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */ 494 .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */
498 .ltc_divisor = 25, 504 .ltc_divisor = 25,
499 .height = 576, 505 .height = 576,
500 .width = 720, 506 .width = 720,
501 .sar = {{59, 54}, {118, 81}}, 507 .sar = {{59, 54}, {118, 81}},
502 .work_chunks = &work_chunks_dv25pal[0], 508 .work_chunks = &work_chunks_dv25pal[0],
509 .idct_factor = &dv_idct_factor_sd[0],
503 .pix_fmt = PIX_FMT_YUV420P, 510 .pix_fmt = PIX_FMT_YUV420P,
504 .bpm = 6, 511 .bpm = 6,
505 .block_sizes = block_sizes_dv2550, 512 .block_sizes = block_sizes_dv2550,
506 .audio_stride = 108, 513 .audio_stride = 108,
507 .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32kHz */ 514 .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32kHz */
517 .ltc_divisor = 25, 524 .ltc_divisor = 25,
518 .height = 576, 525 .height = 576,
519 .width = 720, 526 .width = 720,
520 .sar = {{59, 54}, {118, 81}}, 527 .sar = {{59, 54}, {118, 81}},
521 .work_chunks = &work_chunks_dv25pal411[0], 528 .work_chunks = &work_chunks_dv25pal411[0],
529 .idct_factor = &dv_idct_factor_sd[0],
522 .pix_fmt = PIX_FMT_YUV411P, 530 .pix_fmt = PIX_FMT_YUV411P,
523 .bpm = 6, 531 .bpm = 6,
524 .block_sizes = block_sizes_dv2550, 532 .block_sizes = block_sizes_dv2550,
525 .audio_stride = 108, 533 .audio_stride = 108,
526 .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32kHz */ 534 .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32kHz */
536 .ltc_divisor = 30, 544 .ltc_divisor = 30,
537 .height = 480, 545 .height = 480,
538 .width = 720, 546 .width = 720,
539 .sar = {{10, 11}, {40, 33}}, 547 .sar = {{10, 11}, {40, 33}},
540 .work_chunks = &work_chunks_dv50ntsc[0], 548 .work_chunks = &work_chunks_dv50ntsc[0],
549 .idct_factor = &dv_idct_factor_sd[0],
541 .pix_fmt = PIX_FMT_YUV422P, 550 .pix_fmt = PIX_FMT_YUV422P,
542 .bpm = 6, 551 .bpm = 6,
543 .block_sizes = block_sizes_dv2550, 552 .block_sizes = block_sizes_dv2550,
544 .audio_stride = 90, 553 .audio_stride = 90,
545 .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */ 554 .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */
555 .ltc_divisor = 25, 564 .ltc_divisor = 25,
556 .height = 576, 565 .height = 576,
557 .width = 720, 566 .width = 720,
558 .sar = {{59, 54}, {118, 81}}, 567 .sar = {{59, 54}, {118, 81}},
559 .work_chunks = &work_chunks_dv50pal[0], 568 .work_chunks = &work_chunks_dv50pal[0],
569 .idct_factor = &dv_idct_factor_sd[0],
560 .pix_fmt = PIX_FMT_YUV422P, 570 .pix_fmt = PIX_FMT_YUV422P,
561 .bpm = 6, 571 .bpm = 6,
562 .block_sizes = block_sizes_dv2550, 572 .block_sizes = block_sizes_dv2550,
563 .audio_stride = 108, 573 .audio_stride = 108,
564 .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32kHz */ 574 .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32kHz */
574 .ltc_divisor = 30, 584 .ltc_divisor = 30,
575 .height = 1080, 585 .height = 1080,
576 .width = 1280, 586 .width = 1280,
577 .sar = {{1, 1}, {1, 1}}, 587 .sar = {{1, 1}, {1, 1}},
578 .work_chunks = &work_chunks_dv100ntsci[0], 588 .work_chunks = &work_chunks_dv100ntsci[0],
589 .idct_factor = &dv_idct_factor_hd1080[0],
579 .pix_fmt = PIX_FMT_YUV422P, 590 .pix_fmt = PIX_FMT_YUV422P,
580 .bpm = 8, 591 .bpm = 8,
581 .block_sizes = block_sizes_dv100, 592 .block_sizes = block_sizes_dv100,
582 .audio_stride = 90, 593 .audio_stride = 90,
583 .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */ 594 .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */
593 .ltc_divisor = 25, 604 .ltc_divisor = 25,
594 .height = 1080, 605 .height = 1080,
595 .width = 1440, 606 .width = 1440,
596 .sar = {{1, 1}, {1, 1}}, 607 .sar = {{1, 1}, {1, 1}},
597 .work_chunks = &work_chunks_dv100pali[0], 608 .work_chunks = &work_chunks_dv100pali[0],
609 .idct_factor = &dv_idct_factor_hd1080[0],
598 .pix_fmt = PIX_FMT_YUV422P, 610 .pix_fmt = PIX_FMT_YUV422P,
599 .bpm = 8, 611 .bpm = 8,
600 .block_sizes = block_sizes_dv100, 612 .block_sizes = block_sizes_dv100,
601 .audio_stride = 108, 613 .audio_stride = 108,
602 .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32kHz */ 614 .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32kHz */
612 .ltc_divisor = 60, 624 .ltc_divisor = 60,
613 .height = 720, 625 .height = 720,
614 .width = 960, 626 .width = 960,
615 .sar = {{1, 1}, {1, 1}}, 627 .sar = {{1, 1}, {1, 1}},
616 .work_chunks = &work_chunks_dv100ntscp[0], 628 .work_chunks = &work_chunks_dv100ntscp[0],
629 .idct_factor = &dv_idct_factor_hd720[0],
617 .pix_fmt = PIX_FMT_YUV422P, 630 .pix_fmt = PIX_FMT_YUV422P,
618 .bpm = 8, 631 .bpm = 8,
619 .block_sizes = block_sizes_dv100, 632 .block_sizes = block_sizes_dv100,
620 .audio_stride = 90, 633 .audio_stride = 90,
621 .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */ 634 .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */
631 .ltc_divisor = 50, 644 .ltc_divisor = 50,
632 .height = 720, 645 .height = 720,
633 .width = 960, 646 .width = 960,
634 .sar = {{1, 1}, {1, 1}}, 647 .sar = {{1, 1}, {1, 1}},
635 .work_chunks = &work_chunks_dv100palp[0], 648 .work_chunks = &work_chunks_dv100palp[0],
649 .idct_factor = &dv_idct_factor_hd720[0],
636 .pix_fmt = PIX_FMT_YUV422P, 650 .pix_fmt = PIX_FMT_YUV422P,
637 .bpm = 8, 651 .bpm = 8,
638 .block_sizes = block_sizes_dv100, 652 .block_sizes = block_sizes_dv100,
639 .audio_stride = 90, 653 .audio_stride = 90,
640 .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */ 654 .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */