1 #ifndef __RADEON_VIDEO_H__
2 #define __RADEON_VIDEO_H__
3 
4 #include "xf86i2c.h"
5 #include "i2c_def.h"
6 
7 #include "xf86Crtc.h"
8 
9 #include "bicubic_table.h"
10 
11 #include <xf86xvmc.h>
12 
13 #define ClipValue(v,min,max) ((v) < (min) ? (min) : (v) > (max) ? (max) : (v))
14 
15 /* Xvideo port struct */
16 typedef struct {
17    uint32_t	 transform_index;
18    uint32_t	 gamma; /* gamma value x 1000 */
19    int           brightness;
20    int           saturation;
21    int           hue;
22    int           contrast;
23 
24    unsigned char currentBuffer;
25    RegionRec     clip;
26 
27    Time          offTime;
28    Time          freeTime;
29    xf86CrtcPtr   desired_crtc;
30 
31    int           size;
32 
33    struct radeon_bo *video_memory;
34 
35    int           planeu_offset;
36    int           planev_offset;
37 
38    /* bicubic filtering */
39    Bool          bicubic_enabled;
40    int           bicubic_state;
41 #define BICUBIC_OFF  0
42 #define BICUBIC_ON   1
43 #define BICUBIC_AUTO 2
44 
45     /* textured video */
46     Bool textured;
47     DrawablePtr pDraw;
48     PixmapPtr pPixmap;
49 
50     uint32_t src_pitch;
51     uint8_t *src_addr;
52 
53     int id;
54     int src_w, src_h, dst_w, dst_h;
55     int w, h;
56     int drw_x, drw_y;
57     int src_x, src_y;
58     int vsync;
59     Bool is_planar;
60     int vtx_count;
61     int hw_align;
62 
63     struct radeon_bo *src_bo[2];
64 } RADEONPortPrivRec, *RADEONPortPrivPtr;
65 
66 /* Reference color space transform data */
67 typedef struct tagREF_TRANSFORM
68 {
69     float   RefLuma;
70     float   RefRCb;
71     float   RefRCr;
72     float   RefGCb;
73     float   RefGCr;
74     float   RefBCb;
75     float   RefBCr;
76 } REF_TRANSFORM;
77 
78 #define RTFSaturation(a)   (1.0 + ((a)*1.0)/1000.0)
79 #define RTFBrightness(a)   (((a)*1.0)/2000.0)
80 #define RTFIntensity(a)   (((a)*1.0)/2000.0)
81 #define RTFContrast(a)   (1.0 + ((a)*1.0)/1000.0)
82 #define RTFHue(a)   (((a)*3.1416)/1000.0)
83 
84 XF86VideoAdaptorPtr
85 RADEONSetupImageTexturedVideo(ScreenPtr pScreen);
86 
87 XF86MCAdaptorPtr
88 RADEONCreateAdaptorXvMC(ScreenPtr pScreen, char *xv_adaptor_name);
89 
90 void
91 RADEONCopyData(ScrnInfoPtr pScrn,
92 	       unsigned char *src, unsigned char *dst,
93 	       unsigned int srcPitch, unsigned int dstPitch,
94 	       unsigned int h, unsigned int w, unsigned int bpp);
95 
96 void
97 RADEONCopyMungedData(ScrnInfoPtr pScrn,
98 		     unsigned char *src1, unsigned char *src2,
99 		     unsigned char *src3, unsigned char *dst1,
100 		     unsigned int srcPitch, unsigned int srcPitch2,
101 		     unsigned int dstPitch, unsigned int h, unsigned int w);
102 
103 Bool radeon_crtc_is_enabled(xf86CrtcPtr crtc);
104 
105 #endif
106