diff options
Diffstat (limited to 'src/xine-engine/accel_xvmc.h')
-rw-r--r-- | src/xine-engine/accel_xvmc.h | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/src/xine-engine/accel_xvmc.h b/src/xine-engine/accel_xvmc.h new file mode 100644 index 000000000..ea10a40ff --- /dev/null +++ b/src/xine-engine/accel_xvmc.h @@ -0,0 +1,152 @@ +/* + * Copyright (C) 2000-2003 the xine project + * Copyright (C) 2004 the Unichrome project + * + * This file is part of xine, a free video player. + * + * xine 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. + * + * xine 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 + * + * $Id: accel_xvmc.h,v 1.1 2004/09/28 18:49:40 miguelfreitas Exp $ + * + * + * Common acceleration definitions for XvMC. + * + * + */ + +#ifndef HAVE_XINE_ACCEL_H +#define HAVE_XINE_ACCEL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +typedef struct xine_macroblock_s { + short *blockptr; /* pointer to current dct block */ + short *blockbaseptr; /* pointer to base of dct block array in blocks */ + short xvmc_accel; /* type of acceleration supported */ +} xine_macroblocks_t; + +typedef struct xine_vld_frame_s { + int version; /* Backward compatibility */ + int mv_ranges[2][2]; + int picture_structure; + int picture_coding_type; + int intra_dc_precision; + int mpeg_coding; + int progressive_sequence; + int scan; + int pred_dct_frame; + int concealment_motion_vectors; + int q_scale_type; + int intra_vlc_format; + int second_field; + int load_intra_quantizer_matrix; + int load_non_intra_quantizer_matrix; + uint8_t intra_quantizer_matrix[64]; + uint8_t non_intra_quantizer_matrix[64]; + vo_frame_t *backward_reference_frame; + vo_frame_t *forward_reference_frame; +} xine_vld_frame_t; + + +typedef struct xine_xvmc_s { + xine_macroblocks_t *macroblocks; + void (*proc_macro_block)(int x,int y,int mb_type, + int motion_type,int (*mv_field_sel)[2], + int *dmvector,int cbp,int dct_type, + vo_frame_t *current_frame,vo_frame_t *forward_ref_frame, + vo_frame_t *backward_ref_frame,int picture_structure, + int second_field,int (*f_mot_pmv)[2],int (*b_mot_pmv)[2]); +} xine_xvmc_t ; + +typedef struct xine_xxmc_s { + + /* + * We inherit the xine_xvmc_t properties. + */ + + xine_xvmc_t xvmc; + + unsigned format; + unsigned mpeg; + unsigned acceleration; + xine_vld_frame_t vld_frame; + uint8_t *slice_data; + unsigned slice_data_size; + unsigned slice_code; + int result; + int decoded; + float sleep; + void (*proc_xxmc_frame) (vo_frame_t *vo_img); + void (*proc_xxmc_begin) (vo_frame_t *vo_img); + void (*proc_xxmc_slice) (vo_frame_t *vo_img); + void (*proc_xxmc_flush) (vo_frame_t *vo_img); +} xine_xxmc_t; + + /* + * Register XvMC stream types here. + */ + +#define XINE_XVMC_MPEG_1 0x00000001 +#define XINE_XVMC_MPEG_2 0x00000002 +#define XINE_XVMC_MPEG_4 0x00000004 + + /* + * Register XvMC acceleration levels here. + */ + +#define XINE_XVMC_ACCEL_MOCOMP 0x00000001 +#define XINE_XVMC_ACCEL_IDCT 0x00000002 +#define XINE_XVMC_ACCEL_VLD 0x00000004 + + +/* xvmc acceleration types */ +#define XINE_VO_MOTION_ACCEL 1 +#define XINE_VO_IDCT_ACCEL 2 +#define XINE_VO_SIGNED_INTRA 4 + +/* motion types */ +#define XINE_MC_FIELD 1 +#define XINE_MC_FRAME 2 +#define XINE_MC_16X8 2 +#define XINE_MC_DMV 3 + +/* picture coding type */ +#define XINE_PICT_I_TYPE 1 +#define XINE_PICT_P_TYPE 2 +#define XINE_PICT_B_TYPE 3 +#define XINE_PICT_D_TYPE 4 + +/* macroblock modes */ +#define XINE_MACROBLOCK_INTRA 1 +#define XINE_MACROBLOCK_PATTERN 2 +#define XINE_MACROBLOCK_MOTION_BACKWARD 4 +#define XINE_MACROBLOCK_MOTION_FORWARD 8 +#define XINE_MACROBLOCK_QUANT 16 +#define XINE_MACROBLOCK_DCT_TYPE_INTERLACED 32 + + + +#ifdef __cplusplus +} +#endif + +#endif + |