comparison msmpeg4.c @ 5178:b215d5a5fa9a libavcodec

static (inline) X => ff_X patch by Denis Fortin: \fortin nerim net/ original thread: [FFmpeg-devel] [PATCH] wmv3 encoder : msmpeg4.c changes date: 06/19/2007 09:54 PM
author benoit
date Thu, 21 Jun 2007 07:53:48 +0000
parents 0244bba24b43
children 04bbac6e28df
comparison
equal deleted inserted replaced
5177:ea61020e5e87 5178:b215d5a5fa9a
59 #define DEFAULT_INTER_INDEX 3 59 #define DEFAULT_INTER_INDEX 3
60 60
61 static uint32_t v2_dc_lum_table[512][2]; 61 static uint32_t v2_dc_lum_table[512][2];
62 static uint32_t v2_dc_chroma_table[512][2]; 62 static uint32_t v2_dc_chroma_table[512][2];
63 63
64 static inline void msmpeg4_encode_block(MpegEncContext * s, DCTELEM * block, int n); 64 void ff_msmpeg4_encode_block(MpegEncContext * s, DCTELEM * block, int n);
65 static inline int msmpeg4_decode_block(MpegEncContext * s, DCTELEM * block, 65 static inline int msmpeg4_decode_block(MpegEncContext * s, DCTELEM * block,
66 int n, int coded, const uint8_t *scantable); 66 int n, int coded, const uint8_t *scantable);
67 static int msmpeg4_decode_dc(MpegEncContext * s, int n, int *dir_ptr); 67 static int msmpeg4_decode_dc(MpegEncContext * s, int n, int *dir_ptr);
68 static int msmpeg4_decode_motion(MpegEncContext * s, 68 static int msmpeg4_decode_motion(MpegEncContext * s,
69 int *mx_ptr, int *my_ptr); 69 int *mx_ptr, int *my_ptr);
245 size++; 245 size++;
246 } 246 }
247 return size; 247 return size;
248 } 248 }
249 249
250 static void find_best_tables(MpegEncContext * s) 250 void ff_find_best_tables(MpegEncContext * s)
251 { 251 {
252 int i; 252 int i;
253 int best =-1, best_size =9999999; 253 int best =-1, best_size =9999999;
254 int chroma_best=-1, best_chroma_size=9999999; 254 int chroma_best=-1, best_chroma_size=9999999;
255 255
315 } 315 }
316 316
317 /* write MSMPEG4 compatible frame header */ 317 /* write MSMPEG4 compatible frame header */
318 void msmpeg4_encode_picture_header(MpegEncContext * s, int picture_number) 318 void msmpeg4_encode_picture_header(MpegEncContext * s, int picture_number)
319 { 319 {
320 find_best_tables(s); 320 ff_find_best_tables(s);
321 321
322 align_put_bits(&s->pb); 322 align_put_bits(&s->pb);
323 put_bits(&s->pb, 2, s->pict_type - 1); 323 put_bits(&s->pb, 2, s->pict_type - 1);
324 324
325 put_bits(&s->pb, 5, s->qscale); 325 put_bits(&s->pb, 5, s->qscale);
532 } 532 }
533 533
534 s->mv_bits += get_bits_diff(s); 534 s->mv_bits += get_bits_diff(s);
535 535
536 for (i = 0; i < 6; i++) { 536 for (i = 0; i < 6; i++) {
537 msmpeg4_encode_block(s, block[i], i); 537 ff_msmpeg4_encode_block(s, block[i], i);
538 } 538 }
539 s->p_tex_bits += get_bits_diff(s); 539 s->p_tex_bits += get_bits_diff(s);
540 } else { 540 } else {
541 /* compute cbp */ 541 /* compute cbp */
542 cbp = 0; 542 cbp = 0;
591 } 591 }
592 } 592 }
593 s->misc_bits += get_bits_diff(s); 593 s->misc_bits += get_bits_diff(s);
594 594
595 for (i = 0; i < 6; i++) { 595 for (i = 0; i < 6; i++) {
596 msmpeg4_encode_block(s, block[i], i); 596 ff_msmpeg4_encode_block(s, block[i], i);
597 } 597 }
598 s->i_tex_bits += get_bits_diff(s); 598 s->i_tex_bits += get_bits_diff(s);
599 s->i_count++; 599 s->i_count++;
600 } 600 }
601 } 601 }
850 } 850 }
851 851
852 /* Encoding of a block. Very similar to MPEG4 except for a different 852 /* Encoding of a block. Very similar to MPEG4 except for a different
853 escape coding (same as H263) and more vlc tables. 853 escape coding (same as H263) and more vlc tables.
854 */ 854 */
855 static inline void msmpeg4_encode_block(MpegEncContext * s, DCTELEM * block, int n) 855 void ff_msmpeg4_encode_block(MpegEncContext * s, DCTELEM * block, int n)
856 { 856 {
857 int level, run, last, i, j, last_index; 857 int level, run, last, i, j, last_index;
858 int last_non_zero, sign, slevel; 858 int last_non_zero, sign, slevel;
859 int code, run_diff, dc_pred_dir; 859 int code, run_diff, dc_pred_dir;
860 const RLTable *rl; 860 const RLTable *rl;