diff options
Diffstat (limited to 'src/libmpeg2/mpeg2_internal.h')
-rw-r--r-- | src/libmpeg2/mpeg2_internal.h | 294 |
1 files changed, 0 insertions, 294 deletions
diff --git a/src/libmpeg2/mpeg2_internal.h b/src/libmpeg2/mpeg2_internal.h deleted file mode 100644 index 345e73080..000000000 --- a/src/libmpeg2/mpeg2_internal.h +++ /dev/null @@ -1,294 +0,0 @@ -/* - * mpeg2_internal.h - * Copyright (C) 2000-2002 Michel Lespinasse <walken@zoy.org> - * Copyright (C) 1999-2000 Aaron Holtzman <aholtzma@ess.engr.uvic.ca> - * - * This file is part of mpeg2dec, a free MPEG-2 video stream decoder. - * See http://libmpeg2.sourceforge.net/ for updates. - * - * mpeg2dec is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * mpeg2dec is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef MPEG2_INTERNAL_H -#define MPEG2_INTERNAL_H - -#include "video_out.h" -#include "accel_xvmc.h" - -#ifdef ENABLE_ALTIVEC -#include <altivec.h> -#endif - -/* macroblock modes */ -#define MACROBLOCK_INTRA XINE_MACROBLOCK_INTRA -#define MACROBLOCK_PATTERN XINE_MACROBLOCK_PATTERN -#define MACROBLOCK_MOTION_BACKWARD XINE_MACROBLOCK_MOTION_BACKWARD -#define MACROBLOCK_MOTION_FORWARD XINE_MACROBLOCK_MOTION_FORWARD -#define MACROBLOCK_QUANT XINE_MACROBLOCK_QUANT -#define DCT_TYPE_INTERLACED XINE_MACROBLOCK_DCT_TYPE_INTERLACED - -/* motion_type */ -#define MOTION_TYPE_MASK (3*64) -#define MOTION_TYPE_BASE 64 -#define MC_FIELD (1*64) -#define MC_FRAME (2*64) -#define MC_16X8 (2*64) -#define MC_DMV (3*64) - -/* picture structure */ -#define TOP_FIELD VO_TOP_FIELD -#define BOTTOM_FIELD VO_BOTTOM_FIELD -#define FRAME_PICTURE VO_BOTH_FIELDS - -/* picture coding type (mpeg2 header) */ -#define I_TYPE 1 -#define P_TYPE 2 -#define B_TYPE 3 -#define D_TYPE 4 - -typedef struct motion_s { - uint8_t * ref[2][3]; - uint8_t ** ref2[2]; - int pmv[2][2]; - int f_code[2]; -} motion_t; - -typedef struct picture_s { - /* first, state that carries information from one macroblock to the */ - /* next inside a slice, and is never used outside of mpeg2_slice() */ - - /* DCT coefficients - should be kept aligned ! */ - int16_t DCTblock[64]; - - /* XvMC DCT block and macroblock data for XvMC acceleration */ - xine_macroblocks_t *mc; - int XvMC_mb_type; - int XvMC_mv_field_sel[2][2]; - int XvMC_x; - int XvMC_y; - int XvMC_motion_type; - int XvMC_dmvector[2]; - int XvMC_cbp; - int XvMC_dct_type; - - /* bit parsing stuff */ - uint32_t bitstream_buf; /* current 32 bit working set of buffer */ - int bitstream_bits; /* used bits in working set */ - uint8_t * bitstream_ptr; /* buffer with stream data */ - - uint8_t * dest[3]; - int pitches[3]; - int offset; - unsigned int limit_x; - unsigned int limit_y_16; - unsigned int limit_y_8; - unsigned int limit_y; - - /* Motion vectors */ - /* The f_ and b_ correspond to the forward and backward motion */ - /* predictors */ - motion_t b_motion; - motion_t f_motion; - - /* predictor for DC coefficients in intra blocks */ - int16_t dc_dct_pred[3]; - - int quantizer_scale; /* remove */ - int current_field; /* remove */ - int dmv_offset; /* remove */ - unsigned int v_offset; /* remove */ - - - /* now non-slice-specific information */ - - /* sequence header stuff */ - uint8_t intra_quantizer_matrix [64]; - uint8_t non_intra_quantizer_matrix [64]; - int load_intra_quantizer_matrix; - int load_non_intra_quantizer_matrix; - - /* The width and height of the picture snapped to macroblock units */ - int coded_picture_width; - int coded_picture_height; - - /* The width and height as it appears on header sequence */ - unsigned int display_width, display_height; - - /* picture header stuff */ - - /* what type of picture this is (I, P, B, D) */ - int picture_coding_type; - - int vbv_delay; - int low_delay; - - /* picture coding extension stuff */ - - /* quantization factor for intra dc coefficients */ - int intra_dc_precision; - /* top/bottom/both fields */ - int picture_structure; - /* bool to indicate all predictions are frame based */ - int frame_pred_frame_dct; - /* bool to indicate whether intra blocks have motion vectors */ - /* (for concealment) */ - int concealment_motion_vectors; - /* bit to indicate which quantization table to use */ - int q_scale_type; - /* bool to use different vlc tables */ - int intra_vlc_format; - /* used for DMV MC */ - int top_field_first; - - /* stuff derived from bitstream */ - - /* pointer to the zigzag scan we're supposed to be using */ - uint8_t * scan; - - struct vo_frame_s * current_frame; - struct vo_frame_s * forward_reference_frame; - struct vo_frame_s * backward_reference_frame; - - int frame_width, frame_height; - - int second_field; - - int mpeg1; - - int skip_non_intra_dct; - - /* these things are not needed by the decoder */ - /* this is a temporary interface, we will build a better one later. */ - int aspect_ratio_information; - int saved_aspect_ratio; - int frame_rate_code; - int progressive_sequence; - int repeat_first_field; - int progressive_frame; - int32_t frame_centre_horizontal_offset; - int32_t frame_centre_vertical_offset; - uint32_t video_format; - uint32_t colour_description; - uint32_t colour_primatives; - uint32_t transfer_characteristics; - uint32_t matrix_coefficients; - uint32_t display_horizontal_size; - uint32_t display_vertical_size; - uint32_t drop_frame_flag; - uint32_t time_code_hours; - uint32_t time_code_minutes; - uint32_t time_code_seconds; - uint32_t time_code_pictures; - uint32_t closed_gop; - uint32_t broken_link; - - int bitrate; - int frame_rate_ext_n; - int frame_rate_ext_d; - -} picture_t; - -typedef struct cpu_state_s { -#ifdef ARCH_PPC - uint8_t regv[12*16]; -#endif - int dummy; -} cpu_state_t; - -/* cpu_state.c */ -extern void (* mpeg2_cpu_state_save) (cpu_state_t * state); -extern void (* mpeg2_cpu_state_restore) (cpu_state_t * state); -void mpeg2_cpu_state_init (uint32_t mm_accel); - -/* header.c */ -extern uint8_t mpeg2_scan_norm[64]; -extern uint8_t mpeg2_scan_alt[64]; -void mpeg2_header_state_init (picture_t * picture); -int mpeg2_header_picture (picture_t * picture, uint8_t * buffer); -int mpeg2_header_sequence (picture_t * picture, uint8_t * buffer); -int mpeg2_header_extension (picture_t * picture, uint8_t * buffer); -int mpeg2_header_group_of_pictures (picture_t * picture, uint8_t * buffer); - -/* idct.c */ -extern void (* mpeg2_idct_copy) (int16_t * block, uint8_t * dest, int stride); -extern void (* mpeg2_idct_add) (int16_t * block, uint8_t * dest, int stride); -extern void (* mpeg2_idct) (int16_t * block); -extern void (* mpeg2_zero_block) (int16_t * block); -void mpeg2_idct_init (uint32_t mm_accel); - -/* idct_mlib.c */ -void mpeg2_idct_add_mlib (int16_t * block, uint8_t * dest, int stride); -void mpeg2_idct_copy_mlib_non_ieee (int16_t * block, uint8_t * dest, - int stride); -void mpeg2_idct_add_mlib_non_ieee (int16_t * block, uint8_t * dest, - int stride); -void mpeg2_idct_mlib (int16_t * block); - -/* idct_mmx.c */ -void mpeg2_idct_copy_mmxext (int16_t * block, uint8_t * dest, int stride); -void mpeg2_idct_add_mmxext (int16_t * block, uint8_t * dest, int stride); -void mpeg2_idct_mmxext (int16_t * block); -void mpeg2_idct_copy_mmx (int16_t * block, uint8_t * dest, int stride); -void mpeg2_idct_add_mmx (int16_t * block, uint8_t * dest, int stride); -void mpeg2_idct_mmx (int16_t * block); -void mpeg2_zero_block_mmx (int16_t * block); -void mpeg2_idct_mmx_init (void); - -/* idct_altivec.c */ -# ifdef ENABLE_ALTIVEC -void mpeg2_idct_copy_altivec (vector signed short * block, unsigned char * dest, - int stride); -void mpeg2_idct_add_altivec (vector signed short * block, unsigned char * dest, - int stride); -# else /* ! ENABLE_ALTIVEC */ -void mpeg2_idct_copy_altivec (signed short * block, unsigned char * dest, - int stride); -void mpeg2_idct_add_altivec (signed short * block, unsigned char * dest, - int stride); -# endif /* ENABLE_ALTIVEC */ -void mpeg2_idct_altivec_init (void); - -/* motion_comp.c */ -void mpeg2_mc_init (uint32_t mm_accel); - -typedef struct mpeg2_mc_s { - void (* put [8]) (uint8_t * dst, uint8_t *, int32_t, int32_t); - void (* avg [8]) (uint8_t * dst, uint8_t *, int32_t, int32_t); -} mpeg2_mc_t; - -#define MPEG2_MC_EXTERN(x) mpeg2_mc_t mpeg2_mc_##x = { \ - {MC_put_o_16_##x, MC_put_x_16_##x, MC_put_y_16_##x, MC_put_xy_16_##x, \ - MC_put_o_8_##x, MC_put_x_8_##x, MC_put_y_8_##x, MC_put_xy_8_##x}, \ - {MC_avg_o_16_##x, MC_avg_x_16_##x, MC_avg_y_16_##x, MC_avg_xy_16_##x, \ - MC_avg_o_8_##x, MC_avg_x_8_##x, MC_avg_y_8_##x, MC_avg_xy_8_##x} \ -}; - -extern mpeg2_mc_t mpeg2_mc; -extern mpeg2_mc_t mpeg2_mc_c; -extern mpeg2_mc_t mpeg2_mc_mmx; -extern mpeg2_mc_t mpeg2_mc_mmxext; -extern mpeg2_mc_t mpeg2_mc_3dnow; -extern mpeg2_mc_t mpeg2_mc_altivec; -extern mpeg2_mc_t mpeg2_mc_mlib; -extern mpeg2_mc_t mpeg2_mc_vis; - -/* slice.c */ -void mpeg2_slice (picture_t * picture, int code, uint8_t * buffer); - -/* stats.c */ -void mpeg2_stats (int code, uint8_t * buffer); - - -#endif |