accel_xvmc.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:5k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * xvmc.c : Common acceleration definitions for XvMC
  3.  *****************************************************************************
  4.  * Copyright (C) 2006 VideoLAN
  5.  * $Id: ecf7dbf30456e8c7ef2b71a0ca43b0399d3909c0 $
  6.  *
  7.  * Authors: Christophe Burgalat <c _dot_ burgalat _at_ broadcastavenue _dot_ com>
  8.  *          Jean-Paul Saman <jpsaman _at_ videolan _dot_ org>
  9.  *
  10.  * This program is free software; you can redistribute it and/or modify
  11.  * it under the terms of the GNU General Public License as published by
  12.  * the Free Software Foundation; either version 2 of the License, or
  13.  * (at your option) any later version.
  14.  *
  15.  * This program is distributed in the hope that it will be useful,
  16.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  * GNU General Public License for more details.
  19.  *
  20.  * You should have received a copy of the GNU General Public License
  21.  * along with this program; if not, write to the Free Software
  22.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  23.  *****************************************************************************/
  24. /*****************************************************************************
  25.  * Preamble
  26.  *****************************************************************************/
  27. /*
  28.  * Common acceleration definitions for XvMC
  29.  *
  30.  *
  31.  */
  32. #ifndef HAVE_VLC_ACCEL_H
  33. #define HAVE_VLC_ACCEL_H
  34. #ifdef __cplusplus
  35. extern "C" {
  36. #endif
  37. typedef struct vlc_macroblock_s
  38. {
  39.     short  *blockptr;          /* pointer to current dct block */
  40.     short  *blockbaseptr;      /* pointer to base of dct block array in blocks */
  41.     short   xvmc_accel;        /* type of acceleration supported */
  42. } vlc_macroblocks_t;
  43. typedef struct vlc_vld_frame_s
  44. {
  45.     int version;              /* Backward compatibility */
  46.     int mv_ranges[2][2];
  47.     int picture_structure;
  48.     int picture_coding_type;
  49.     int intra_dc_precision;
  50.     int mpeg_coding;
  51.     int progressive_sequence;
  52.     int scan;
  53.     int pred_dct_frame;
  54.     int concealment_motion_vectors;
  55.     int q_scale_type;
  56.     int intra_vlc_format;
  57.     int second_field;
  58.     int load_intra_quantizer_matrix;
  59.     int load_non_intra_quantizer_matrix;
  60.     uint8_t intra_quantizer_matrix[64];
  61.     uint8_t non_intra_quantizer_matrix[64];
  62.     picture_t *backward_reference_picture;
  63.     picture_t *forward_reference_picture;
  64. } vlc_vld_frame_t;
  65. typedef struct vlc_xvmc_s
  66. {
  67.     vlc_macroblocks_t *macroblocks;
  68.     void (*proc_macro_block)(int x,int y,int mb_type,
  69.     int motion_type,int (*mv_field_sel)[2],
  70.     int *dmvector,int cbp,int dct_type,
  71.     picture_t *current_picture,picture_t *forward_ref_picture,
  72.     picture_t *backward_ref_picture,int picture_structure,
  73.     int second_field,int (*f_mot_pmv)[2],int (*b_mot_pmv)[2]);
  74. } vlc_xvmc_t ;
  75. typedef struct vlc_xxmc_s
  76. {
  77.     /*
  78.     * We inherit the xine_xvmc_t properties.
  79.     */
  80.     vlc_xvmc_t xvmc;
  81.     unsigned mpeg;
  82.     unsigned acceleration;
  83.     vlc_fourcc_t fallback_format;
  84.     vlc_vld_frame_t vld_frame;
  85.     uint8_t *slice_data;
  86.     unsigned slice_data_size;
  87.     unsigned slice_code;
  88.     int result;
  89.     int decoded;
  90.     float sleep;
  91.     void (*proc_xxmc_update_frame) (picture_t *picture_gen,
  92.                 uint32_t width, uint32_t height, double ratio,
  93.                 int format, int flags);
  94.     void (*proc_xxmc_begin) (picture_t *vo_img);
  95.     void (*proc_xxmc_slice) (picture_t *vo_img);
  96.     void (*proc_xxmc_flush) (picture_t *vo_img);
  97.     void (*proc_xxmc_flushsync) (picture_t *vo_img);
  98. } vlc_xxmc_t;
  99. #define VLC_IMGFMT_XXMC VLC_FOURCC('X','x','M','C')
  100.   /*
  101.    * Register XvMC stream types here.
  102.    */
  103. #define VLC_XVMC_MPEG_1 0x00000001
  104. #define VLC_XVMC_MPEG_2 0x00000002
  105. #define VLC_XVMC_MPEG_4 0x00000004
  106.   /*
  107.    * Register XvMC acceleration levels here.
  108.    */
  109. #define VLC_XVMC_ACCEL_MOCOMP 0x00000001
  110. #define VLC_XVMC_ACCEL_IDCT   0x00000002
  111. #define VLC_XVMC_ACCEL_VLD    0x00000004
  112. /* xvmc acceleration types */
  113. #define VLC_VO_MOTION_ACCEL   1
  114. #define VLC_VO_IDCT_ACCEL     2
  115. #define VLC_VO_SIGNED_INTRA   4
  116. /* motion types */
  117. #define VLC_MC_FIELD 1
  118. #define VLC_MC_FRAME 2
  119. #define VLC_MC_16X8  2
  120. #define VLC_MC_DMV   3
  121. /* picture coding type */
  122. #define VLC_PICT_I_TYPE 1
  123. #define VLC_PICT_P_TYPE 2
  124. #define VLC_PICT_B_TYPE 3
  125. #define VLC_PICT_D_TYPE 4
  126. /* macroblock modes */
  127. #define VLC_MACROBLOCK_INTRA 1
  128. #define VLC_MACROBLOCK_PATTERN 2
  129. #define VLC_MACROBLOCK_MOTION_BACKWARD 4
  130. #define VLC_MACROBLOCK_MOTION_FORWARD 8
  131. #define VLC_MACROBLOCK_QUANT 16
  132. #define VLC_MACROBLOCK_DCT_TYPE_INTERLACED 32
  133. #ifdef __cplusplus
  134. }
  135. #endif
  136. #endif