1209ff23fSmrg#ifndef __RADEON_VIDEO_H__ 2209ff23fSmrg#define __RADEON_VIDEO_H__ 3209ff23fSmrg 4209ff23fSmrg#include "xf86i2c.h" 543df4709Smrg#include "fi1236.h" 643df4709Smrg#include "msp3430.h" 743df4709Smrg#include "tda9885.h" 843df4709Smrg#include "uda1380.h" 9209ff23fSmrg#include "i2c_def.h" 10209ff23fSmrg 1143df4709Smrg#include "generic_bus.h" 1243df4709Smrg#include "theatre.h" 1343df4709Smrg 14209ff23fSmrg#include "xf86Crtc.h" 15209ff23fSmrg 16b7e1c893Smrg#include "bicubic_table.h" 17b7e1c893Smrg 1840732134Srjs#include <xf86xvmc.h> 1940732134Srjs 20b7e1c893Smrg#define ClipValue(v,min,max) ((v) < (min) ? (min) : (v) > (max) ? (max) : (v)) 21b7e1c893Smrg 22209ff23fSmrg/* Xvideo port struct */ 23209ff23fSmrgtypedef struct { 24209ff23fSmrg uint32_t transform_index; 25209ff23fSmrg uint32_t gamma; /* gamma value x 1000 */ 26209ff23fSmrg int brightness; 27209ff23fSmrg int saturation; 28209ff23fSmrg int hue; 29209ff23fSmrg int contrast; 3043df4709Smrg int red_intensity; 3143df4709Smrg int green_intensity; 3243df4709Smrg int blue_intensity; 3343df4709Smrg 3443df4709Smrg /* overlay composition mode */ 3543df4709Smrg int alpha_mode; /* 0 = key mode, 1 = global mode */ 3643df4709Smrg int ov_alpha; 3743df4709Smrg int gr_alpha; 3843df4709Smrg 3943df4709Smrg /* i2c bus and devices */ 4043df4709Smrg I2CBusPtr i2c; 4143df4709Smrg uint32_t radeon_i2c_timing; 4243df4709Smrg uint32_t radeon_M; 4343df4709Smrg uint32_t radeon_N; 4443df4709Smrg uint32_t i2c_status; 4543df4709Smrg uint32_t i2c_cntl; 4643df4709Smrg 4743df4709Smrg FI1236Ptr fi1236; 4843df4709Smrg uint8_t tuner_type; 4943df4709Smrg MSP3430Ptr msp3430; 5043df4709Smrg TDA9885Ptr tda9885; 5143df4709Smrg UDA1380Ptr uda1380; 5243df4709Smrg 5343df4709Smrg /* VIP bus and devices */ 5443df4709Smrg GENERIC_BUS_Ptr VIP; 5543df4709Smrg TheatrePtr theatre; 5643df4709Smrg 5743df4709Smrg Bool video_stream_active; 5843df4709Smrg int encoding; 5943df4709Smrg uint32_t frequency; 6043df4709Smrg int volume; 6143df4709Smrg Bool mute; 6243df4709Smrg int sap_channel; 6343df4709Smrg int v; 6443df4709Smrg uint32_t adjustment; /* general purpose variable */ 6543df4709Smrg 6643df4709Smrg#define METHOD_BOB 0 6743df4709Smrg#define METHOD_SINGLE 1 6843df4709Smrg#define METHOD_WEAVE 2 6943df4709Smrg#define METHOD_ADAPTIVE 3 7043df4709Smrg 7143df4709Smrg int overlay_deinterlacing_method; 7243df4709Smrg 7343df4709Smrg int capture_vbi_data; 7443df4709Smrg 7543df4709Smrg int dec_brightness; 7643df4709Smrg int dec_saturation; 7743df4709Smrg int dec_hue; 7843df4709Smrg int dec_contrast; 7943df4709Smrg 8043df4709Smrg Bool doubleBuffer; 81209ff23fSmrg unsigned char currentBuffer; 82209ff23fSmrg RegionRec clip; 8343df4709Smrg uint32_t colorKey; 8443df4709Smrg uint32_t videoStatus; 85209ff23fSmrg Time offTime; 86209ff23fSmrg Time freeTime; 8743df4709Smrg Bool autopaint_colorkey; 88209ff23fSmrg xf86CrtcPtr desired_crtc; 89209ff23fSmrg 90209ff23fSmrg int size; 91209ff23fSmrg 9243df4709Smrg void *video_memory; 9343df4709Smrg int video_offset; 94209ff23fSmrg 95b7e1c893Smrg int planeu_offset; 96b7e1c893Smrg int planev_offset; 97b7e1c893Smrg 98b7e1c893Smrg /* bicubic filtering */ 99b7e1c893Smrg Bool bicubic_enabled; 10043df4709Smrg uint32_t bicubic_src_offset; 101b7e1c893Smrg int bicubic_state; 102b7e1c893Smrg#define BICUBIC_OFF 0 103b7e1c893Smrg#define BICUBIC_ON 1 104b7e1c893Smrg#define BICUBIC_AUTO 2 105b7e1c893Smrg 10643df4709Smrg Atom device_id, location_id, instance_id; 10743df4709Smrg 108209ff23fSmrg /* textured video */ 109209ff23fSmrg Bool textured; 110209ff23fSmrg DrawablePtr pDraw; 111209ff23fSmrg PixmapPtr pPixmap; 112209ff23fSmrg 11343df4709Smrg uint32_t src_offset; 114209ff23fSmrg uint32_t src_pitch; 115209ff23fSmrg uint8_t *src_addr; 116209ff23fSmrg 117209ff23fSmrg int id; 118209ff23fSmrg int src_w, src_h, dst_w, dst_h; 119209ff23fSmrg int w, h; 120209ff23fSmrg int drw_x, drw_y; 121ad43ddacSmrg int src_x, src_y; 122b7e1c893Smrg int vsync; 1232f39173dSmrg Bool is_planar; 1242f39173dSmrg int vtx_count; 125b13dfe66Smrg int hw_align; 126ad43ddacSmrg 127ad43ddacSmrg struct radeon_bo *src_bo[2]; 128209ff23fSmrg} RADEONPortPrivRec, *RADEONPortPrivPtr; 129209ff23fSmrg 130ad43ddacSmrg/* Reference color space transform data */ 131ad43ddacSmrgtypedef struct tagREF_TRANSFORM 132ad43ddacSmrg{ 133ad43ddacSmrg float RefLuma; 134ad43ddacSmrg float RefRCb; 135ad43ddacSmrg float RefRCr; 136ad43ddacSmrg float RefGCb; 137ad43ddacSmrg float RefGCr; 138ad43ddacSmrg float RefBCb; 139ad43ddacSmrg float RefBCr; 140ad43ddacSmrg} REF_TRANSFORM; 141ad43ddacSmrg 142ad43ddacSmrg#define RTFSaturation(a) (1.0 + ((a)*1.0)/1000.0) 143ad43ddacSmrg#define RTFBrightness(a) (((a)*1.0)/2000.0) 144ad43ddacSmrg#define RTFIntensity(a) (((a)*1.0)/2000.0) 145ad43ddacSmrg#define RTFContrast(a) (1.0 + ((a)*1.0)/1000.0) 146ad43ddacSmrg#define RTFHue(a) (((a)*3.1416)/1000.0) 147209ff23fSmrg 14843df4709Smrgvoid RADEONInitI2C(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv); 14943df4709Smrgvoid RADEONResetI2C(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv); 15043df4709Smrg 15143df4709Smrgvoid RADEONVIP_init(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv); 15243df4709Smrgvoid RADEONVIP_reset(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv); 15343df4709Smrg 15443df4709Smrgint RADEONSetPortAttribute(ScrnInfoPtr, Atom, INT32, pointer); 15543df4709Smrgint RADEONGetPortAttribute(ScrnInfoPtr, Atom ,INT32 *, pointer); 15643df4709Smrgvoid RADEONFreeVideoMemory(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv); 15743df4709Smrgvoid RADEONStopVideo(ScrnInfoPtr, pointer, Bool); 15843df4709Smrgvoid RADEONQueryBestSize(ScrnInfoPtr, Bool, short, short, short, short, 15943df4709Smrg unsigned int *, unsigned int *, pointer); 16043df4709Smrgint RADEONQueryImageAttributes(ScrnInfoPtr, int, unsigned short *, 16143df4709Smrg unsigned short *, int *, int *); 16243df4709Smrg 163209ff23fSmrgXF86VideoAdaptorPtr 164209ff23fSmrgRADEONSetupImageTexturedVideo(ScreenPtr pScreen); 165209ff23fSmrg 16640732134SrjsXF86MCAdaptorPtr 167861b9feeSmrgRADEONCreateAdaptorXvMC(ScreenPtr pScreen, const char *xv_adaptor_name); 16840732134Srjs 169209ff23fSmrgvoid 170209ff23fSmrgRADEONCopyData(ScrnInfoPtr pScrn, 171209ff23fSmrg unsigned char *src, unsigned char *dst, 172209ff23fSmrg unsigned int srcPitch, unsigned int dstPitch, 173209ff23fSmrg unsigned int h, unsigned int w, unsigned int bpp); 174209ff23fSmrg 175209ff23fSmrgvoid 176209ff23fSmrgRADEONCopyMungedData(ScrnInfoPtr pScrn, 177209ff23fSmrg unsigned char *src1, unsigned char *src2, 178209ff23fSmrg unsigned char *src3, unsigned char *dst1, 179209ff23fSmrg unsigned int srcPitch, unsigned int srcPitch2, 180209ff23fSmrg unsigned int dstPitch, unsigned int h, unsigned int w); 181209ff23fSmrg 182209ff23fSmrg#endif 183