diff options
author | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2002-11-11 13:45:34 +0000 |
---|---|---|
committer | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2002-11-11 13:45:34 +0000 |
commit | 810ddddbc0d5f6587b9154115fa60d546d728310 (patch) | |
tree | 67256930a6cd947fb3f09b070b19dedd4fbbcd10 /src/libffmpeg/libavcodec/mpegvideo.h | |
parent | e38a8cca2c6be40954a44f167f7cc9fac0813ede (diff) | |
download | xine-lib-810ddddbc0d5f6587b9154115fa60d546d728310.tar.gz xine-lib-810ddddbc0d5f6587b9154115fa60d546d728310.tar.bz2 |
sync ffmpeg
- add wma decoder
- fix mmx macro
- remove changes from fdct_mmx.c (it should work fine now with the mmx macro fix)
CVS patchset: 3234
CVS date: 2002/11/11 13:45:34
Diffstat (limited to 'src/libffmpeg/libavcodec/mpegvideo.h')
-rw-r--r-- | src/libffmpeg/libavcodec/mpegvideo.h | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/src/libffmpeg/libavcodec/mpegvideo.h b/src/libffmpeg/libavcodec/mpegvideo.h index d50d1ad0e..9b344ee7a 100644 --- a/src/libffmpeg/libavcodec/mpegvideo.h +++ b/src/libffmpeg/libavcodec/mpegvideo.h @@ -103,8 +103,21 @@ typedef struct ScanTable{ const UINT8 *scantable; UINT8 permutated[64]; UINT8 raster_end[64]; +#ifdef ARCH_POWERPC + /* Used by dct_quantise_alitvec to find last-non-zero */ + UINT8 __align8 inverse[64]; +#endif } ScanTable; +typedef struct ParseContext{ + UINT8 *buffer; + int index; + int last_index; + int buffer_size; + int state; + int frame_start_found; +} ParseContext; + typedef struct MpegEncContext { struct AVCodecContext *avctx; /* the following parameters must be initialized before encoding */ @@ -187,7 +200,10 @@ typedef struct MpegEncContext { UINT8 *mbintra_table; /* used to avoid setting {ac, dc, cbp}-pred stuff to zero on inter MB decoding */ UINT8 *cbp_table; /* used to store cbp, ac_pred for partitioned decoding */ UINT8 *pred_dir_table; /* used to store pred_dir for partitioned decoding */ - INT8 *qscale_table; /* used to store qscale for partitioned decoding (& postprocessing FIXME export) */ + INT8 *qscale_table; /* used to store qscale */ + INT8 *aux_qscale_table; + INT8 *next_qscale_table; + INT8 *last_qscale_table; //FIXME move these into some picture struct (MpegEncContext.aux.qscale_table[]) UINT8 *edge_emu_buffer; int input_qscale; /* qscale prior to reordering of frames */ @@ -205,6 +221,7 @@ typedef struct MpegEncContext { int unrestricted_mv; int h263_long_vectors; /* use horrible h263v1 long vector mode */ + DSPContext dsp; /* pointers for accelerated dsp fucntions */ int f_code; /* forward MV resolution */ int b_code; /* backward MV resolution for B Frames (mpeg4) */ INT16 (*motion_val)[2]; /* used for MV prediction (4MV per MB) */ @@ -284,8 +301,8 @@ typedef struct MpegEncContext { int min_qcoeff; /* minimum encodable coefficient */ int max_qcoeff; /* maximum encodable coefficient */ /* precomputed matrix (combine qscale and DCT renorm) */ - int q_intra_matrix[32][64]; - int q_inter_matrix[32][64]; + int __align8 q_intra_matrix[32][64]; + int __align8 q_inter_matrix[32][64]; /* identical to the above but for MMX & these are not permutated */ UINT16 __align8 q_intra_matrix16[32][64]; UINT16 __align8 q_inter_matrix16[32][64]; @@ -293,7 +310,7 @@ typedef struct MpegEncContext { UINT16 __align8 q_inter_matrix16_bias[32][64]; int block_last_index[6]; /* last non zero coefficient in block */ /* scantables */ - ScanTable intra_scantable; + ScanTable __align8 intra_scantable; ScanTable intra_h_scantable; ScanTable intra_v_scantable; ScanTable inter_scantable; // if inter == intra then intra should be used to reduce tha cache usage @@ -344,6 +361,8 @@ typedef struct MpegEncContext { int mb_num_left; /* number of MBs left in this video packet (for partitioned Slices only)*/ int next_p_frame_damaged; /* set if the next p frame is damaged, to avoid showing trashed b frames */ int error_resilience; + + ParseContext parse_context; /* H.263 specific */ int gob_number; @@ -532,6 +551,9 @@ void MPV_common_init_mlib(MpegEncContext *s); #ifdef HAVE_MMI void MPV_common_init_mmi(MpegEncContext *s); #endif +#ifdef ARCH_POWERPC +void MPV_common_init_ppc(MpegEncContext *s); +#endif extern void (*draw_edges)(UINT8 *buf, int wrap, int width, int height, int w); void ff_conceal_past_errors(MpegEncContext *s, int conceal_all); void ff_copy_bits(PutBitContext *pb, UINT8 *src, int length); |