57 static const uint8_t off[] = { 2, 6, 8, 0, 4 };
58 static const uint8_t shuf1[] = { 36, 18, 54, 0, 72 };
59 static const uint8_t shuf2[] = { 24, 12, 36, 0, 48 };
60 static const uint8_t shuf3[] = { 18, 9, 27, 0, 36 };
62 static const uint8_t l_start[] = {0, 4, 9, 13, 18, 22, 27, 31, 36, 40};
63 static const uint8_t l_start_shuffled[] = { 9, 4, 13, 0, 18 };
65 static const uint8_t serpent1[] = {0, 1, 2, 2, 1, 0,
70 static const uint8_t serpent2[] = {0, 1, 2, 3, 4, 5, 5, 4, 3, 2, 1, 0,
71 0, 1, 2, 3, 4, 5, 5, 4, 3, 2, 1, 0,
74 static const uint8_t remap[][2] = {{ 0, 0}, { 0, 0}, { 0, 0}, { 0, 0},
75 { 0, 0}, { 0, 1}, { 0, 2}, { 0, 3}, {10, 0},
76 {10, 1}, {10, 2}, {10, 3}, {20, 0}, {20, 1},
77 {20, 2}, {20, 3}, {30, 0}, {30, 1}, {30, 2},
78 {30, 3}, {40, 0}, {40, 1}, {40, 2}, {40, 3},
79 {50, 0}, {50, 1}, {50, 2}, {50, 3}, {60, 0},
80 {60, 1}, {60, 2}, {60, 3}, {70, 0}, {70, 1},
81 {70, 2}, {70, 3}, { 0,64}, { 0,65}, { 0,66},
82 {10,64}, {10,65}, {10,66}, {20,64}, {20,65},
83 {20,66}, {30,64}, {30,65}, {30,66}, {40,64},
84 {40,65}, {40,66}, {50,64}, {50,65}, {50,66},
85 {60,64}, {60,65}, {60,66}, {70,64}, {70,65},
86 {70,66}, { 0,67}, {20,67}, {40,67}, {60,67}};
94 blk = (chan*11+seq)*27+slot;
96 if (chan == 0 && seq == 11) {
105 i = (4*chan + blk + off[
m])%11;
108 x = shuf1[
m] + (chan&1)*9 + k%9;
109 y = (i*3+k/9)*2 + (chan>>1) + 1;
111 tbl[
m] = (x<<1)|(y<<9);
114 blk = (chan*10+seq)*27+slot;
116 i = (4*chan + (seq/5) + 2*blk + off[m])%10;
119 x = shuf1[
m]+(chan&1)*9 + k%9;
120 y = (i*3+k/9)*2 + (chan>>1) + 4;
123 x = remap[
y][0]+((x-80)<<(y>59));
126 tbl[
m] = (x<<1)|(y<<9);
129 blk = (chan*10+seq)*27+slot;
131 i = (4*chan + (seq/5) + 2*blk + off[m])%10;
132 k = (blk/5)%27 + (i&1)*3;
134 x = shuf2[
m] + k%6 + 6*(chan&1);
135 y = l_start[i] + k/6 + 45*(chan>>1);
136 tbl[
m] = (x<<1)|(y<<9);
141 x = shuf3[
m] + slot/3;
144 tbl[
m] = (x<<1)|(y<<8);
147 x = shuf3[
m] + slot/3;
150 tbl[
m] = (x<<1)|(y<<9);
154 k = slot + ((m==1||m==2)?3:0);
156 x = l_start_shuffled[
m] + k/6;
157 y = serpent2[k] + i*6;
160 tbl[
m] = (x<<2)|(y<<8);
173 2, 3, 4, 5, 6, 7, 8, 16, 18, 20, 22, 24, 28, 52
181 uint32_t *factor1, *factor2;
182 const int *iweight1, *iweight2;
189 for (j=0; j<27; j++) {
213 for (c = 0; c < 4; c++) {
214 for (s = 0; s < 16; s++) {
215 for (i = 0; i < 64; i++) {
224 for (s = 0; s < 22; s++) {
225 for (i = c = 0; c < 4; c++) {
228 *factor2++ = (*factor1++) << 1;
256 for (i = 0, j = 0; i <
NB_DV_VLC; i++, j++) {
263 new_dv_vlc_bits[j] <<= 1;
277 new_dv_vlc_len, 1, 1, new_dv_vlc_bits, 2, 2, 0);
281 int code = dv_vlc.
table[i][0];
289 run = new_dv_vlc_run [code] + 1;
290 level = new_dv_vlc_level[code];
292 ff_dv_rl_vlc[i].
len =
len;
294 ff_dv_rl_vlc[i].
run =
run;
300 memset(&dsp,0,
sizeof(dsp));
309 for (i = 0; i < 64; i++)
316 for (i = 0; i < 64; i++){
335 "Valid DV profiles are:\n",
340 if (avctx->
height > 576) {
368 *vlc = 0xfe00 | (level << 1) | sign;
372 *vlc |= ((run < 16) ?
dv_vlc_map[run-1][0].vlc :
373 (0x1f80 | (run - 1))) <<
size;
374 size += (run < 16) ?
dv_vlc_map[run-1][0].size : 13;
391 size += (run < 16) ?
dv_vlc_map[run-1][0].size : 13;
438 put_bits(pb, bits_left, vlc >> size);
439 vlc = vlc & ((1 <<
size) - 1);
441 if (pb + 1 >= pb_end) {
468 int ps = s->
ildct_cmp(NULL, data, NULL, linesize, 8) - 400;
470 int is = s->
ildct_cmp(NULL, data , NULL, linesize<<1, 4) +
471 s->
ildct_cmp(NULL, data + linesize, NULL, linesize<<1, 4);
481 131072, 257107, 257107, 242189, 252167, 242189, 235923, 237536,
482 237536, 235923, 229376, 231390, 223754, 231390, 229376, 222935,
483 224969, 217965, 217965, 224969, 222935, 200636, 218652, 211916,
484 212325, 211916, 218652, 200636, 188995, 196781, 205965, 206433,
485 206433, 205965, 196781, 188995, 185364, 185364, 200636, 200704,
486 200636, 185364, 185364, 174609, 180568, 195068, 195068, 180568,
487 174609, 170091, 175557, 189591, 175557, 170091, 165371, 170627,
488 170627, 165371, 160727, 153560, 160727, 144651, 144651, 136258,
491 131072, 242189, 257107, 237536, 229376, 200636, 242189, 223754,
492 224969, 196781, 262144, 242189, 229376, 200636, 257107, 237536,
493 211916, 185364, 235923, 217965, 229376, 211916, 206433, 180568,
494 242189, 223754, 224969, 196781, 211916, 185364, 235923, 217965,
495 200704, 175557, 222935, 205965, 200636, 185364, 195068, 170627,
496 229376, 211916, 206433, 180568, 200704, 175557, 222935, 205965,
497 175557, 153560, 188995, 174609, 165371, 144651, 200636, 185364,
498 195068, 170627, 175557, 153560, 188995, 174609, 165371, 144651,
518 static const int classes[] = {12, 24, 36, 0xffff};
520 static const int classes[] = {-1, -1, 255, 0xffff};
522 int max = classes[0];
538 memset(blk, 0, 64*
sizeof(*blk));
546 for (area = 0; area < 4; area++) {
547 bi->
prev[area] = prev;
550 int level = blk[zigzag_scan[i]];
552 if (level + 15 > 30
U) {
553 bi->
sign[i] = (level >> 31) & 1;
557 level = (
FFABS(level) * weight[i] + (1 << (dv_weight_bits+3))) >> (dv_weight_bits+4);
568 for (bi->
cno = 0; max > classes[bi->
cno]; bi->
cno++);
576 for (area = 0; area < 4; area++) {
577 bi->
prev[area] = prev;
598 int i, j, k,
a, prev,
a2;
601 size[0] = size[1] = size[2] = size[3] = size[4] = 1 << 24;
604 for (i = 0; i < 5; i++) {
610 for (j = 0; j < 6; j++, b++) {
611 for (a = 0; a < 4; a++) {
644 }
while (qnos[0]|qnos[1]|qnos[2]|qnos[3]|qnos[4]);
650 for (j = 0; j < 6 *5; j++, b++) {
652 for (k = b->
next[prev]; k < 64; k = b->next[k]) {
653 if (b->
mb[k] < a && b->
mb[k] > -a){
669 int mb_x, mb_y, c_offset, linesize, y_stride;
678 int qnos[5] = {15, 15, 15, 15, 15};
679 int* qnosp = &qnos[0];
682 enc_blk = &enc_blks[0];
683 for (mb_index = 0; mb_index < 5; mb_index++) {
689 (s->
sys->
height >= 720 && mb_y != 134)) {
715 for (j = 2; j; j--) {
722 for (i = 0; i < 8; i++) {
723 d = c_ptr + (linesize << 3);
724 b[0] = c_ptr[0]; b[1] = c_ptr[1]; b[2] = c_ptr[2]; b[3] = c_ptr[3];
725 b[4] = d[0]; b[5] = d[1]; b[6] = d[2]; b[7] = d[3];
744 for (j=0; j<5*s->
sys->
bpm;) {
751 for (i=0; i<s->
sys->
bpm; i++, j++) {
755 put_sbits(&pbs[j], 9, ((enc_blks[j].
mb[0] >> 3) - 1024 + 2) >> 2);
756 put_bits(&pbs[j], 1, enc_blks[j].dct_mode);
757 put_bits(&pbs[j], 2, enc_blks[j].cno);
765 for (i=0; i<s->
sys->
bpm; i++) {
766 if (enc_blks[start_mb+i].partial_bit_count)
773 for (j=0; j<5*s->
sys->
bpm; j++) {
774 if (enc_blks[j].partial_bit_count)
776 if (enc_blks[j].partial_bit_count)
780 for (j=0; j<5*s->
sys->
bpm; j++) {
789 memset(pbs[j].
buf + pos, 0xff, size - pos);
863 buf[1] = buf[2] = buf[3] = buf[4] = 0xff;
868 #if CONFIG_DVVIDEO_ENCODER
874 buf[1] = (seq_num << 4) |
884 if (syb_num == 0 || syb_num == 6) {
889 else if (syb_num == 11) {
910 memset(buf, 0xff, 80 * 6);
918 for (j = 0; j < 2; j++) {
920 for (k = 0; k < 6; k++)
921 buf += dv_write_ssyb_id(k, (i < c->sys->difseg_size/2), buf) + 5;
926 for (j = 0; j < 3; j++) {
937 for (j = 0; j < 135; j++) {
939 memset(buf, 0xff, 80);
977 dv_format_frame(s, pkt->
data);
991 .encode2 = dvvideo_encode_frame,
998 #endif // CONFIG_DVVIDEO_ENCODER