Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 83902 Details for
Bug 119014
xine-lib-1.1.1-r3 fails with compiler error in h263.cc : mpeg4_decode_partition_a
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
fix to move one static inline function up before it is called.
msmpeg4.c.patch (text/plain), 12.49 KB, created by
Aakash
on 2006-04-04 11:07:02 UTC
(
hide
)
Description:
fix to move one static inline function up before it is called.
Filename:
MIME Type:
Creator:
Aakash
Created:
2006-04-04 11:07:02 UTC
Size:
12.49 KB
patch
obsolete
>--- msmpeg4.c 2006-04-04 23:09:53.000000000 +0530 >+++ msmpeg4.c.fix 2006-04-04 23:08:26.000000000 +0530 >@@ -1479,186 +1479,6 @@ > return val; > } > >-static int msmpeg4v12_decode_mb(MpegEncContext *s, DCTELEM block[6][64]) >-{ >- int cbp, code, i; >- >- if (s->pict_type == P_TYPE) { >- if (s->use_skip_mb_code) { >- if (get_bits1(&s->gb)) { >- /* skip mb */ >- s->mb_intra = 0; >- for(i=0;i<6;i++) >- s->block_last_index[i] = -1; >- s->mv_dir = MV_DIR_FORWARD; >- s->mv_type = MV_TYPE_16X16; >- s->mv[0][0][0] = 0; >- s->mv[0][0][1] = 0; >- s->mb_skipped = 1; >- return 0; >- } >- } >- >- if(s->msmpeg4_version==2) >- code = get_vlc2(&s->gb, v2_mb_type_vlc.table, V2_MB_TYPE_VLC_BITS, 1); >- else >- code = get_vlc2(&s->gb, v1_inter_cbpc_vlc.table, V1_INTER_CBPC_VLC_BITS, 3); >- if(code<0 || code>7){ >- av_log(s->avctx, AV_LOG_ERROR, "cbpc %d invalid at %d %d\n", code, s->mb_x, s->mb_y); >- return -1; >- } >- >- s->mb_intra = code >>2; >- >- cbp = code & 0x3; >- } else { >- s->mb_intra = 1; >- if(s->msmpeg4_version==2) >- cbp= get_vlc2(&s->gb, v2_intra_cbpc_vlc.table, V2_INTRA_CBPC_VLC_BITS, 1); >- else >- cbp= get_vlc2(&s->gb, v1_intra_cbpc_vlc.table, V1_INTRA_CBPC_VLC_BITS, 1); >- if(cbp<0 || cbp>3){ >- av_log(s->avctx, AV_LOG_ERROR, "cbpc %d invalid at %d %d\n", cbp, s->mb_x, s->mb_y); >- return -1; >- } >- } >- >- if (!s->mb_intra) { >- int mx, my, cbpy; >- >- cbpy= get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1); >- if(cbpy<0){ >- av_log(s->avctx, AV_LOG_ERROR, "cbpy %d invalid at %d %d\n", cbp, s->mb_x, s->mb_y); >- return -1; >- } >- >- cbp|= cbpy<<2; >- if(s->msmpeg4_version==1 || (cbp&3) != 3) cbp^= 0x3C; >- >- h263_pred_motion(s, 0, 0, &mx, &my); >- mx= msmpeg4v2_decode_motion(s, mx, 1); >- my= msmpeg4v2_decode_motion(s, my, 1); >- >- s->mv_dir = MV_DIR_FORWARD; >- s->mv_type = MV_TYPE_16X16; >- s->mv[0][0][0] = mx; >- s->mv[0][0][1] = my; >- } else { >- if(s->msmpeg4_version==2){ >- s->ac_pred = get_bits1(&s->gb); >- cbp|= get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1)<<2; //FIXME check errors >- } else{ >- s->ac_pred = 0; >- cbp|= get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1)<<2; //FIXME check errors >- if(s->pict_type==P_TYPE) cbp^=0x3C; >- } >- } >- >- s->dsp.clear_blocks(s->block[0]); >- for (i = 0; i < 6; i++) { >- if (msmpeg4_decode_block(s, block[i], i, (cbp >> (5 - i)) & 1, NULL) < 0) >- { >- av_log(s->avctx, AV_LOG_ERROR, "\nerror while decoding block: %d x %d (%d)\n", s->mb_x, s->mb_y, i); >- return -1; >- } >- } >- return 0; >-} >- >-static int msmpeg4v34_decode_mb(MpegEncContext *s, DCTELEM block[6][64]) >-{ >- int cbp, code, i; >- uint8_t *coded_val; >- uint32_t * const mb_type_ptr= &s->current_picture.mb_type[ s->mb_x + s->mb_y*s->mb_stride ]; >- >- if (s->pict_type == P_TYPE) { >- set_stat(ST_INTER_MB); >- if (s->use_skip_mb_code) { >- if (get_bits1(&s->gb)) { >- /* skip mb */ >- s->mb_intra = 0; >- for(i=0;i<6;i++) >- s->block_last_index[i] = -1; >- s->mv_dir = MV_DIR_FORWARD; >- s->mv_type = MV_TYPE_16X16; >- s->mv[0][0][0] = 0; >- s->mv[0][0][1] = 0; >- s->mb_skipped = 1; >- *mb_type_ptr = MB_TYPE_SKIP | MB_TYPE_L0 | MB_TYPE_16x16; >- >- return 0; >- } >- } >- >- code = get_vlc2(&s->gb, mb_non_intra_vlc[DEFAULT_INTER_INDEX].table, MB_NON_INTRA_VLC_BITS, 3); >- if (code < 0) >- return -1; >- //s->mb_intra = (code & 0x40) ? 0 : 1; >- s->mb_intra = (~code & 0x40) >> 6; >- >- cbp = code & 0x3f; >- } else { >- set_stat(ST_INTRA_MB); >- s->mb_intra = 1; >- code = get_vlc2(&s->gb, ff_msmp4_mb_i_vlc.table, MB_INTRA_VLC_BITS, 2); >- if (code < 0) >- return -1; >- /* predict coded block pattern */ >- cbp = 0; >- for(i=0;i<6;i++) { >- int val = ((code >> (5 - i)) & 1); >- if (i < 4) { >- int pred = coded_block_pred(s, i, &coded_val); >- val = val ^ pred; >- *coded_val = val; >- } >- cbp |= val << (5 - i); >- } >- } >- >- if (!s->mb_intra) { >- int mx, my; >-//printf("P at %d %d\n", s->mb_x, s->mb_y); >- if(s->per_mb_rl_table && cbp){ >- s->rl_table_index = decode012(&s->gb); >- s->rl_chroma_table_index = s->rl_table_index; >- } >- set_stat(ST_MV); >- h263_pred_motion(s, 0, 0, &mx, &my); >- if (msmpeg4_decode_motion(s, &mx, &my) < 0) >- return -1; >- s->mv_dir = MV_DIR_FORWARD; >- s->mv_type = MV_TYPE_16X16; >- s->mv[0][0][0] = mx; >- s->mv[0][0][1] = my; >- *mb_type_ptr = MB_TYPE_L0 | MB_TYPE_16x16; >- } else { >-//printf("I at %d %d %d %06X\n", s->mb_x, s->mb_y, ((cbp&3)? 1 : 0) +((cbp&0x3C)? 2 : 0), show_bits(&s->gb, 24)); >- set_stat(ST_INTRA_MB); >- s->ac_pred = get_bits1(&s->gb); >- *mb_type_ptr = MB_TYPE_INTRA; >- if(s->inter_intra_pred){ >- s->h263_aic_dir= get_vlc2(&s->gb, inter_intra_vlc.table, INTER_INTRA_VLC_BITS, 1); >-// printf("%d%d %d %d/", s->ac_pred, s->h263_aic_dir, s->mb_x, s->mb_y); >- } >- if(s->per_mb_rl_table && cbp){ >- s->rl_table_index = decode012(&s->gb); >- s->rl_chroma_table_index = s->rl_table_index; >- } >- } >- >- s->dsp.clear_blocks(s->block[0]); >- for (i = 0; i < 6; i++) { >- if (msmpeg4_decode_block(s, block[i], i, (cbp >> (5 - i)) & 1, NULL) < 0) >- { >- av_log(s->avctx, AV_LOG_ERROR, "\nerror while decoding block: %d x %d (%d)\n", s->mb_x, s->mb_y, i); >- return -1; >- } >- } >- >- return 0; >-} >-//#define ERROR_DETAILS > static inline int msmpeg4_decode_block(MpegEncContext * s, DCTELEM * block, > int n, int coded, const uint8_t *scan_table) > { >@@ -1909,6 +1729,187 @@ > return 0; > } > >+static int msmpeg4v12_decode_mb(MpegEncContext *s, DCTELEM block[6][64]) >+{ >+ int cbp, code, i; >+ >+ if (s->pict_type == P_TYPE) { >+ if (s->use_skip_mb_code) { >+ if (get_bits1(&s->gb)) { >+ /* skip mb */ >+ s->mb_intra = 0; >+ for(i=0;i<6;i++) >+ s->block_last_index[i] = -1; >+ s->mv_dir = MV_DIR_FORWARD; >+ s->mv_type = MV_TYPE_16X16; >+ s->mv[0][0][0] = 0; >+ s->mv[0][0][1] = 0; >+ s->mb_skipped = 1; >+ return 0; >+ } >+ } >+ >+ if(s->msmpeg4_version==2) >+ code = get_vlc2(&s->gb, v2_mb_type_vlc.table, V2_MB_TYPE_VLC_BITS, 1); >+ else >+ code = get_vlc2(&s->gb, v1_inter_cbpc_vlc.table, V1_INTER_CBPC_VLC_BITS, 3); >+ if(code<0 || code>7){ >+ av_log(s->avctx, AV_LOG_ERROR, "cbpc %d invalid at %d %d\n", code, s->mb_x, s->mb_y); >+ return -1; >+ } >+ >+ s->mb_intra = code >>2; >+ >+ cbp = code & 0x3; >+ } else { >+ s->mb_intra = 1; >+ if(s->msmpeg4_version==2) >+ cbp= get_vlc2(&s->gb, v2_intra_cbpc_vlc.table, V2_INTRA_CBPC_VLC_BITS, 1); >+ else >+ cbp= get_vlc2(&s->gb, v1_intra_cbpc_vlc.table, V1_INTRA_CBPC_VLC_BITS, 1); >+ if(cbp<0 || cbp>3){ >+ av_log(s->avctx, AV_LOG_ERROR, "cbpc %d invalid at %d %d\n", cbp, s->mb_x, s->mb_y); >+ return -1; >+ } >+ } >+ >+ if (!s->mb_intra) { >+ int mx, my, cbpy; >+ >+ cbpy= get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1); >+ if(cbpy<0){ >+ av_log(s->avctx, AV_LOG_ERROR, "cbpy %d invalid at %d %d\n", cbp, s->mb_x, s->mb_y); >+ return -1; >+ } >+ >+ cbp|= cbpy<<2; >+ if(s->msmpeg4_version==1 || (cbp&3) != 3) cbp^= 0x3C; >+ >+ h263_pred_motion(s, 0, 0, &mx, &my); >+ mx= msmpeg4v2_decode_motion(s, mx, 1); >+ my= msmpeg4v2_decode_motion(s, my, 1); >+ >+ s->mv_dir = MV_DIR_FORWARD; >+ s->mv_type = MV_TYPE_16X16; >+ s->mv[0][0][0] = mx; >+ s->mv[0][0][1] = my; >+ } else { >+ if(s->msmpeg4_version==2){ >+ s->ac_pred = get_bits1(&s->gb); >+ cbp|= get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1)<<2; //FIXME check errors >+ } else{ >+ s->ac_pred = 0; >+ cbp|= get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1)<<2; //FIXME check errors >+ if(s->pict_type==P_TYPE) cbp^=0x3C; >+ } >+ } >+ >+ s->dsp.clear_blocks(s->block[0]); >+ for (i = 0; i < 6; i++) { >+ if (msmpeg4_decode_block(s, block[i], i, (cbp >> (5 - i)) & 1, NULL) < 0) >+ { >+ av_log(s->avctx, AV_LOG_ERROR, "\nerror while decoding block: %d x %d (%d)\n", s->mb_x, s->mb_y, i); >+ return -1; >+ } >+ } >+ return 0; >+} >+ >+static int msmpeg4v34_decode_mb(MpegEncContext *s, DCTELEM block[6][64]) >+{ >+ int cbp, code, i; >+ uint8_t *coded_val; >+ uint32_t * const mb_type_ptr= &s->current_picture.mb_type[ s->mb_x + s->mb_y*s->mb_stride ]; >+ >+ if (s->pict_type == P_TYPE) { >+ set_stat(ST_INTER_MB); >+ if (s->use_skip_mb_code) { >+ if (get_bits1(&s->gb)) { >+ /* skip mb */ >+ s->mb_intra = 0; >+ for(i=0;i<6;i++) >+ s->block_last_index[i] = -1; >+ s->mv_dir = MV_DIR_FORWARD; >+ s->mv_type = MV_TYPE_16X16; >+ s->mv[0][0][0] = 0; >+ s->mv[0][0][1] = 0; >+ s->mb_skipped = 1; >+ *mb_type_ptr = MB_TYPE_SKIP | MB_TYPE_L0 | MB_TYPE_16x16; >+ >+ return 0; >+ } >+ } >+ >+ code = get_vlc2(&s->gb, mb_non_intra_vlc[DEFAULT_INTER_INDEX].table, MB_NON_INTRA_VLC_BITS, 3); >+ if (code < 0) >+ return -1; >+ //s->mb_intra = (code & 0x40) ? 0 : 1; >+ s->mb_intra = (~code & 0x40) >> 6; >+ >+ cbp = code & 0x3f; >+ } else { >+ set_stat(ST_INTRA_MB); >+ s->mb_intra = 1; >+ code = get_vlc2(&s->gb, ff_msmp4_mb_i_vlc.table, MB_INTRA_VLC_BITS, 2); >+ if (code < 0) >+ return -1; >+ /* predict coded block pattern */ >+ cbp = 0; >+ for(i=0;i<6;i++) { >+ int val = ((code >> (5 - i)) & 1); >+ if (i < 4) { >+ int pred = coded_block_pred(s, i, &coded_val); >+ val = val ^ pred; >+ *coded_val = val; >+ } >+ cbp |= val << (5 - i); >+ } >+ } >+ >+ if (!s->mb_intra) { >+ int mx, my; >+//printf("P at %d %d\n", s->mb_x, s->mb_y); >+ if(s->per_mb_rl_table && cbp){ >+ s->rl_table_index = decode012(&s->gb); >+ s->rl_chroma_table_index = s->rl_table_index; >+ } >+ set_stat(ST_MV); >+ h263_pred_motion(s, 0, 0, &mx, &my); >+ if (msmpeg4_decode_motion(s, &mx, &my) < 0) >+ return -1; >+ s->mv_dir = MV_DIR_FORWARD; >+ s->mv_type = MV_TYPE_16X16; >+ s->mv[0][0][0] = mx; >+ s->mv[0][0][1] = my; >+ *mb_type_ptr = MB_TYPE_L0 | MB_TYPE_16x16; >+ } else { >+//printf("I at %d %d %d %06X\n", s->mb_x, s->mb_y, ((cbp&3)? 1 : 0) +((cbp&0x3C)? 2 : 0), show_bits(&s->gb, 24)); >+ set_stat(ST_INTRA_MB); >+ s->ac_pred = get_bits1(&s->gb); >+ *mb_type_ptr = MB_TYPE_INTRA; >+ if(s->inter_intra_pred){ >+ s->h263_aic_dir= get_vlc2(&s->gb, inter_intra_vlc.table, INTER_INTRA_VLC_BITS, 1); >+// printf("%d%d %d %d/", s->ac_pred, s->h263_aic_dir, s->mb_x, s->mb_y); >+ } >+ if(s->per_mb_rl_table && cbp){ >+ s->rl_table_index = decode012(&s->gb); >+ s->rl_chroma_table_index = s->rl_table_index; >+ } >+ } >+ >+ s->dsp.clear_blocks(s->block[0]); >+ for (i = 0; i < 6; i++) { >+ if (msmpeg4_decode_block(s, block[i], i, (cbp >> (5 - i)) & 1, NULL) < 0) >+ { >+ av_log(s->avctx, AV_LOG_ERROR, "\nerror while decoding block: %d x %d (%d)\n", s->mb_x, s->mb_y, i); >+ return -1; >+ } >+ } >+ >+ return 0; >+} >+//#define ERROR_DETAILS >+ > static int msmpeg4_decode_dc(MpegEncContext * s, int n, int *dir_ptr) > { > int level, pred;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 119014
:
83898
|
83901
| 83902