radeon_video.h revision de2362d3
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 */
16typedef 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 */
67typedef 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
84XF86VideoAdaptorPtr
85RADEONSetupImageTexturedVideo(ScreenPtr pScreen);
86
87XF86MCAdaptorPtr
88RADEONCreateAdaptorXvMC(ScreenPtr pScreen, char *xv_adaptor_name);
89
90void
91RADEONCopyData(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
96void
97RADEONCopyMungedData(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
103Bool radeon_crtc_is_enabled(xf86CrtcPtr crtc);
104uint32_t radeon_get_interpolated_vblanks(xf86CrtcPtr crtc);
105
106#endif
107