1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
|
#ifndef __RADEON_VIDEO_H__
#define __RADEON_VIDEO_H__
#include "xf86i2c.h"
#include "fi1236.h"
#include "msp3430.h"
#include "tda9885.h"
#include "uda1380.h"
#include "i2c_def.h"
#include "generic_bus.h"
#include "theatre.h"
#include "xf86Crtc.h"
#include "bicubic_table.h"
/*
* This function takes a float and packs it into a uint32_t. Thanks, Mesa!
*/
static inline uint32_t r300PackFloat32(float fl)
{
union {
float fl;
uint32_t u;
} u;
u.fl = fl;
return u.u;
}
/* Xvideo port struct */
typedef struct {
uint32_t transform_index;
uint32_t gamma; /* gamma value x 1000 */
int brightness;
int saturation;
int hue;
int contrast;
int red_intensity;
int green_intensity;
int blue_intensity;
/* overlay composition mode */
int alpha_mode; /* 0 = key mode, 1 = global mode */
int ov_alpha;
int gr_alpha;
/* i2c bus and devices */
I2CBusPtr i2c;
uint32_t radeon_i2c_timing;
uint32_t radeon_M;
uint32_t radeon_N;
uint32_t i2c_status;
uint32_t i2c_cntl;
FI1236Ptr fi1236;
uint8_t tuner_type;
MSP3430Ptr msp3430;
TDA9885Ptr tda9885;
UDA1380Ptr uda1380;
/* VIP bus and devices */
GENERIC_BUS_Ptr VIP;
TheatrePtr theatre;
Bool video_stream_active;
int encoding;
uint32_t frequency;
int volume;
Bool mute;
int sap_channel;
int v;
uint32_t adjustment; /* general purpose variable */
#define METHOD_BOB 0
#define METHOD_SINGLE 1
#define METHOD_WEAVE 2
#define METHOD_ADAPTIVE 3
int overlay_deinterlacing_method;
int capture_vbi_data;
int dec_brightness;
int dec_saturation;
int dec_hue;
int dec_contrast;
Bool doubleBuffer;
unsigned char currentBuffer;
RegionRec clip;
uint32_t colorKey;
uint32_t videoStatus;
Time offTime;
Time freeTime;
Bool autopaint_colorkey;
xf86CrtcPtr desired_crtc;
int size;
#ifdef USE_EXA
ExaOffscreenArea *off_screen;
#endif
void *video_memory;
int video_offset;
/* bicubic filtering */
void *bicubic_memory;
int bicubic_offset;
Bool bicubic_enabled;
uint32_t bicubic_src_offset;
Atom device_id, location_id, instance_id;
/* textured video */
Bool textured;
DrawablePtr pDraw;
PixmapPtr pPixmap;
uint32_t src_offset;
uint32_t src_pitch;
uint8_t *src_addr;
int id;
int src_w, src_h, dst_w, dst_h;
int w, h;
int drw_x, drw_y;
} RADEONPortPrivRec, *RADEONPortPrivPtr;
void RADEONInitI2C(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv);
void RADEONResetI2C(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv);
void RADEONVIP_init(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv);
void RADEONVIP_reset(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv);
uint32_t
RADEONAllocateMemory(ScrnInfoPtr pScrn, void **mem_struct, int size);
void
RADEONFreeMemory(ScrnInfoPtr pScrn, void *mem_struct);
int RADEONSetPortAttribute(ScrnInfoPtr, Atom, INT32, pointer);
int RADEONGetPortAttribute(ScrnInfoPtr, Atom ,INT32 *, pointer);
void RADEONStopVideo(ScrnInfoPtr, pointer, Bool);
void RADEONQueryBestSize(ScrnInfoPtr, Bool, short, short, short, short,
unsigned int *, unsigned int *, pointer);
int RADEONQueryImageAttributes(ScrnInfoPtr, int, unsigned short *,
unsigned short *, int *, int *);
XF86VideoAdaptorPtr
RADEONSetupImageTexturedVideo(ScreenPtr pScreen);
void
RADEONCopyData(ScrnInfoPtr pScrn,
unsigned char *src, unsigned char *dst,
unsigned int srcPitch, unsigned int dstPitch,
unsigned int h, unsigned int w, unsigned int bpp);
void
RADEONCopyMungedData(ScrnInfoPtr pScrn,
unsigned char *src1, unsigned char *src2,
unsigned char *src3, unsigned char *dst1,
unsigned int srcPitch, unsigned int srcPitch2,
unsigned int dstPitch, unsigned int h, unsigned int w);
#endif
|