Mercurial > mplayer.hg
annotate libvo/vo_tdfx_vid.c @ 33667:adb10970ec83
Fix bug introduced as a side effect in r33750.
It was no longer possible to start gmplayer from the command line with
a file argument.
Every time gmplayer is called with a file argument this file goes into
the GUI specific playlist. As a side effect, GUI's file(name) to play
and MPlayer's filename point to the same address.
guiInit() pointlessly tries to set GUI's filename (free and strdup) from
MPlayer's filename instead of getting it from its playlist. The previous
memset set GUI's filename to NULL rendering the free() effectless while
now such an operation on the same address to strdup() afterwards isn't a
good idea.
Remove the pointless code.
author | ib |
---|---|
date | Tue, 28 Jun 2011 15:00:05 +0000 |
parents | ddb45e9443ec |
children | 21d2ff801b8f |
rev | line source |
---|---|
27508 | 1 /* |
2 * copyright (C) 2003 Alban Bedel | |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
3 * |
27508 | 4 * This file is part of MPlayer. |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
5 * |
27508 | 6 * MPlayer is free software; you can redistribute it and/or modify |
7 * it under the terms of the GNU General Public License as published by | |
8 * the Free Software Foundation; either version 2 of the License, or | |
9 * (at your option) any later version. | |
10 * | |
11 * MPlayer is distributed in the hope that it will be useful, | |
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 * GNU General Public License for more details. | |
15 * | |
16 * You should have received a copy of the GNU General Public License along | |
17 * with MPlayer; if not, write to the Free Software Foundation, Inc., | |
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
19 */ |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
20 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
21 #include <stdio.h> |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
22 #include <stdlib.h> |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
23 #include <string.h> |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
24 #include <errno.h> |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
25 #include <sys/types.h> |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
26 #include <sys/stat.h> |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
27 #include <fcntl.h> |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
28 #include <unistd.h> |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
29 #include <sys/ioctl.h> |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
30 #include <sys/mman.h> |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
31 #include "config.h" |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
32 #include "video_out.h" |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
33 #include "video_out_internal.h" |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
34 #include "aspect.h" |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
35 #include "mp_msg.h" |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
36 #include "help_mp.h" |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
37 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
38 #include "fastmemcpy.h" |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
39 #include "drivers/tdfx_vid.h" |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
40 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
41 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27508
diff
changeset
|
42 static const vo_info_t info = |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
43 { |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
44 "tdfx vid", |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
45 "tdfx_vid", |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
46 "Albeu", |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
47 "" |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
48 }; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
49 |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
50 //#define VERBOSE |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
51 |
25220
c9e9ac2008c2
Mark the vo_functions_t definitions as const where possible.
reimar
parents:
25216
diff
changeset
|
52 const LIBVO_EXTERN(tdfx_vid) |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
53 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
54 static tdfx_vid_config_t tdfx_cfg; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
55 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
56 static unsigned char* agp_mem = NULL; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
57 static int tdfx_fd = -1; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
58 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
59 static uint32_t img_fmt; // The real input format |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
60 static uint32_t src_width, src_height, src_fmt, src_bpp, src_stride; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
61 static uint32_t dst_width, dst_height, dst_fmt, dst_bpp, dst_stride; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
62 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
63 static uint32_t tdfx_page; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
64 static uint32_t front_buffer; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
65 static uint32_t back_buffer; |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
66 static uint8_t num_buffer = 3; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
67 static uint32_t buffer_size; // Max size |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
68 static uint8_t current_buffer = 0; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
69 static uint8_t current_ip_buf = 0; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
70 static uint32_t buffer_stride[3]; |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
71 |
9567
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
72 static int use_overlay = 1; |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
73 static tdfx_vid_overlay_t tdfx_ov; |
9567
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
74 |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
75 // FIXME |
24862
94ec445120da
Disable clear_screen function, the call to the function is commented out
diego
parents:
24252
diff
changeset
|
76 #if 0 |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
77 static void clear_screen(void) { |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
78 tdfx_vid_agp_move_t mov; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
79 |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
80 memset(agp_mem,0,tdfx_cfg.screen_width*dst_bpp*tdfx_cfg.screen_height); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27508
diff
changeset
|
81 |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
82 mov.move2 = TDFX_VID_MOVE_2_PACKED; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
83 mov.width = tdfx_cfg.screen_width*dst_bpp; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
84 mov.height = tdfx_cfg.screen_height; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
85 mov.src = 0; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
86 mov.src_stride = tdfx_cfg.screen_width*dst_bpp; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
87 mov.dst = front_buffer; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
88 mov.dst_stride = tdfx_cfg.screen_stride; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
89 |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
90 mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_TDFXVID_Move, mov.width,mov.src_stride,mov.height,mov.dst_stride); |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
91 |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
92 if(ioctl(tdfx_fd,TDFX_VID_AGP_MOVE,&mov)) |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
93 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_AGPMoveFailedToClearTheScreen); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27508
diff
changeset
|
94 |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
95 } |
24862
94ec445120da
Disable clear_screen function, the call to the function is commented out
diego
parents:
24252
diff
changeset
|
96 #endif |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
97 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
98 static int draw_slice(uint8_t *image[], int stride[], int w,int h,int x,int y) |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
99 { |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
100 uint8_t* ptr[3]; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
101 |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
102 #ifdef VERBOSE |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
103 printf("Draw slices %d\n",current_buffer); |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
104 #endif |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
105 switch(img_fmt) { |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
106 case IMGFMT_YUY2: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
107 case IMGFMT_UYVY: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
108 case IMGFMT_BGR8: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
109 case IMGFMT_BGR16: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
110 case IMGFMT_BGR24: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
111 case IMGFMT_BGR32: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
112 // copy :( to agp_mem |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
113 // still faster than tdfxfb wich directly copy to the video mem :) |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27508
diff
changeset
|
114 mem2agpcpy_pic(agp_mem + current_buffer * buffer_size + |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
115 y*buffer_stride[0] + x * src_bpp, |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
116 image[0], |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
117 src_bpp*w,h,buffer_stride[0],stride[0]); |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
118 return 0; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
119 |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
120 case IMGFMT_YV12: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
121 case IMGFMT_I420: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
122 // Copy to agp mem |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
123 ptr[0] = agp_mem + current_buffer * buffer_size; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
124 mem2agpcpy_pic(ptr[0] + y * buffer_stride[0] + x,image[0],w,h, |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
125 buffer_stride[0],stride[0]); |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
126 ptr[1] = ptr[0] + (src_height*src_width); |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
127 mem2agpcpy_pic(ptr[1] + y/2 * buffer_stride[1] + x/2,image[1],w/2,h/2, |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
128 buffer_stride[1],stride[1]); |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
129 ptr[2] = ptr[1] + (src_height*src_width/4); |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
130 mem2agpcpy_pic(ptr[2] + y/2 * buffer_stride[2] + x/2,image[2],w/2,h/2, |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
131 buffer_stride[2],stride[2]); |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
132 return 0; |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
133 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27508
diff
changeset
|
134 |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
135 return 1; |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
136 } |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
137 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
138 static void draw_osd(void) |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
139 { |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
140 } |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
141 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
142 static void |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
143 flip_page(void) |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
144 { |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
145 tdfx_vid_blit_t blit; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
146 //return; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
147 // Scale convert |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
148 #ifdef VERBOSE |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
149 printf("Flip\n"); |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
150 #endif |
9567
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
151 if(use_overlay) { |
23873 | 152 // TDFX_VID_OVERLAY_ON does nothing if the overlay is already on |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
153 if(!ioctl(tdfx_fd,TDFX_VID_OVERLAY_ON)) { // X11 killed the overlay :( |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
154 if(ioctl(tdfx_fd,TDFX_VID_SET_OVERLAY,&tdfx_ov)) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
155 mp_msg(MSGT_VO, MSGL_ERR, "tdfx_vid: set_overlay failed\n"); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
156 } |
9567
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
157 // These formats need conversion |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
158 switch(src_fmt) { |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
159 case IMGFMT_BGR8: |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
160 case IMGFMT_BGR24: |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
161 case IMGFMT_BGR32: |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
162 memset(&blit,0,sizeof(tdfx_vid_blit_t)); |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
163 blit.src = back_buffer; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
164 blit.src_stride = src_stride; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
165 blit.src_x = 0; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
166 blit.src_y = 0; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
167 blit.src_w = src_width; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
168 blit.src_h = src_height; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
169 blit.src_format = src_fmt; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27508
diff
changeset
|
170 |
9567
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
171 blit.dst = front_buffer; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
172 blit.dst_stride = dst_stride; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
173 blit.dst_x = 0; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
174 blit.dst_y = 0; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
175 blit.dst_w = src_width; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
176 blit.dst_h = src_height; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
177 blit.dst_format = IMGFMT_BGR16; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
178 if(ioctl(tdfx_fd,TDFX_VID_BLIT,&blit)) |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
179 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_BlitFailed); |
9567
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
180 } |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
181 return; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
182 } |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
183 memset(&blit,0,sizeof(tdfx_vid_blit_t)); |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
184 blit.src = back_buffer; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
185 blit.src_stride = src_stride; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
186 blit.src_x = 0; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
187 blit.src_y = 0; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
188 blit.src_w = src_width; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
189 blit.src_h = src_height; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
190 blit.src_format = src_fmt; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
191 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
192 blit.dst = front_buffer; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
193 blit.dst_stride = dst_stride; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
194 blit.dst_x = 0; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
195 blit.dst_y = 0; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
196 blit.dst_w = dst_width; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
197 blit.dst_h = dst_height; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
198 blit.dst_format = dst_fmt; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
199 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
200 if(ioctl(tdfx_fd,TDFX_VID_BLIT,&blit)) |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
201 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_BlitFailed); |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
202 } |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
203 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
204 static int |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
205 draw_frame(uint8_t *src[]) |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
206 { |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
207 int stride[] = { src_stride, 0, 0}; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
208 return draw_slice(src,stride,src_width, src_height,0,0); |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
209 } |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
210 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
211 static int |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
212 query_format(uint32_t format) |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
213 { |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
214 switch(format) { |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
215 case IMGFMT_BGR8: |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
216 if(tdfx_cfg.screen_format == TDFX_VID_FORMAT_BGR8) |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
9569
diff
changeset
|
217 return VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW | VFCAP_HWSCALE_UP | VFCAP_HWSCALE_DOWN | VFCAP_ACCEPT_STRIDE; |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
218 return 0; |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
219 case IMGFMT_YUY2: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
220 case IMGFMT_UYVY: |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
221 case IMGFMT_BGR15: |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
222 case IMGFMT_BGR16: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
223 case IMGFMT_BGR24: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
224 case IMGFMT_BGR32: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
225 case IMGFMT_YV12: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
226 case IMGFMT_I420: |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
227 if(tdfx_cfg.screen_format == TDFX_VID_FORMAT_BGR8) |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
228 return 0; |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
9569
diff
changeset
|
229 return VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW | VFCAP_HWSCALE_UP | VFCAP_HWSCALE_DOWN | VFCAP_ACCEPT_STRIDE; |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
230 } |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
231 return 0; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
232 } |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
233 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
234 static int |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
9569
diff
changeset
|
235 config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t flags, char *title, uint32_t format) |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
236 { |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
237 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
238 if(tdfx_fd < 0) |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
239 return 1; |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
240 // When we are run as sub vo we must follow the size gaven to us |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
9569
diff
changeset
|
241 if(!(flags & VOFLAG_XOVERLAY_SUB_VO)) { |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
242 if(!vo_screenwidth) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
243 vo_screenwidth = tdfx_cfg.screen_width; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
244 if(!vo_screenheight) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
245 vo_screenheight = tdfx_cfg.screen_height; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27508
diff
changeset
|
246 |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
247 aspect_save_orig(width,height); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
248 aspect_save_prescale(d_width,d_height); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
249 aspect_save_screenres(vo_screenwidth,vo_screenheight); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27508
diff
changeset
|
250 |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
9569
diff
changeset
|
251 if(flags&VOFLAG_FULLSCREEN) { /* -fs */ |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
252 aspect(&d_width,&d_height,A_ZOOM); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
253 vo_fs = VO_TRUE; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
254 } else { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
255 aspect(&d_width,&d_height,A_NOZOOM); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
256 vo_fs = VO_FALSE; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
257 } |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
258 } |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
259 src_width = width; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
260 src_height = height; |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
261 buffer_size = 0; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
262 buffer_stride[0] = 0; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
263 src_fmt = 0; |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
264 switch(format) { |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
265 case IMGFMT_BGR8: |
9567
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
266 case IMGFMT_BGR24: |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
267 case IMGFMT_BGR32: |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
268 if(use_overlay) |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
269 mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_TDFXVID_NonNativeOverlayFormatNeedConversion); |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
270 case IMGFMT_BGR15: |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
271 case IMGFMT_BGR16: |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27508
diff
changeset
|
272 src_bpp = ((format & 0x3F)+7)/8; |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
273 break; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
274 case IMGFMT_YV12: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
275 case IMGFMT_I420: |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
276 buffer_size = src_width * src_height * 3 / 2; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
277 buffer_stride[0] = ((src_width+1)/2)*2; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
278 buffer_stride[1] = buffer_stride[2] = buffer_stride[0]/2; |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
279 src_fmt = TDFX_VID_FORMAT_YUY2; |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
280 case IMGFMT_YUY2: |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27508
diff
changeset
|
281 case IMGFMT_UYVY: |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
282 src_bpp = 2; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
283 break; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
284 default: |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
285 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_UnsupportedInputFormat,format); |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
286 return 1; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
287 } |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
288 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
289 img_fmt = format; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
290 src_stride = src_width*src_bpp; |
9567
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
291 // The overlay need a 4 bytes aligned stride |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
292 if(use_overlay) |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
293 src_stride = ((src_stride+3)/4)*4; |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
294 if(!src_fmt) |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
295 src_fmt = format; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
296 if(!buffer_size) |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
297 buffer_size = src_stride*src_height; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
298 if(!buffer_stride[0]) |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
299 buffer_stride[0] = src_stride; |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
300 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
301 dst_fmt = tdfx_cfg.screen_format; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
302 dst_bpp = ((dst_fmt & 0x3F)+7)/8; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
303 dst_width = d_width; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
304 dst_height = d_height; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
305 dst_stride = tdfx_cfg.screen_stride; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
306 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
307 tdfx_page = tdfx_cfg.screen_stride*tdfx_cfg.screen_height; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
308 front_buffer = tdfx_cfg.screen_start; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
309 back_buffer = front_buffer + tdfx_page; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
310 |
9567
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
311 while(use_overlay) { |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
312 tdfx_vid_overlay_t ov; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
313 uint32_t ov_fmt = src_fmt, ov_stride = src_stride; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
314 // Align the buffer |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
315 back_buffer = (((back_buffer+3)/4)*4); |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
316 // With the overlay the front buffer is not on the screen |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
317 // so we take the back buffer |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
318 front_buffer = back_buffer; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
319 switch(src_fmt) { |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
320 case IMGFMT_BGR8: |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
321 case IMGFMT_BGR24: |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
322 case IMGFMT_BGR32: |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
323 back_buffer = front_buffer + 2*(src_stride*src_height); |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
324 ov_stride = dst_stride = src_width<<1; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
325 ov_fmt = IMGFMT_BGR16; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
326 break; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
327 } |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
328 ov.src[0] = front_buffer; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
329 ov.src[1] = front_buffer + (src_stride*src_height); |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
330 ov.src_width = src_width; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
331 ov.src_height = src_height; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
332 ov.src_stride = ov_stride; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
333 ov.format = ov_fmt; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
334 ov.dst_width = dst_width; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
335 ov.dst_height = dst_height; |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
336 ov.dst_x = vo_dx; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
337 ov.dst_y = vo_dy; |
9567
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
338 ov.use_colorkey = 0; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
339 |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
340 if(ioctl(tdfx_fd,TDFX_VID_SET_OVERLAY,&ov)) { |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
341 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_OverlaySetupFailed); |
9567
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
342 use_overlay = 0; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
343 break; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
344 } |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
345 tdfx_ov = ov; |
9567
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
346 if(use_overlay == 1) { |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
347 if(ioctl(tdfx_fd,TDFX_VID_OVERLAY_ON)) { |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
348 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_OverlayOnFailed); |
9567
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
349 use_overlay = 0; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
350 break; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
351 } |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
352 use_overlay++; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
353 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27508
diff
changeset
|
354 |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
355 mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_TDFXVID_OverlayReady, |
9567
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
356 src_width,src_stride,src_height,src_bpp, |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
357 dst_width,dst_stride,dst_height,dst_bpp); |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
358 break; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
359 } |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
360 |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
361 if(!use_overlay) |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
362 mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_TDFXVID_TextureBlitReady, |
9567
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
363 src_width,src_stride,src_height,src_bpp, |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
364 dst_width,dst_stride,dst_height,dst_bpp); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27508
diff
changeset
|
365 |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
366 return 0; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
367 } |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
368 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
369 static void |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
370 uninit(void) |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
371 { |
9567
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
372 if(use_overlay == 2) { |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
373 if(ioctl(tdfx_fd,TDFX_VID_OVERLAY_OFF)) |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
374 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_OverlayOffFailed); |
9567
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
375 use_overlay--; |
0c9c02cfe815
Support for the overlay, that save one stretch blit for bgr16 and YUV formats
albeu
parents:
9559
diff
changeset
|
376 } |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
377 close(tdfx_fd); |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
378 tdfx_fd = -1; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
379 } |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
380 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
381 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
382 static void check_events(void) |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
383 { |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
384 } |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
385 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
386 static int preinit(const char *arg) |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
387 { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27508
diff
changeset
|
388 |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
389 tdfx_fd = open(arg ? arg : "/dev/tdfx_vid", O_RDWR); |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
390 if(tdfx_fd < 0) { |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
391 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_CantOpen,arg ? arg : "/dev/tdfx_vid", |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
392 strerror(errno)); |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
393 return 1; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
394 } |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
395 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
396 if(ioctl(tdfx_fd,TDFX_VID_GET_CONFIG,&tdfx_cfg)) { |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
397 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_CantGetCurrentCfg,strerror(errno)); |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
398 return 1; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
399 } |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
400 |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
401 mp_msg(MSGT_VO,MSGL_INFO, "tdfx_vid version %d\n" |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
402 " Ram: %d\n" |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
403 " Screen: %d x %d\n" |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
404 " Format: %c%c%c%d\n", |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
405 tdfx_cfg.version, |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
406 tdfx_cfg.ram_size, |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
407 tdfx_cfg.screen_width, tdfx_cfg.screen_height, |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
408 tdfx_cfg.screen_format>>24,(tdfx_cfg.screen_format>>16)&0xFF, |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
409 (tdfx_cfg.screen_format>>8)&0xFF,tdfx_cfg.screen_format&0xFF); |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
410 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
411 // For now just allocate more than i ever need |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
412 agp_mem = mmap( NULL, 1024*768*4, PROT_READ | PROT_WRITE, MAP_SHARED, |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
413 tdfx_fd, 0); |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
414 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
415 if(agp_mem == MAP_FAILED) { |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
416 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_MemmapFailed); |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
417 return 1; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
418 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27508
diff
changeset
|
419 |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
420 memset(agp_mem,0,1024*768*4); |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
421 |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
422 return 0; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
423 } |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
424 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
425 static uint32_t get_image(mp_image_t *mpi) { |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
426 int buf = 0; |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
427 |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
428 #ifdef VERBOSE |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
429 printf("Get image %d\n",buf); |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
430 #endif |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
431 |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
432 // Currently read are too slow bcs we read from the |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
433 // agp aperture and not the memory directly |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
434 //if(mpi->flags&MP_IMGFLAG_READABLE) return VO_FALSE; |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
435 |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
436 if(mpi->flags&MP_IMGFLAG_READABLE && |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
437 (mpi->type==MP_IMGTYPE_IPB || mpi->type==MP_IMGTYPE_IP)){ |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
438 // reference (I/P) frame of IP or IPB: |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
439 if(num_buffer<2) return VO_FALSE; // not enough |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
440 current_ip_buf^=1; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
441 // for IPB with 2 buffers we can DR only one of the 2 P frames: |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
442 if(mpi->type==MP_IMGTYPE_IPB && num_buffer<3 && current_ip_buf) return VO_FALSE; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
443 buf=current_ip_buf; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
444 if(mpi->type==MP_IMGTYPE_IPB) ++buf; // preserve space for B |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
445 } |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
446 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
447 switch(mpi->imgfmt) { |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
448 case IMGFMT_YUY2: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
449 case IMGFMT_UYVY: |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
450 case IMGFMT_BGR8: |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
451 case IMGFMT_BGR15: |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
452 case IMGFMT_BGR16: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
453 case IMGFMT_BGR24: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
454 case IMGFMT_BGR32: |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
455 mpi->planes[0] = agp_mem + buf * buffer_size; |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
456 mpi->stride[0] = src_stride; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
457 break; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
458 case IMGFMT_YV12: |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
459 case IMGFMT_I420: |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
460 mpi->planes[0] = agp_mem + buf * buffer_size; |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
461 mpi->stride[0] = mpi->width; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
462 mpi->planes[1] = mpi->planes[0] + mpi->stride[0]*mpi->height; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
463 mpi->stride[1] = mpi->chroma_width; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
464 mpi->planes[2] = mpi->planes[1] + mpi->stride[1]*mpi->chroma_height; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
465 mpi->stride[2] = mpi->chroma_width; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
466 break; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
467 default: |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
468 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_GetImageTodo); |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
469 return VO_FALSE; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
470 } |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
471 mpi->flags |= MP_IMGFLAG_DIRECT; |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
472 mpi->priv = (void*)buf; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27508
diff
changeset
|
473 |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
474 return VO_TRUE; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
475 } |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
476 |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
477 static uint32_t start_slice(mp_image_t *mpi){ |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
478 int buf = 0; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
479 |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
480 #ifdef VERBOSE |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
481 printf("Start slices %d\n",buf); |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
482 #endif |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
483 |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
484 if(mpi->flags & MP_IMGFLAG_DIRECT) |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
485 buf = (int)mpi->priv; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
486 current_buffer = buf; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
487 |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
488 return VO_TRUE; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
489 } |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
490 |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
491 static uint32_t draw_image(mp_image_t *mpi){ |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
492 int buf = 0; |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
493 tdfx_vid_agp_move_t mov; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
494 tdfx_vid_yuv_t yuv; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
495 int p; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
496 uint8_t* planes[3]; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
497 |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
498 #ifdef VERBOSE |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
499 printf("Draw image %d\n",buf); |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
500 #endif |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
501 |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
502 if(mpi->flags & MP_IMGFLAG_DIRECT) |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
503 buf = (int)mpi->priv; |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
504 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
505 switch(mpi->imgfmt) { |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
506 case IMGFMT_YUY2: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
507 case IMGFMT_UYVY: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
508 case IMGFMT_BGR8: |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
509 case IMGFMT_BGR15: |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
510 case IMGFMT_BGR16: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
511 case IMGFMT_BGR24: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
512 case IMGFMT_BGR32: |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
513 if(!(mpi->flags&(MP_IMGFLAG_DIRECT|MP_IMGFLAG_DRAW_CALLBACK))) { |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
514 // copy to agp_mem |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
515 #ifdef VERBOSE |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
516 printf("Memcpy\n"); |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
517 #endif |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
518 planes[0] = agp_mem + buf * buffer_size; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
519 mem2agpcpy_pic(planes[0],mpi->planes[0],src_bpp*mpi->width,mpi->height, |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
520 buffer_stride[0],mpi->stride[0]); |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
521 } else |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
522 planes[0] = agp_mem + buf * buffer_size; |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
523 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
524 mov.move2 = TDFX_VID_MOVE_2_PACKED; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
525 mov.width = mpi->width*((mpi->bpp+7)/8); |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
526 mov.height = mpi->height; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
527 mov.src = planes[0] - agp_mem; |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
528 mov.src_stride = buffer_stride[0]; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27508
diff
changeset
|
529 |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
530 mov.dst = back_buffer; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
531 mov.dst_stride = src_stride; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27508
diff
changeset
|
532 |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
533 if(ioctl(tdfx_fd,TDFX_VID_AGP_MOVE,&mov)) |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
534 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_AgpMoveFailed); |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
535 break; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
536 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
537 case IMGFMT_YV12: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
538 case IMGFMT_I420: |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
539 if(!(mpi->flags&(MP_IMGFLAG_DIRECT|MP_IMGFLAG_DRAW_CALLBACK))) { |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
540 // Copy to agp mem |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
541 #ifdef VERBOSE |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
542 printf("Memcpy\n"); |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
543 #endif |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
544 planes[0] = agp_mem + buf * buffer_size; |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
545 memcpy_pic(planes[0],mpi->planes[0],mpi->width,mpi->height, |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
546 buffer_stride[0],mpi->stride[0]); |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
547 planes[1] = planes[0] + (mpi->height*mpi->stride[0]); |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
548 memcpy_pic(planes[1],mpi->planes[1],mpi->chroma_width,mpi->chroma_height, |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
549 buffer_stride[1],mpi->stride[1]); |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
550 planes[2] = planes[1] + (mpi->chroma_height*mpi->stride[1]); |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
551 memcpy_pic(planes[2],mpi->planes[2],mpi->chroma_width,mpi->chroma_height, |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
552 buffer_stride[2],mpi->stride[2]); |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
553 } else { |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
554 planes[0] = agp_mem + buf * buffer_size; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
555 planes[1] = planes[0] + buffer_stride[0] * src_height; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
556 planes[2] = planes[1] + buffer_stride[1] * src_height/2; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
557 } |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
558 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
559 // Setup the yuv thing |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
560 yuv.base = back_buffer; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
561 yuv.stride = src_stride; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
562 if(ioctl(tdfx_fd,TDFX_VID_SET_YUV,&yuv)) { |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
563 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_SetYuvFailed); |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
564 break; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
565 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27508
diff
changeset
|
566 |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
567 |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
568 // Now agp move that |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
569 // Y |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
570 mov.move2 = TDFX_VID_MOVE_2_YUV; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
571 mov.width = mpi->width; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
572 mov.height = mpi->height; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
573 mov.src = planes[0] - agp_mem; |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
574 mov.src_stride = buffer_stride[0]; |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
575 mov.dst = 0x0; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
576 mov.dst_stride = TDFX_VID_YUV_STRIDE; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
577 |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
578 if(ioctl(tdfx_fd,TDFX_VID_AGP_MOVE,&mov)) { |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
579 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_AgpMoveFailedOnYPlane); |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
580 break; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
581 } |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
582 //return 0; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
583 // U |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
584 p = mpi->imgfmt == IMGFMT_YV12 ? 1 : 2; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
585 mov.width = mpi->chroma_width; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
586 mov.height = mpi->chroma_height; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
587 mov.src = planes[p] - agp_mem; |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
588 mov.src_stride = buffer_stride[p]; |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
589 mov.dst += TDFX_VID_YUV_PLANE_SIZE; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
590 if(ioctl(tdfx_fd,TDFX_VID_AGP_MOVE,&mov)) { |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
591 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_AgpMoveFailedOnUPlane); |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
592 break; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
593 } |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
594 // V |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
595 p = mpi->imgfmt == IMGFMT_YV12 ? 2 : 1; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
596 mov.src = planes[p] - agp_mem; |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
597 mov.src_stride = buffer_stride[p]; |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
598 mov.dst += TDFX_VID_YUV_PLANE_SIZE; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
599 if(ioctl(tdfx_fd,TDFX_VID_AGP_MOVE,&mov)) { |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
600 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_AgpMoveFailedOnVPlane); |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
601 break; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
602 } |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
603 break; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
604 default: |
18335 | 605 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_UnknownFormat,mpi->imgfmt); |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
606 return VO_TRUE; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
607 } |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
608 |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
609 return VO_TRUE; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
610 } |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
611 |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
612 static uint32_t fullscreen(void) { |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
613 vo_fs ^= 1; |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
614 aspect(&dst_width,&dst_height,vo_fs ? A_ZOOM : A_NOZOOM); |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
615 // This does not work :(( |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
616 //clear_screen(); |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
617 return VO_TRUE; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
618 } |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
619 |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
620 static uint32_t set_window(mp_win_t* w) { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
621 if(!use_overlay) return VO_FALSE; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
622 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
623 tdfx_ov.dst_x = w->x; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
624 tdfx_ov.dst_y = w->y; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
625 tdfx_ov.dst_width = w->w; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
626 tdfx_ov.dst_height = w->h; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
627 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
628 if(ioctl(tdfx_fd,TDFX_VID_SET_OVERLAY,&tdfx_ov)) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
629 mp_msg(MSGT_VO, MSGL_V, "tdfx_vid: set window failed\n"); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
630 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
631 return VO_TRUE; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
632 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
633 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
634 static uint32_t set_colorkey(mp_colorkey_t* colork) { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
635 if(!use_overlay) return VO_FALSE; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
636 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
637 tdfx_ov.colorkey[0] = tdfx_ov.colorkey[1] = colork->x11; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
638 tdfx_ov.use_colorkey = 1; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
639 tdfx_ov.invert_colorkey = 0; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
640 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
641 if(ioctl(tdfx_fd,TDFX_VID_SET_OVERLAY,&tdfx_ov)) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
642 mp_msg(MSGT_VO, MSGL_V, "tdfx_vid: set colorkey failed\n"); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
643 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
644 return VO_TRUE; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
645 } |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
646 |
33305
ddb45e9443ec
Remove the variable arguments from the libvo control() functions.
iive
parents:
30633
diff
changeset
|
647 static int control(uint32_t request, void *data) |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
648 { |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
649 switch (request) { |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
650 case VOCTRL_QUERY_FORMAT: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
651 return query_format(*((uint32_t*)data)); |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
652 case VOCTRL_GET_IMAGE: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
653 return get_image(data); |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
654 case VOCTRL_DRAW_IMAGE: |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
655 return draw_image(data); |
9559
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
656 case VOCTRL_START_SLICE: |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
657 return start_slice(data); |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
658 case VOCTRL_FULLSCREEN: |
9883afd390dc
Update, add support for DR and draw image. Sadly reading from the agp
albeu
parents:
9546
diff
changeset
|
659 return fullscreen(); |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
660 case VOCTRL_XOVERLAY_SUPPORT: |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
661 return VO_TRUE; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
662 case VOCTRL_XOVERLAY_SET_COLORKEY: |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
663 return set_colorkey(data); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
664 case VOCTRL_XOVERLAY_SET_WIN: |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9567
diff
changeset
|
665 return set_window(data); |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
666 } |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
667 return VO_NOTIMPL; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
diff
changeset
|
668 } |