Home | History | Annotate | Line # | Download | only in src
      1 #ifndef __RADEON_VIDEO_H__
      2 #define __RADEON_VIDEO_H__
      3 
      4 #include "xf86i2c.h"
      5 #include "fi1236.h"
      6 #include "msp3430.h"
      7 #include "tda9885.h"
      8 #include "uda1380.h"
      9 #include "i2c_def.h"
     10 
     11 #include "generic_bus.h"
     12 #include "theatre.h"
     13 
     14 #include "xf86Crtc.h"
     15 
     16 #include "bicubic_table.h"
     17 
     18 #include <xf86xvmc.h>
     19 
     20 #define ClipValue(v,min,max) ((v) < (min) ? (min) : (v) > (max) ? (max) : (v))
     21 
     22 /* Xvideo port struct */
     23 typedef struct {
     24    uint32_t	 transform_index;
     25    uint32_t	 gamma; /* gamma value x 1000 */
     26    int           brightness;
     27    int           saturation;
     28    int           hue;
     29    int           contrast;
     30    int           red_intensity;
     31    int           green_intensity;
     32    int           blue_intensity;
     33 
     34 	/* overlay composition mode */
     35    int		 alpha_mode; /* 0 = key mode, 1 = global mode */
     36    int		 ov_alpha;
     37    int		 gr_alpha;
     38 
     39      /* i2c bus and devices */
     40    I2CBusPtr     i2c;
     41    uint32_t      radeon_i2c_timing;
     42    uint32_t      radeon_M;
     43    uint32_t      radeon_N;
     44    uint32_t      i2c_status;
     45    uint32_t      i2c_cntl;
     46 
     47    FI1236Ptr     fi1236;
     48    uint8_t       tuner_type;
     49    MSP3430Ptr    msp3430;
     50    TDA9885Ptr    tda9885;
     51    UDA1380Ptr    uda1380;
     52 
     53    /* VIP bus and devices */
     54    GENERIC_BUS_Ptr  VIP;
     55    TheatrePtr       theatre;
     56 
     57    Bool          video_stream_active;
     58    int           encoding;
     59    uint32_t      frequency;
     60    int           volume;
     61    Bool          mute;
     62    int           sap_channel;
     63    int           v;
     64    uint32_t      adjustment; /* general purpose variable */
     65 
     66 #define METHOD_BOB      0
     67 #define METHOD_SINGLE   1
     68 #define METHOD_WEAVE    2
     69 #define METHOD_ADAPTIVE 3
     70 
     71    int           overlay_deinterlacing_method;
     72 
     73    int           capture_vbi_data;
     74 
     75    int           dec_brightness;
     76    int           dec_saturation;
     77    int           dec_hue;
     78    int           dec_contrast;
     79 
     80    Bool          doubleBuffer;
     81    unsigned char currentBuffer;
     82    RegionRec     clip;
     83    uint32_t      colorKey;
     84    uint32_t      videoStatus;
     85    Time          offTime;
     86    Time          freeTime;
     87    Bool          autopaint_colorkey;
     88    xf86CrtcPtr   desired_crtc;
     89 
     90    int           size;
     91 
     92    void         *video_memory;
     93    int           video_offset;
     94 
     95    int           planeu_offset;
     96    int           planev_offset;
     97 
     98    /* bicubic filtering */
     99    Bool          bicubic_enabled;
    100    uint32_t      bicubic_src_offset;
    101    int           bicubic_state;
    102 #define BICUBIC_OFF  0
    103 #define BICUBIC_ON   1
    104 #define BICUBIC_AUTO 2
    105 
    106    Atom          device_id, location_id, instance_id;
    107 
    108     /* textured video */
    109     Bool textured;
    110     DrawablePtr pDraw;
    111     PixmapPtr pPixmap;
    112 
    113     uint32_t src_offset;
    114     uint32_t src_pitch;
    115     uint8_t *src_addr;
    116 
    117     int id;
    118     int src_w, src_h, dst_w, dst_h;
    119     int w, h;
    120     int drw_x, drw_y;
    121     int src_x, src_y;
    122     int vsync;
    123     Bool is_planar;
    124     int vtx_count;
    125     int hw_align;
    126 
    127     struct radeon_bo *src_bo[2];
    128 } RADEONPortPrivRec, *RADEONPortPrivPtr;
    129 
    130 /* Reference color space transform data */
    131 typedef struct tagREF_TRANSFORM
    132 {
    133     float   RefLuma;
    134     float   RefRCb;
    135     float   RefRCr;
    136     float   RefGCb;
    137     float   RefGCr;
    138     float   RefBCb;
    139     float   RefBCr;
    140 } REF_TRANSFORM;
    141 
    142 #define RTFSaturation(a)   (1.0 + ((a)*1.0)/1000.0)
    143 #define RTFBrightness(a)   (((a)*1.0)/2000.0)
    144 #define RTFIntensity(a)   (((a)*1.0)/2000.0)
    145 #define RTFContrast(a)   (1.0 + ((a)*1.0)/1000.0)
    146 #define RTFHue(a)   (((a)*3.1416)/1000.0)
    147 
    148 void RADEONInitI2C(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv);
    149 void RADEONResetI2C(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv);
    150 
    151 void RADEONVIP_init(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv);
    152 void RADEONVIP_reset(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv);
    153 
    154 int  RADEONSetPortAttribute(ScrnInfoPtr, Atom, INT32, pointer);
    155 int  RADEONGetPortAttribute(ScrnInfoPtr, Atom ,INT32 *, pointer);
    156 void RADEONFreeVideoMemory(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv);
    157 void RADEONStopVideo(ScrnInfoPtr, pointer, Bool);
    158 void RADEONQueryBestSize(ScrnInfoPtr, Bool, short, short, short, short,
    159 			 unsigned int *, unsigned int *, pointer);
    160 int  RADEONQueryImageAttributes(ScrnInfoPtr, int, unsigned short *,
    161 			unsigned short *,  int *, int *);
    162 
    163 XF86VideoAdaptorPtr
    164 RADEONSetupImageTexturedVideo(ScreenPtr pScreen);
    165 
    166 XF86MCAdaptorPtr
    167 RADEONCreateAdaptorXvMC(ScreenPtr pScreen, const char *xv_adaptor_name);
    168 
    169 void
    170 RADEONCopyData(ScrnInfoPtr pScrn,
    171 	       unsigned char *src, unsigned char *dst,
    172 	       unsigned int srcPitch, unsigned int dstPitch,
    173 	       unsigned int h, unsigned int w, unsigned int bpp);
    174 
    175 void
    176 RADEONCopyMungedData(ScrnInfoPtr pScrn,
    177 		     unsigned char *src1, unsigned char *src2,
    178 		     unsigned char *src3, unsigned char *dst1,
    179 		     unsigned int srcPitch, unsigned int srcPitch2,
    180 		     unsigned int dstPitch, unsigned int h, unsigned int w);
    181 
    182 #endif
    183