Mercurial > mplayer.hg
annotate drivers/tdfx_vid.h @ 28992:947ef23ba798
Test if create_vdp_decoder() might succeed by calling it from config()
with a small value for max_reference_frames.
This does not make automatic recovery by using software decoder possible,
but lets MPlayer fail more graciously on - actually existing - buggy
hardware that does not support certain H264 widths when using
hardware accelerated decoding (784, 864, 944, 1024, 1808, 1888 pixels on
NVIDIA G98) and if the user tries to hardware-decode more samples at
the same time than supported.
Might break playback of H264 Intra-Only samples on hardware with very
little video memory.
author | cehoyos |
---|---|
date | Sat, 21 Mar 2009 20:11:05 +0000 |
parents | 4129c8cfa742 |
children | 0f1b5b68af32 |
rev | line source |
---|---|
26003
a506a6ab14e1
Add standard license header and make copyright notices consistent.
diego
parents:
25553
diff
changeset
|
1 /* |
a506a6ab14e1
Add standard license header and make copyright notices consistent.
diego
parents:
25553
diff
changeset
|
2 * Copyright (C) 2003 Alban Bedel |
a506a6ab14e1
Add standard license header and make copyright notices consistent.
diego
parents:
25553
diff
changeset
|
3 * |
a506a6ab14e1
Add standard license header and make copyright notices consistent.
diego
parents:
25553
diff
changeset
|
4 * This file is part of MPlayer. |
a506a6ab14e1
Add standard license header and make copyright notices consistent.
diego
parents:
25553
diff
changeset
|
5 * |
a506a6ab14e1
Add standard license header and make copyright notices consistent.
diego
parents:
25553
diff
changeset
|
6 * MPlayer is free software; you can redistribute it and/or modify |
a506a6ab14e1
Add standard license header and make copyright notices consistent.
diego
parents:
25553
diff
changeset
|
7 * it under the terms of the GNU General Public License as published by |
a506a6ab14e1
Add standard license header and make copyright notices consistent.
diego
parents:
25553
diff
changeset
|
8 * the Free Software Foundation; either version 2 of the License, or |
a506a6ab14e1
Add standard license header and make copyright notices consistent.
diego
parents:
25553
diff
changeset
|
9 * (at your option) any later version. |
a506a6ab14e1
Add standard license header and make copyright notices consistent.
diego
parents:
25553
diff
changeset
|
10 * |
a506a6ab14e1
Add standard license header and make copyright notices consistent.
diego
parents:
25553
diff
changeset
|
11 * MPlayer is distributed in the hope that it will be useful, |
a506a6ab14e1
Add standard license header and make copyright notices consistent.
diego
parents:
25553
diff
changeset
|
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
a506a6ab14e1
Add standard license header and make copyright notices consistent.
diego
parents:
25553
diff
changeset
|
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
a506a6ab14e1
Add standard license header and make copyright notices consistent.
diego
parents:
25553
diff
changeset
|
14 * GNU General Public License for more details. |
a506a6ab14e1
Add standard license header and make copyright notices consistent.
diego
parents:
25553
diff
changeset
|
15 * |
a506a6ab14e1
Add standard license header and make copyright notices consistent.
diego
parents:
25553
diff
changeset
|
16 * You should have received a copy of the GNU General Public License along |
a506a6ab14e1
Add standard license header and make copyright notices consistent.
diego
parents:
25553
diff
changeset
|
17 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
a506a6ab14e1
Add standard license header and make copyright notices consistent.
diego
parents:
25553
diff
changeset
|
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
a506a6ab14e1
Add standard license header and make copyright notices consistent.
diego
parents:
25553
diff
changeset
|
19 */ |
a506a6ab14e1
Add standard license header and make copyright notices consistent.
diego
parents:
25553
diff
changeset
|
20 |
26029 | 21 #ifndef MPLAYER_TDFX_VID_H |
22 #define MPLAYER_TDFX_VID_H | |
9545
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
23 |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
24 #define TDFX_VID_VERSION 1 |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
25 |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
26 #define TDFX_VID_MOVE_2_PACKED 0 |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
27 #define TDFX_VID_MOVE_2_YUV 1 |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
28 #define TDFX_VID_MOVE_2_3D 2 |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
29 #define TDFX_VID_MOVE_2_TEXTURE 3 |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
30 |
9558
29aa61268e54
Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents:
9545
diff
changeset
|
31 #define TDFX_VID_SRC_COLORKEY 0x1 |
29aa61268e54
Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents:
9545
diff
changeset
|
32 #define TDFX_VID_DST_COLORKEY 0x2 |
29aa61268e54
Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents:
9545
diff
changeset
|
33 |
29aa61268e54
Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents:
9545
diff
changeset
|
34 #define TDFX_VID_ROP_COPY 0xcc // src |
29aa61268e54
Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents:
9545
diff
changeset
|
35 #define TDFX_VID_ROP_INVERT 0x55 // NOT dst |
29aa61268e54
Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents:
9545
diff
changeset
|
36 #define TDFX_VID_ROP_XOR 0x66 // src XOR dst |
29aa61268e54
Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents:
9545
diff
changeset
|
37 #define TDFX_VID_ROP_OR 0xee // src OR dst |
29aa61268e54
Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents:
9545
diff
changeset
|
38 |
9545
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
39 #define TDFX_VID_FORMAT_BGR1 (('B'<<24)|('G'<<16)|('R'<<8)|1) |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
40 #define TDFX_VID_FORMAT_BGR8 (('B'<<24)|('G'<<16)|('R'<<8)|8) |
9558
29aa61268e54
Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents:
9545
diff
changeset
|
41 #define TDFX_VID_FORMAT_BGR15 (('B'<<24)|('G'<<16)|('R'<<8)|15) |
9545
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
42 #define TDFX_VID_FORMAT_BGR16 (('B'<<24)|('G'<<16)|('R'<<8)|16) |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
43 #define TDFX_VID_FORMAT_BGR24 (('B'<<24)|('G'<<16)|('R'<<8)|24) |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
44 #define TDFX_VID_FORMAT_BGR32 (('B'<<24)|('G'<<16)|('R'<<8)|32) |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
45 |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
46 #define TDFX_VID_FORMAT_YUY2 (('2'<<24)|('Y'<<16)|('U'<<8)|'Y') |
9558
29aa61268e54
Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents:
9545
diff
changeset
|
47 #define TDFX_VID_FORMAT_UYVY (('Y'<<24)|('V'<<16)|('Y'<<8)|'U') |
9545
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
48 |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
49 #define TDFX_VID_FORMAT_YV12 0x32315659 |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
50 #define TDFX_VID_FORMAT_IYUV (('I'<<24)|('Y'<<16)|('U'<<8)|'V') |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
51 #define TDFX_VID_FORMAT_I420 (('I'<<24)|('4'<<16)|('2'<<8)|'0') |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
52 |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
53 #define TDFX_VID_YUV_STRIDE (1024) |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
54 #define TDFX_VID_YUV_PLANE_SIZE (0x0100000) |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
55 |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
56 |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
57 typedef struct tdfx_vid_blit_s { |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
58 uint32_t src; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
59 uint32_t src_stride; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
60 uint16_t src_x,src_y; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
61 uint16_t src_w,src_h; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
62 uint32_t src_format; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
63 |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
64 uint32_t dst; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
65 uint32_t dst_stride; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
66 uint16_t dst_x,dst_y; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
67 uint16_t dst_w,dst_h; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
68 uint32_t dst_format; |
9558
29aa61268e54
Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents:
9545
diff
changeset
|
69 |
29aa61268e54
Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents:
9545
diff
changeset
|
70 uint32_t src_colorkey[2]; |
29aa61268e54
Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents:
9545
diff
changeset
|
71 uint32_t dst_colorkey[2]; |
29aa61268e54
Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents:
9545
diff
changeset
|
72 |
29aa61268e54
Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents:
9545
diff
changeset
|
73 uint8_t colorkey; |
29aa61268e54
Update, new page fault handler to access the agp mem. Doesn't really work
albeu
parents:
9545
diff
changeset
|
74 uint8_t rop[4]; |
9545
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
75 } tdfx_vid_blit_t; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
76 |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
77 typedef struct tdfx_vid_config_s { |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
78 uint16_t version; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
79 uint16_t card_type; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
80 uint32_t ram_size; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
81 uint16_t screen_width; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
82 uint16_t screen_height; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
83 uint16_t screen_stride; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
84 uint32_t screen_format; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
85 uint32_t screen_start; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
86 } tdfx_vid_config_t; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
87 |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
88 typedef struct tdfx_vid_agp_move_s { |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
89 uint16_t move2; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
90 uint16_t width,height; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
91 |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
92 uint32_t src; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
93 uint32_t src_stride; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
94 |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
95 uint32_t dst; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
96 uint32_t dst_stride; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
97 } tdfx_vid_agp_move_t; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
98 |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
99 typedef struct tdfx_vid_yuv_s { |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
100 uint32_t base; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
101 uint16_t stride; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
102 } tdfx_vid_yuv_t; |
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
103 |
9566
015b404023f5
Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents:
9558
diff
changeset
|
104 typedef struct tdfx_vid_overlay_s { |
015b404023f5
Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents:
9558
diff
changeset
|
105 uint32_t src[2]; // left and right buffer (2 buffer may be NULL) |
015b404023f5
Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents:
9558
diff
changeset
|
106 uint16_t src_width,src_height; |
015b404023f5
Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents:
9558
diff
changeset
|
107 uint16_t src_stride; |
015b404023f5
Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents:
9558
diff
changeset
|
108 uint32_t format; |
015b404023f5
Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents:
9558
diff
changeset
|
109 |
015b404023f5
Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents:
9558
diff
changeset
|
110 uint16_t dst_width,dst_height; |
015b404023f5
Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents:
9558
diff
changeset
|
111 int16_t dst_x,dst_y; |
015b404023f5
Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents:
9558
diff
changeset
|
112 |
015b404023f5
Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents:
9558
diff
changeset
|
113 uint8_t use_colorkey; |
015b404023f5
Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents:
9558
diff
changeset
|
114 uint32_t colorkey[2]; // min/max |
015b404023f5
Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents:
9558
diff
changeset
|
115 uint8_t invert_colorkey; |
015b404023f5
Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents:
9558
diff
changeset
|
116 } tdfx_vid_overlay_t; |
015b404023f5
Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents:
9558
diff
changeset
|
117 |
9545
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
118 #define TDFX_VID_GET_CONFIG _IOR('J', 1, tdfx_vid_config_t) |
9566
015b404023f5
Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents:
9558
diff
changeset
|
119 #define TDFX_VID_AGP_MOVE _IOW('J', 2, tdfx_vid_agp_move_t) |
015b404023f5
Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents:
9558
diff
changeset
|
120 #define TDFX_VID_BLIT _IOW('J', 3, tdfx_vid_blit_t) |
015b404023f5
Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents:
9558
diff
changeset
|
121 #define TDFX_VID_SET_YUV _IOW('J', 4, tdfx_vid_blit_t) |
9545
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
122 #define TDFX_VID_GET_YUV _IOR('J', 5, tdfx_vid_blit_t) |
9566
015b404023f5
Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents:
9558
diff
changeset
|
123 #define TDFX_VID_BUMP0 _IOW('J', 6, u16) |
015b404023f5
Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents:
9558
diff
changeset
|
124 #define TDFX_VID_SET_OVERLAY _IOW('J', 7, tdfx_vid_overlay_t) |
015b404023f5
Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents:
9558
diff
changeset
|
125 #define TDFX_VID_OVERLAY_ON _IO ('J', 8) |
015b404023f5
Overlay support (now vo_xtdfx is possible :) and yet another way to
albeu
parents:
9558
diff
changeset
|
126 #define TDFX_VID_OVERLAY_OFF _IO ('J', 9) |
9545
d1bbeae9f46a
tdfx_vid a new kernel driver for tdfx wich let use agp move :)
albeu
parents:
diff
changeset
|
127 |
26029 | 128 #endif /* MPLAYER_TDFX_VID_H */ |