66 32768, 16705, 16705, 17734, 17032, 17734, 18205, 18081,
67 18081, 18205, 18725, 18562, 19195, 18562, 18725, 19266,
68 19091, 19705, 19705, 19091, 19266, 21407, 19643, 20267,
69 20228, 20267, 19643, 21407, 22725, 21826, 20853, 20806,
70 20806, 20853, 21826, 22725, 23170, 23170, 21407, 21400,
71 21407, 23170, 23170, 24598, 23786, 22018, 22018, 23786,
72 24598, 25251, 24465, 22654, 24465, 25251, 25972, 25172,
73 25172, 25972, 26722, 27969, 26722, 29692, 29692, 31521,
76 32768, 16384, 16705, 16705, 17734, 17734, 17734, 17734,
77 18081, 18081, 18725, 18725, 21407, 21407, 19091, 19091,
78 19195, 19195, 18205, 18205, 18725, 18725, 19705, 19705,
79 20267, 20267, 21826, 21826, 23170, 23170, 20806, 20806,
80 20267, 20267, 19266, 19266, 21407, 21407, 20853, 20853,
81 21400, 21400, 23786, 23786, 24465, 24465, 22018, 22018,
82 23170, 23170, 22725, 22725, 24598, 24598, 24465, 24465,
83 25172, 25172, 27969, 27969, 25972, 25972, 29692, 29692
90 128, 16, 16, 17, 17, 17, 18, 18,
91 18, 18, 18, 18, 19, 18, 18, 19,
92 19, 19, 19, 19, 19, 42, 38, 40,
93 40, 40, 38, 42, 44, 43, 41, 41,
94 41, 41, 43, 44, 45, 45, 42, 42,
95 42, 45, 45, 48, 46, 43, 43, 46,
96 48, 49, 48, 44, 48, 49, 101, 98,
97 98, 101, 104, 109, 104, 116, 116, 123,
100 128, 16, 16, 17, 17, 17, 25, 25,
101 25, 25, 26, 25, 26, 25, 26, 26,
102 26, 27, 27, 26, 26, 42, 38, 40,
103 40, 40, 38, 42, 44, 43, 41, 41,
104 41, 41, 43, 44, 91, 91, 84, 84,
105 84, 91, 91, 96, 93, 86, 86, 93,
106 96, 197, 191, 177, 191, 197, 203, 197,
107 197, 203, 209, 219, 209, 232, 232, 246,
110 128, 16, 16, 17, 17, 17, 18, 18,
111 18, 18, 18, 18, 19, 18, 18, 19,
112 19, 19, 19, 19, 19, 42, 38, 40,
113 40, 40, 38, 42, 44, 43, 41, 41,
114 41, 41, 43, 44, 68, 68, 63, 63,
115 63, 68, 68, 96, 92, 86, 86, 92,
116 96, 98, 96, 88, 96, 98, 202, 196,
117 196, 202, 208, 218, 208, 232, 232, 246,
120 128, 24, 24, 26, 26, 26, 36, 36,
121 36, 36, 36, 36, 38, 36, 36, 38,
122 38, 38, 38, 38, 38, 84, 76, 80,
123 80, 80, 76, 84, 88, 86, 82, 82,
124 82, 82, 86, 88, 182, 182, 168, 168,
125 168, 182, 182, 192, 186, 192, 172, 186,
126 192, 394, 382, 354, 382, 394, 406, 394,
127 394, 406, 418, 438, 418, 464, 464, 492,
141 2, 3, 4, 5, 6, 7, 8, 16, 18, 20, 22, 24, 28, 52
143 const uint16_t *iweight1, *iweight2;
152 for (c = 0; c < 4; c++) {
153 for (s = 0; s < 16; s++) {
154 for (i = 0; i < 64; i++) {
155 *factor1++ = (dv100_qstep[
s] << (c + 9)) * iweight1[i];
156 *factor2++ = (dv100_qstep[
s] << (c + 9)) * iweight2[i];
164 for (s = 0; s < 22; s++) {
165 for (i = c = 0; c < 4; c++) {
166 for (; i < dv_quant_areas[
c]; i++) {
168 *factor2++ = (*factor1++) << 1;
182 memset(&idsp,0,
sizeof(idsp));
185 for (i = 0; i < 64; i++)
189 for (i = 0; i < 64; i++){
216 if (partial_bit_count > 0) {
217 re_cache = re_cache >> partial_bit_count |
219 re_index -= partial_bit_count;
239 if (re_index + vlc_len > last_index) {
243 re_index = last_index;
255 block[scan_table[pos]] =
level;
279 int quant,
dc, dct_mode, class1, j;
280 int mb_index, mb_x, mb_y, last_index;
281 int y_stride, linesize;
293 int is_field_mode[5];
298 memset(sblock, 0, 5 *
DV_MAX_BPM *
sizeof(*sblock));
302 block1 = &sblock[0][0];
305 for (mb_index = 0; mb_index < 5; mb_index++, mb1 += s->
sys->
bpm, block1 += s->
sys->
bpm * 64) {
307 quant = buf_ptr[3] & 0x0f;
312 is_field_mode[mb_index] = 0;
313 for (j = 0; j < s->
sys->
bpm; j++) {
327 is_field_mode[mb_index] |= !j && dct_mode;
341 buf_ptr += last_index >> 3;
345 av_dlog(avctx,
"MB block: %d, %d ", mb_index, j);
364 for (j = 0; j < s->
sys->
bpm; j++, block += 64, mb++) {
380 block = &sblock[0][0];
385 for (mb_index = 0; mb_index < 5; mb_index++) {
386 for (j = 0; j < s->
sys->
bpm; j++) {
388 av_dlog(avctx,
"start %d:%d\n", mb_index, j);
391 if (mb->
pos >= 64 && mb->
pos < 127)
393 "AC EOB marker is absent pos=%d\n", mb->
pos);
400 block = &sblock[0][0];
402 for (mb_index = 0; mb_index < 5; mb_index++) {
408 (s->
sys->
height >= 720 && mb_y != 134)) {
410 ((!is_field_mode[mb_index]) * log2_blocksize));
412 y_stride = (2 << log2_blocksize);
417 mb[0].
idct_put(y_ptr, linesize, block + 0 * 64);
419 mb[2].
idct_put(y_ptr + (1 << log2_blocksize), linesize, block + 2 * 64);
421 mb[1].
idct_put(y_ptr + (1 << log2_blocksize), linesize, block + 1 * 64);
422 mb[2].
idct_put(y_ptr + y_stride, linesize, block + 2 * 64);
423 mb[3].
idct_put(y_ptr + (1 << log2_blocksize) + y_stride, linesize, block + 3 * 64);
431 for (j = 2; j; j--) {
434 uint64_t aligned_pixels[64 / 8];
439 for (y = 0; y < (1 << log2_blocksize); y++, c_ptr += s->
frame->
linesize[j], pixels += 8) {
440 ptr1 = pixels + ((1 << (log2_blocksize))>>1);
442 for (x = 0; x < (1 <<
FFMAX(log2_blocksize - 1, 0)); x++) {
443 c_ptr[x] = pixels[x];
450 y_stride = (mb_y == 134) ? (1 << log2_blocksize) :
451 s->
frame->
linesize[j] << ((!is_field_mode[mb_index]) * log2_blocksize);
453 (mb++)->
idct_put(c_ptr, linesize, block);
456 (mb++)->
idct_put(c_ptr + y_stride, linesize, block);
471 int buf_size = avpkt->
size;
474 int apt, is16_9,
ret;
504 vsc_pack = buf + 80 * 5 + 48 + 5;
507 is16_9 = (vsc_pack[2] & 0x07) == 0x02 ||
508 (!apt && (vsc_pack[2] & 0x07) == 0x07);