48 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
49 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
54 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
55 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
56 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
57 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
58 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
59 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
60 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
61 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
66 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
67 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
68 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
69 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
70 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
71 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
72 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
73 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
78 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
79 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
80 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
81 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
82 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
83 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
84 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
85 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
90 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
91 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
92 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
93 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
94 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
95 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
96 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
97 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
113 int16_t *
block,
int n,
int qscale)
115 int i,
level, nCoeffs;
116 const uint16_t *quant_matrix;
126 for(i=1;i<=nCoeffs;i++) {
132 level = (int)(level * qscale * quant_matrix[j]) >> 3;
133 level = (level - 1) | 1;
136 level = (int)(level * qscale * quant_matrix[j]) >> 3;
137 level = (level - 1) | 1;
145 int16_t *
block,
int n,
int qscale)
147 int i,
level, nCoeffs;
148 const uint16_t *quant_matrix;
153 for(i=0; i<=nCoeffs; i++) {
159 level = (((level << 1) + 1) * qscale *
160 ((int) (quant_matrix[j]))) >> 4;
161 level = (level - 1) | 1;
164 level = (((level << 1) + 1) * qscale *
165 ((int) (quant_matrix[j]))) >> 4;
166 level = (level - 1) | 1;
174 int16_t *
block,
int n,
int qscale)
176 int i,
level, nCoeffs;
177 const uint16_t *quant_matrix;
187 for(i=1;i<=nCoeffs;i++) {
193 level = (int)(level * qscale * quant_matrix[j]) >> 3;
196 level = (int)(level * qscale * quant_matrix[j]) >> 3;
204 int16_t *
block,
int n,
int qscale)
206 int i,
level, nCoeffs;
207 const uint16_t *quant_matrix;
218 for(i=1;i<=nCoeffs;i++) {
224 level = (int)(level * qscale * quant_matrix[j]) >> 3;
227 level = (int)(level * qscale * quant_matrix[j]) >> 3;
237 int16_t *
block,
int n,
int qscale)
239 int i,
level, nCoeffs;
240 const uint16_t *quant_matrix;
247 for(i=0; i<=nCoeffs; i++) {
253 level = (((level << 1) + 1) * qscale *
254 ((int) (quant_matrix[j]))) >> 4;
257 level = (((level << 1) + 1) * qscale *
258 ((int) (quant_matrix[j]))) >> 4;
268 int16_t *
block,
int n,
int qscale)
270 int i,
level, qmul, qadd;
282 qadd = (qscale - 1) | 1;
291 for(i=1; i<=nCoeffs; i++) {
295 level = level * qmul - qadd;
297 level = level * qmul + qadd;
305 int16_t *
block,
int n,
int qscale)
307 int i,
level, qmul, qadd;
312 qadd = (qscale - 1) | 1;
317 for(i=0; i<=nCoeffs; i++) {
321 level = level * qmul - qadd;
323 level = level * qmul + qadd;
332 int mb_x,
int mb_y,
int mb_intra,
int mb_skipped)
342 memcpy(s->
mv,
mv,
sizeof(*
mv));
447 if (r < 0 || !pic->f.buf[0]) {
455 for (i = 0; pic->
f.
data[i]; i++) {
459 pic->
f.
data[i] += offset;
480 "get_buffer() failed (stride changed)\n");
487 "get_buffer() failed (uv stride mismatch)\n");
495 "get_buffer() failed to allocate context scratch buffers.\n");
514 for (i = 0; i < 2; i++) {
544 int mv_size = 2 * (b8_array_size + 4) *
sizeof(int16_t);
545 int ref_index_size = 4 * mb_array_size;
547 for (i = 0; mv_size && i < 2; i++) {
561 #define MAKE_WRITABLE(table) \
564 (ret = av_buffer_make_writable(&pic->table)) < 0)\
575 for (i = 0; i < 2; i++) {
592 assert(pic->
f.
data[0]);
595 assert(!pic->
f.
buf[0]);
622 for (i = 0; i < 2; i++) {
658 memset((
uint8_t*)pic + off, 0,
sizeof(*pic) - off);
665 #define UPDATE_TABLE(table)\
668 (!dst->table || dst->table->buffer != src->table->buffer)) {\
669 av_buffer_unref(&dst->table);\
670 dst->table = av_buffer_ref(src->table);\
672 ff_free_picture_tables(dst);\
673 return AVERROR(ENOMEM);\
684 for (i = 0; i < 2; i++) {
695 for (i = 0; i < 2; i++) {
754 int yc_size = y_size + 2 * c_size;
771 2 * 64 *
sizeof(
int), fail)
777 for (i = 0; i < 12; i++) {
786 yc_size *
sizeof(int16_t) * 16, fail);
819 #define COPY(a) bak->a = src->a
820 COPY(edge_emu_buffer);
825 COPY(obmc_scratchpad);
832 COPY(me.map_generation);
853 for (i = 0; i < 12; i++) {
861 "scratch buffers.\n");
875 if (dst == src || !s1->context_initialized)
894 s->
width = s1->width;
909 if (s1->picture[i].f.buf[0] &&
914 #define UPDATE_PICTURE(pic)\
916 ff_mpeg_unref_picture(s, &s->pic);\
917 if (s1->pic.f.buf[0])\
918 ret = ff_mpeg_ref_picture(s, &s->pic, &s1->pic);\
920 ret = update_picture_tables(&s->pic, &s1->pic);\
939 (
char *) &s1->pb_field_time +
sizeof(s1->pb_field_time) -
940 (
char *) &s1->last_time_base);
950 if (s1->bitstream_buffer) {
951 if (s1->bitstream_buffer_size +
955 s1->allocated_bitstream_buffer_size);
958 s1->bitstream_buffer_size);
968 "scratch buffers.\n");
973 "be allocated due to unknown size.\n");
979 (
char *) &s1->rtp_mode - (
char *) &s1->progressive_sequence);
981 if (!s1->first_field) {
983 if (s1->current_picture_ptr)
984 s->
last_lambda_for[s1->pict_type] = s1->current_picture_ptr->f.quality;
1066 int y_size, c_size, yc_size, i, mb_array_size, mv_table_size, x, y;
1091 yc_size = y_size + 2 * c_size;
1105 mv_table_size * 2 *
sizeof(int16_t), fail);
1107 mv_table_size * 2 *
sizeof(int16_t), fail);
1109 mv_table_size * 2 *
sizeof(int16_t), fail);
1111 mv_table_size * 2 *
sizeof(int16_t), fail);
1113 mv_table_size * 2 *
sizeof(int16_t), fail);
1115 mv_table_size * 2 *
sizeof(int16_t), fail);
1127 sizeof(uint16_t), fail);
1133 mb_array_size *
sizeof(
float), fail);
1135 mb_array_size *
sizeof(
float), fail);
1142 for (i = 0; i < 2; i++) {
1144 for (j = 0; j < 2; j++) {
1145 for (k = 0; k < 2; k++) {
1148 mv_table_size * 2 *
sizeof(int16_t),
1154 mb_array_size * 2 *
sizeof(
uint8_t), fail);
1156 mv_table_size * 2 *
sizeof(int16_t), fail);
1161 mb_array_size * 2 *
sizeof(
uint8_t), fail);
1171 mb_array_size *
sizeof(
uint8_t), fail);
1173 mb_array_size *
sizeof(
uint8_t), fail);
1180 yc_size *
sizeof(int16_t), fail);
1184 for (i = 0; i < yc_size; i++)
1222 "decoding to AV_PIX_FMT_NONE is not supported.\n");
1233 " reducing to %d\n", nb_slices, max_slices);
1234 nb_slices = max_slices;
1279 if (nb_slices > 1) {
1280 for (i = 1; i < nb_slices; i++) {
1285 for (i = 0; i < nb_slices; i++) {
1289 (s->
mb_height * (i) + nb_slices / 2) / nb_slices;
1291 (s->
mb_height * (i + 1) + nb_slices / 2) / nb_slices;
1330 for (i = 0; i < 2; i++) {
1331 for (j = 0; j < 2; j++) {
1332 for (k = 0; k < 2; k++) {
1406 if (nb_slices > 1) {
1407 for (i = 1; i < nb_slices; i++) {
1412 for (i = 0; i < nb_slices; i++) {
1416 (s->
mb_height * (i) + nb_slices / 2) / nb_slices;
1418 (s->
mb_height * (i + 1) + nb_slices / 2) / nb_slices;
1484 int last,
run,
level, start, end, i;
1491 for (last = 0; last < 2; last++) {
1500 memset(max_level, 0,
MAX_RUN + 1);
1502 memset(index_run, rl->
n,
MAX_RUN + 1);
1503 for (i = start; i < end; i++) {
1506 if (index_run[run] == rl->
n)
1508 if (level > max_level[run])
1510 if (run > max_run[level])
1514 rl->
max_level[last] = static_store[last];
1527 memcpy(rl->
index_run[last], index_run, MAX_RUN + 1);
1535 for (q = 0; q < 32; q++) {
1537 int qadd = (q - 1) | 1;
1551 }
else if (len < 0) {
1555 if (code == rl->
n) {
1561 if (code >= rl->
last) run += 192;
1649 "releasing zombie picture\n");
1710 av_dlog(s->
avctx,
"L%p N%p C%p L%p N%p C%p type:%d drop:%d\n",
1721 int h_chroma_shift, v_chroma_shift;
1723 &h_chroma_shift, &v_chroma_shift);
1726 "warning: first frame is no keyframe\n");
1729 "allocate dummy last picture for field based first keyframe\n");
1750 (avctx->
height >> v_chroma_shift) *
1753 (avctx->
height >> v_chroma_shift) *
1799 "Non-reference picture received and no reference available\n");
1805 for (i = 0; i < 4; i++) {
1896 for (x = 0; x < s->
mb_width; x++) {
1924 else if (
IS_GMC(mb_type))
1966 int my_max = INT_MIN, my_min = INT_MAX, qpel_shift = !s->
quarter_sample;
1967 int my,
off, i, mvs;
1986 for (i = 0; i < mvs; i++) {
1987 my = s->
mv[dir][i][1]<<qpel_shift;
1988 my_max =
FFMAX(my_max, my);
1989 my_min =
FFMIN(my_min, my);
1992 off = (
FFMAX(-my_min, my_max) + 63) >> 6;
2001 int16_t *
block,
int i,
uint8_t *dest,
int line_size,
int qscale)
2017 int16_t *
block,
int i,
uint8_t *dest,
int line_size,
int qscale)
2039 memset(s->
ac_val[0][xy ], 0, 32 *
sizeof(int16_t));
2040 memset(s->
ac_val[0][xy + wrap], 0, 32 *
sizeof(int16_t));
2053 memset(s->
ac_val[1][xy], 0, 16 *
sizeof(int16_t));
2054 memset(s->
ac_val[2][xy], 0, 16 *
sizeof(int16_t));
2089 for(j=0; j<64; j++){
2113 uint8_t *dest_y, *dest_cb, *dest_cr;
2114 int dct_linesize, dct_offset;
2120 const int block_size = 8;
2139 dct_offset = s->
interlaced_dct ? linesize : linesize * block_size;
2143 dest_cb= s->
dest[1];
2144 dest_cr= s->
dest[2];
2215 add_dct(s, block[0], 0, dest_y , dct_linesize);
2216 add_dct(s, block[1], 1, dest_y + block_size, dct_linesize);
2217 add_dct(s, block[2], 2, dest_y + dct_offset , dct_linesize);
2218 add_dct(s, block[3], 3, dest_y + dct_offset + block_size, dct_linesize);
2222 add_dct(s, block[4], 4, dest_cb, uvlinesize);
2223 add_dct(s, block[5], 5, dest_cr, uvlinesize);
2229 add_dct(s, block[4], 4, dest_cb, dct_linesize);
2230 add_dct(s, block[5], 5, dest_cr, dct_linesize);
2231 add_dct(s, block[6], 6, dest_cb+dct_offset, dct_linesize);
2232 add_dct(s, block[7], 7, dest_cr+dct_offset, dct_linesize);
2234 add_dct(s, block[8], 8, dest_cb+8, dct_linesize);
2235 add_dct(s, block[9], 9, dest_cr+8, dct_linesize);
2236 add_dct(s, block[10], 10, dest_cb+8+dct_offset, dct_linesize);
2237 add_dct(s, block[11], 11, dest_cr+8+dct_offset, dct_linesize);
2249 put_dct(s, block[1], 1, dest_y + block_size, dct_linesize, s->
qscale);
2250 put_dct(s, block[2], 2, dest_y + dct_offset , dct_linesize, s->
qscale);
2251 put_dct(s, block[3], 3, dest_y + dct_offset + block_size, dct_linesize, s->
qscale);
2268 s->
dsp.
idct_put(dest_y + block_size, dct_linesize, block[1]);
2269 s->
dsp.
idct_put(dest_y + dct_offset , dct_linesize, block[2]);
2270 s->
dsp.
idct_put(dest_y + dct_offset + block_size, dct_linesize, block[3]);
2283 s->
dsp.
idct_put(dest_cb + dct_offset, dct_linesize, block[6]);
2284 s->
dsp.
idct_put(dest_cr + dct_offset, dct_linesize, block[7]);
2286 s->
dsp.
idct_put(dest_cb + 8, dct_linesize, block[8]);
2287 s->
dsp.
idct_put(dest_cr + 8, dct_linesize, block[9]);
2288 s->
dsp.
idct_put(dest_cb + 8 + dct_offset, dct_linesize, block[10]);
2289 s->
dsp.
idct_put(dest_cr + 8 + dct_offset, dct_linesize, block[11]);
2317 Picture *last,
int y,
int h,
int picture_structure,
2322 const int field_pic = picture_structure !=
PICT_FRAME;
2353 offset[2]= (y >> vshift) * src->
linesize[1];
2361 y, picture_structure, h);
2375 const int mb_size= 4;
2392 s->
dest[0] += s->
mb_y * linesize << mb_size;
2396 s->
dest[0] += (s->
mb_y>>1) * linesize << mb_size;
2420 for(i=0; i<=last; i++){
2421 const int j= scantable[i];
2426 for(i=0; i<=last; i++){
2427 const int j= scantable[i];
2428 const int perm_j= permutation[j];
2429 block[perm_j]= temp[j];
2467 else if (qscale > 31)
2483 #if CONFIG_ERROR_RESILIENCE