Mercurial > libavcodec.hg
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; |