comparison msmpeg4.c @ 1064:b32afefe7d33 libavcodec

* UINTX -> uintx_t INTX -> intx_t
author kabi
date Tue, 11 Feb 2003 16:35:48 +0000
parents fdeac9642346
children 6da5ae9ee199
comparison
equal deleted inserted replaced
1063:fdeac9642346 1064:b32afefe7d33
48 #define II_BITRATE 128*1024 48 #define II_BITRATE 128*1024
49 #define MBAC_BITRATE 50*1024 49 #define MBAC_BITRATE 50*1024
50 50
51 #define DEFAULT_INTER_INDEX 3 51 #define DEFAULT_INTER_INDEX 3
52 52
53 static UINT32 v2_dc_lum_table[512][2]; 53 static uint32_t v2_dc_lum_table[512][2];
54 static UINT32 v2_dc_chroma_table[512][2]; 54 static uint32_t v2_dc_chroma_table[512][2];
55 55
56 static inline void msmpeg4_encode_block(MpegEncContext * s, DCTELEM * block, int n); 56 static inline void msmpeg4_encode_block(MpegEncContext * s, DCTELEM * block, int n);
57 static inline int msmpeg4_decode_block(MpegEncContext * s, DCTELEM * block, 57 static inline int msmpeg4_decode_block(MpegEncContext * s, DCTELEM * block,
58 int n, int coded, const uint8_t *scantable); 58 int n, int coded, const uint8_t *scantable);
59 static int msmpeg4_decode_dc(MpegEncContext * s, int n, int *dir_ptr); 59 static int msmpeg4_decode_dc(MpegEncContext * s, int n, int *dir_ptr);
65 static int get_size_of_code(MpegEncContext * s, RLTable *rl, int last, int run, int level, int intra); 65 static int get_size_of_code(MpegEncContext * s, RLTable *rl, int last, int run, int level, int intra);
66 static int msmpeg4v12_decode_mb(MpegEncContext *s, DCTELEM block[6][64]); 66 static int msmpeg4v12_decode_mb(MpegEncContext *s, DCTELEM block[6][64]);
67 static int msmpeg4v34_decode_mb(MpegEncContext *s, DCTELEM block[6][64]); 67 static int msmpeg4v34_decode_mb(MpegEncContext *s, DCTELEM block[6][64]);
68 static int wmv2_decode_mb(MpegEncContext *s, DCTELEM block[6][64]); 68 static int wmv2_decode_mb(MpegEncContext *s, DCTELEM block[6][64]);
69 69
70 extern UINT32 inverse[256]; 70 extern uint32_t inverse[256];
71 71
72 72
73 #ifdef DEBUG 73 #ifdef DEBUG
74 int intra_count = 0; 74 int intra_count = 0;
75 int frame_count = 0; 75 int frame_count = 0;
76 #endif 76 #endif
77 77
78 #include "msmpeg4data.h" 78 #include "msmpeg4data.h"
79 79
80 static UINT8 rl_length[NB_RL_TABLES][MAX_LEVEL+1][MAX_RUN+1][2]; 80 static uint8_t rl_length[NB_RL_TABLES][MAX_LEVEL+1][MAX_RUN+1][2];
81 81
82 #ifdef STATS 82 #ifdef STATS
83 83
84 const char *st_names[ST_NB] = { 84 const char *st_names[ST_NB] = {
85 "unknown", 85 "unknown",
188 /* build the table which associate a (x,y) motion vector to a vlc */ 188 /* build the table which associate a (x,y) motion vector to a vlc */
189 static void init_mv_table(MVTable *tab) 189 static void init_mv_table(MVTable *tab)
190 { 190 {
191 int i, x, y; 191 int i, x, y;
192 192
193 tab->table_mv_index = av_malloc(sizeof(UINT16) * 4096); 193 tab->table_mv_index = av_malloc(sizeof(uint16_t) * 4096);
194 /* mark all entries as not used */ 194 /* mark all entries as not used */
195 for(i=0;i<4096;i++) 195 for(i=0;i<4096;i++)
196 tab->table_mv_index[i] = tab->n; 196 tab->table_mv_index[i] = tab->n;
197 197
198 for(i=0;i<tab->n;i++) { 198 for(i=0;i<tab->n;i++) {
432 put_bits(&s->pb, 1, s->flipflop_rounding); 432 put_bits(&s->pb, 1, s->flipflop_rounding);
433 } 433 }
434 } 434 }
435 435
436 /* predict coded block */ 436 /* predict coded block */
437 static inline int coded_block_pred(MpegEncContext * s, int n, UINT8 **coded_block_ptr) 437 static inline int coded_block_pred(MpegEncContext * s, int n, uint8_t **coded_block_ptr)
438 { 438 {
439 int xy, wrap, pred, a, b, c; 439 int xy, wrap, pred, a, b, c;
440 440
441 xy = s->block_index[n]; 441 xy = s->block_index[n];
442 wrap = s->block_wrap[0]; 442 wrap = s->block_wrap[0];
516 DCTELEM block[6][64], 516 DCTELEM block[6][64],
517 int motion_x, int motion_y) 517 int motion_x, int motion_y)
518 { 518 {
519 int cbp, coded_cbp, i; 519 int cbp, coded_cbp, i;
520 int pred_x, pred_y; 520 int pred_x, pred_y;
521 UINT8 *coded_block; 521 uint8_t *coded_block;
522 522
523 handle_slices(s); 523 handle_slices(s);
524 524
525 if (!s->mb_intra) { 525 if (!s->mb_intra) {
526 /* compute cbp */ 526 /* compute cbp */
638 s->c_dc_scale = (s->qscale + 13)>>1; 638 s->c_dc_scale = (s->qscale + 13)>>1;
639 } 639 }
640 } 640 }
641 641
642 static inline int msmpeg4v1_pred_dc(MpegEncContext * s, int n, 642 static inline int msmpeg4v1_pred_dc(MpegEncContext * s, int n,
643 INT32 **dc_val_ptr) 643 int32_t **dc_val_ptr)
644 { 644 {
645 int i; 645 int i;
646 646
647 if (n < 4) { 647 if (n < 4) {
648 i= 0; 648 i= 0;
667 return (sum + (scale>>1))/scale; 667 return (sum + (scale>>1))/scale;
668 } 668 }
669 669
670 /* dir = 0: left, dir = 1: top prediction */ 670 /* dir = 0: left, dir = 1: top prediction */
671 static inline int msmpeg4_pred_dc(MpegEncContext * s, int n, 671 static inline int msmpeg4_pred_dc(MpegEncContext * s, int n,
672 UINT16 **dc_val_ptr, int *dir_ptr) 672 uint16_t **dc_val_ptr, int *dir_ptr)
673 { 673 {
674 int a, b, c, wrap, pred, scale; 674 int a, b, c, wrap, pred, scale;
675 INT16 *dc_val; 675 int16_t *dc_val;
676 676
677 /* find prediction */ 677 /* find prediction */
678 if (n < 4) { 678 if (n < 4) {
679 scale = s->y_dc_scale; 679 scale = s->y_dc_scale;
680 } else { 680 } else {
821 { 821 {
822 int sign, code; 822 int sign, code;
823 int pred; 823 int pred;
824 824
825 if(s->msmpeg4_version==1){ 825 if(s->msmpeg4_version==1){
826 INT32 *dc_val; 826 int32_t *dc_val;
827 pred = msmpeg4v1_pred_dc(s, n, &dc_val); 827 pred = msmpeg4v1_pred_dc(s, n, &dc_val);
828 828
829 /* update predictor */ 829 /* update predictor */
830 *dc_val= level; 830 *dc_val= level;
831 }else{ 831 }else{
832 UINT16 *dc_val; 832 uint16_t *dc_val;
833 pred = msmpeg4_pred_dc(s, n, &dc_val, dir_ptr); 833 pred = msmpeg4_pred_dc(s, n, &dc_val, dir_ptr);
834 834
835 /* update predictor */ 835 /* update predictor */
836 if (n < 4) { 836 if (n < 4) {
837 *dc_val = level * s->y_dc_scale; 837 *dc_val = level * s->y_dc_scale;
893 { 893 {
894 int level, run, last, i, j, last_index; 894 int level, run, last, i, j, last_index;
895 int last_non_zero, sign, slevel; 895 int last_non_zero, sign, slevel;
896 int code, run_diff, dc_pred_dir; 896 int code, run_diff, dc_pred_dir;
897 const RLTable *rl; 897 const RLTable *rl;
898 const UINT8 *scantable; 898 const uint8_t *scantable;
899 899
900 if (s->mb_intra) { 900 if (s->mb_intra) {
901 set_stat(ST_DC); 901 set_stat(ST_DC);
902 msmpeg4_encode_dc(s, block[0], n, &dc_pred_dir); 902 msmpeg4_encode_dc(s, block[0], n, &dc_pred_dir);
903 i = 1; 903 i = 1;
1542 } 1542 }
1543 1543
1544 static int msmpeg4v34_decode_mb(MpegEncContext *s, DCTELEM block[6][64]) 1544 static int msmpeg4v34_decode_mb(MpegEncContext *s, DCTELEM block[6][64])
1545 { 1545 {
1546 int cbp, code, i; 1546 int cbp, code, i;
1547 UINT8 *coded_val; 1547 uint8_t *coded_val;
1548 1548
1549 #ifdef PRINT_MB 1549 #ifdef PRINT_MB
1550 if(s->mb_x==0){ 1550 if(s->mb_x==0){
1551 printf("\n"); 1551 printf("\n");
1552 if(s->mb_y==0) printf("\n"); 1552 if(s->mb_y==0) printf("\n");
1937 level = -level; 1937 level = -level;
1938 } 1938 }
1939 } 1939 }
1940 1940
1941 if(s->msmpeg4_version==1){ 1941 if(s->msmpeg4_version==1){
1942 INT32 *dc_val; 1942 int32_t *dc_val;
1943 pred = msmpeg4v1_pred_dc(s, n, &dc_val); 1943 pred = msmpeg4v1_pred_dc(s, n, &dc_val);
1944 level += pred; 1944 level += pred;
1945 1945
1946 /* update predictor */ 1946 /* update predictor */
1947 *dc_val= level; 1947 *dc_val= level;
1948 }else{ 1948 }else{
1949 UINT16 *dc_val; 1949 uint16_t *dc_val;
1950 pred = msmpeg4_pred_dc(s, n, &dc_val, dir_ptr); 1950 pred = msmpeg4_pred_dc(s, n, &dc_val, dir_ptr);
1951 level += pred; 1951 level += pred;
1952 1952
1953 /* update predictor */ 1953 /* update predictor */
1954 if (n < 4) { 1954 if (n < 4) {