annotate dec_video.c @ 4559:5dc383bb1c82

added mga_top_reserved module parameter to skip a configurable amount of space at the top of video memory. this is needed to prevent corruption of the kernel's console font when using the "fastfont" option with matroxfb.
author rfelker
date Thu, 07 Feb 2002 02:07:29 +0000
parents d604c3db9a76
children b1fe5f58cd82
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
1
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
2 #define USE_MP_IMAGE
2775
8e3875816f6d added missing #include <malloc.h>
pl
parents: 2716
diff changeset
3
8e3875816f6d added missing #include <malloc.h>
pl
parents: 2716
diff changeset
4 #include "config.h"
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
5
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
6 #include <stdio.h>
2775
8e3875816f6d added missing #include <malloc.h>
pl
parents: 2716
diff changeset
7 #ifdef HAVE_MALLOC_H
8e3875816f6d added missing #include <malloc.h>
pl
parents: 2716
diff changeset
8 #include <malloc.h>
8e3875816f6d added missing #include <malloc.h>
pl
parents: 2716
diff changeset
9 #endif
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
10 #include <stdlib.h>
1430
1728d249c783 missing unistd.h (requires for off_t under freebsd)
arpi
parents: 1429
diff changeset
11 #include <unistd.h>
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
12
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1547
diff changeset
13 #include "mp_msg.h"
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1949
diff changeset
14 #include "help_mp.h"
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
15
1327
b12e1817bcc2 some cleanup - fixed warnings, removed old stuff, moved audio resync to dec_audio
arpi
parents: 1309
diff changeset
16 #include "linux/timer.h"
1496
8c3e93ef116d cleanup...
arpi
parents: 1489
diff changeset
17 #include "linux/shmem.h"
1327
b12e1817bcc2 some cleanup - fixed warnings, removed old stuff, moved audio resync to dec_audio
arpi
parents: 1309
diff changeset
18
2563
fc124f9db88e more cleanup, warnings fixed
arpi
parents: 2541
diff changeset
19 extern int verbose; // defined in mplayer.c
fc124f9db88e more cleanup, warnings fixed
arpi
parents: 2541
diff changeset
20
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
21 #include "stream.h"
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
22 #include "demuxer.h"
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1367
diff changeset
23 #include "parse_es.h"
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
24
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
25 #include "codec-cfg.h"
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
26
1422
d02e0dcaf077 libvo2 support
arpi
parents: 1410
diff changeset
27 #ifdef USE_LIBVO2
d02e0dcaf077 libvo2 support
arpi
parents: 1410
diff changeset
28 #include "libvo2/libvo2.h"
d02e0dcaf077 libvo2 support
arpi
parents: 1410
diff changeset
29 #else
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
30 #include "libvo/video_out.h"
1422
d02e0dcaf077 libvo2 support
arpi
parents: 1410
diff changeset
31 #endif
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
32
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
33 #include "stheader.h"
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
34
2563
fc124f9db88e more cleanup, warnings fixed
arpi
parents: 2541
diff changeset
35 #include "dec_video.h"
fc124f9db88e more cleanup, warnings fixed
arpi
parents: 2541
diff changeset
36
4486
e69bed07cb27 further work on the RoQ audio decoder
melanson
parents: 4462
diff changeset
37 #include "roqav.h"
e69bed07cb27 further work on the RoQ audio decoder
melanson
parents: 4462
diff changeset
38
2563
fc124f9db88e more cleanup, warnings fixed
arpi
parents: 2541
diff changeset
39 // ===================================================================
fc124f9db88e more cleanup, warnings fixed
arpi
parents: 2541
diff changeset
40
fc124f9db88e more cleanup, warnings fixed
arpi
parents: 2541
diff changeset
41 extern double video_time_usage;
fc124f9db88e more cleanup, warnings fixed
arpi
parents: 2541
diff changeset
42 extern double vout_time_usage;
4388
b6b429d10296 Support for HW equalizing
nick
parents: 4301
diff changeset
43 extern vo_vaa_t vo_vaa;
2563
fc124f9db88e more cleanup, warnings fixed
arpi
parents: 2541
diff changeset
44
fc124f9db88e more cleanup, warnings fixed
arpi
parents: 2541
diff changeset
45 extern int frameratecode2framerate[16];
fc124f9db88e more cleanup, warnings fixed
arpi
parents: 2541
diff changeset
46
fc124f9db88e more cleanup, warnings fixed
arpi
parents: 2541
diff changeset
47 #include "dll_init.h"
fc124f9db88e more cleanup, warnings fixed
arpi
parents: 2541
diff changeset
48
fc124f9db88e more cleanup, warnings fixed
arpi
parents: 2541
diff changeset
49 //#include <inttypes.h>
fc124f9db88e more cleanup, warnings fixed
arpi
parents: 2541
diff changeset
50 //#include "libvo/img_format.h"
fc124f9db88e more cleanup, warnings fixed
arpi
parents: 2541
diff changeset
51
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
52 #include "libmpeg2/mpeg2.h"
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
53 #include "libmpeg2/mpeg2_internal.h"
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
54
2184
966ec115c87f integrated new postproc code
arpi
parents: 2087
diff changeset
55 #include "postproc/postprocess.h"
966ec115c87f integrated new postproc code
arpi
parents: 2087
diff changeset
56
3144
ce34f5b40272 runtime cpu detection
michael
parents: 3073
diff changeset
57 #include "cpudetect.h"
ce34f5b40272 runtime cpu detection
michael
parents: 3073
diff changeset
58
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
59 extern picture_t *picture; // exported from libmpeg2/decode.c
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
60
2563
fc124f9db88e more cleanup, warnings fixed
arpi
parents: 2541
diff changeset
61 int divx_quality=0;
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
62
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
63 #ifdef USE_DIRECTSHOW
3947
2eb8c8aacca7 using dshow headers from dshow/ instead of c++ version
arpi
parents: 3877
diff changeset
64 #include "loader/dshow/DS_VideoDecoder.h"
2eb8c8aacca7 using dshow headers from dshow/ instead of c++ version
arpi
parents: 3877
diff changeset
65 static DS_VideoDecoder* ds_vdec=NULL;
3062
7ea7e5fce639 NEW_DSHOW added (for dshow C version)
arpi
parents: 2938
diff changeset
66 #endif
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
67
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
68 #ifdef USE_LIBAVCODEC
2496
b2ce5d6d7d4f libffmpeg.so support
nick
parents: 2384
diff changeset
69 #ifdef USE_LIBAVCODEC_SO
b2ce5d6d7d4f libffmpeg.so support
nick
parents: 2384
diff changeset
70 #include <libffmpeg/avcodec.h>
b2ce5d6d7d4f libffmpeg.so support
nick
parents: 2384
diff changeset
71 #else
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
72 #include "libavcodec/avcodec.h"
2496
b2ce5d6d7d4f libffmpeg.so support
nick
parents: 2384
diff changeset
73 #endif
1927
296208b47fd4 FFmpeg audio codecs support
arpi
parents: 1873
diff changeset
74 static AVCodec *lavc_codec=NULL;
296208b47fd4 FFmpeg audio codecs support
arpi
parents: 1873
diff changeset
75 static AVCodecContext lavc_context;
296208b47fd4 FFmpeg audio codecs support
arpi
parents: 1873
diff changeset
76 static AVPicture lavc_picture;
296208b47fd4 FFmpeg audio codecs support
arpi
parents: 1873
diff changeset
77 int avcodec_inited=0;
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
78 #endif
2228
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
79 #ifdef FF_POSTPROCESS
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
80 unsigned int lavc_pp=0;
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
81 #endif
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
82
4489
745cf5ba7117 make opendivx codec optional at compiletime
rfelker
parents: 4486
diff changeset
83 #ifdef USE_DIVX
1349
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
84 #ifndef NEW_DECORE
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
85 #include "opendivx/decore.h"
1349
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
86 #else
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
87 #include <decore.h>
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
88 #endif
4489
745cf5ba7117 make opendivx codec optional at compiletime
rfelker
parents: 4486
diff changeset
89 #endif
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
90
2378
2d3b722512ed #define USE_XANIM to enable xanim stuff
arpi
parents: 2342
diff changeset
91 #ifdef USE_XANIM
2d3b722512ed #define USE_XANIM to enable xanim stuff
arpi
parents: 2342
diff changeset
92 #include "xacodec.h"
2d3b722512ed #define USE_XANIM to enable xanim stuff
arpi
parents: 2342
diff changeset
93 #endif
2d3b722512ed #define USE_XANIM to enable xanim stuff
arpi
parents: 2342
diff changeset
94
2938
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
95 #ifdef USE_TV
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
96 #include "libmpdemux/tv.h"
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
97 extern int tv_param_on;
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
98 extern tvi_handle_t *tv_handler;
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
99 #endif
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
100
1948
e0cc7b7290ec native codec 'rle' added
arpi
parents: 1927
diff changeset
101 void AVI_Decode_RLE8(char *image,char *delta,int tdsize,
e0cc7b7290ec native codec 'rle' added
arpi
parents: 1927
diff changeset
102 unsigned int *map,int imagex,int imagey,unsigned char x11_bytes_pixel);
e0cc7b7290ec native codec 'rle' added
arpi
parents: 1927
diff changeset
103
2827
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
104 void AVI_Decode_Video1_16(
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
105 char *encoded,
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
106 int encoded_size,
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
107 char *decoded,
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
108 int width,
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
109 int height,
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
110 int bytes_per_pixel);
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
111
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
112 void AVI_Decode_Video1_8(
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
113 char *encoded,
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
114 int encoded_size,
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
115 char *decoded,
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
116 int width,
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
117 int height,
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
118 unsigned char *palette_map,
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
119 int bytes_per_pixel);
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
120
3687
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
121 void Decode_Fli(
3172
bb38b6b072f8 support for FLI image decoding
melanson
parents: 3160
diff changeset
122 unsigned char *encoded,
bb38b6b072f8 support for FLI image decoding
melanson
parents: 3160
diff changeset
123 int encoded_size,
bb38b6b072f8 support for FLI image decoding
melanson
parents: 3160
diff changeset
124 unsigned char *decoded,
bb38b6b072f8 support for FLI image decoding
melanson
parents: 3160
diff changeset
125 int width,
bb38b6b072f8 support for FLI image decoding
melanson
parents: 3160
diff changeset
126 int height,
bb38b6b072f8 support for FLI image decoding
melanson
parents: 3160
diff changeset
127 int bytes_per_pixel);
bb38b6b072f8 support for FLI image decoding
melanson
parents: 3160
diff changeset
128
3687
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
129 void qt_decode_rle(
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
130 unsigned char *encoded,
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
131 int encoded_size,
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
132 unsigned char *decoded,
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
133 int width,
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
134 int height,
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
135 int encoded_bpp,
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
136 int bytes_per_pixel);
3172
bb38b6b072f8 support for FLI image decoding
melanson
parents: 3160
diff changeset
137
3804
53ed66a4f0bf NuppelVideo decoder added, based on Panagiotis Issaris' patch
alex
parents: 3745
diff changeset
138 void decode_nuv(
53ed66a4f0bf NuppelVideo decoder added, based on Panagiotis Issaris' patch
alex
parents: 3745
diff changeset
139 unsigned char *encoded,
53ed66a4f0bf NuppelVideo decoder added, based on Panagiotis Issaris' patch
alex
parents: 3745
diff changeset
140 int encoded_size,
53ed66a4f0bf NuppelVideo decoder added, based on Panagiotis Issaris' patch
alex
parents: 3745
diff changeset
141 unsigned char *decoded,
53ed66a4f0bf NuppelVideo decoder added, based on Panagiotis Issaris' patch
alex
parents: 3745
diff changeset
142 int width,
53ed66a4f0bf NuppelVideo decoder added, based on Panagiotis Issaris' patch
alex
parents: 3745
diff changeset
143 int height);
53ed66a4f0bf NuppelVideo decoder added, based on Panagiotis Issaris' patch
alex
parents: 3745
diff changeset
144
3969
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
145 void *decode_cinepak_init(void);
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
146
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
147 void decode_cinepak(
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
148 void *context,
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
149 unsigned char *buf,
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
150 int size,
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
151 unsigned char *frame,
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
152 int width,
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
153 int height,
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
154 int bit_per_pixel);
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
155
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
156 void decode_cyuv(
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
157 unsigned char *buf,
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
158 int size,
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
159 unsigned char *frame,
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
160 int width,
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
161 int height,
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
162 int bit_per_pixel);
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
163
4275
818be6ba8758 initial implementation of SMC codec; it almost works, too!
melanson
parents: 4227
diff changeset
164 int qt_init_decode_smc(void);
818be6ba8758 initial implementation of SMC codec; it almost works, too!
melanson
parents: 4227
diff changeset
165
4227
4b652eac6738 added skeleton for QT SMC decoder
melanson
parents: 4188
diff changeset
166 void qt_decode_smc(
4b652eac6738 added skeleton for QT SMC decoder
melanson
parents: 4188
diff changeset
167 unsigned char *encoded,
4b652eac6738 added skeleton for QT SMC decoder
melanson
parents: 4188
diff changeset
168 int encoded_size,
4b652eac6738 added skeleton for QT SMC decoder
melanson
parents: 4188
diff changeset
169 unsigned char *decoded,
4b652eac6738 added skeleton for QT SMC decoder
melanson
parents: 4188
diff changeset
170 int width,
4b652eac6738 added skeleton for QT SMC decoder
melanson
parents: 4188
diff changeset
171 int height,
4275
818be6ba8758 initial implementation of SMC codec; it almost works, too!
melanson
parents: 4227
diff changeset
172 unsigned char *palette_map,
4227
4b652eac6738 added skeleton for QT SMC decoder
melanson
parents: 4188
diff changeset
173 int bytes_per_pixel);
4b652eac6738 added skeleton for QT SMC decoder
melanson
parents: 4188
diff changeset
174
4301
8f43b10f387f added skeleton for Duck Truemotion v1 decoder (doesn't do anything yet)
melanson
parents: 4275
diff changeset
175 void decode_duck_tm1(
8f43b10f387f added skeleton for Duck Truemotion v1 decoder (doesn't do anything yet)
melanson
parents: 4275
diff changeset
176 unsigned char *encoded,
8f43b10f387f added skeleton for Duck Truemotion v1 decoder (doesn't do anything yet)
melanson
parents: 4275
diff changeset
177 int encoded_size,
8f43b10f387f added skeleton for Duck Truemotion v1 decoder (doesn't do anything yet)
melanson
parents: 4275
diff changeset
178 unsigned char *decoded,
8f43b10f387f added skeleton for Duck Truemotion v1 decoder (doesn't do anything yet)
melanson
parents: 4275
diff changeset
179 int width,
8f43b10f387f added skeleton for Duck Truemotion v1 decoder (doesn't do anything yet)
melanson
parents: 4275
diff changeset
180 int height,
8f43b10f387f added skeleton for Duck Truemotion v1 decoder (doesn't do anything yet)
melanson
parents: 4275
diff changeset
181 int bytes_per_pixel);
8f43b10f387f added skeleton for Duck Truemotion v1 decoder (doesn't do anything yet)
melanson
parents: 4275
diff changeset
182
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
183 //**************************************************************************//
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
184 // The OpenDivX stuff:
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
185 //**************************************************************************//
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
186
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
187 #ifndef NEW_DECORE
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
188
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
189 static unsigned char *opendivx_src[3];
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
190 static int opendivx_stride[3];
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
191
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
192 // callback, the opendivx decoder calls this for each frame:
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
193 void convert_linux(unsigned char *puc_y, int stride_y,
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
194 unsigned char *puc_u, unsigned char *puc_v, int stride_uv,
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
195 unsigned char *bmp, int width_y, int height_y){
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
196
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
197 // printf("convert_yuv called %dx%d stride: %d,%d\n",width_y,height_y,stride_y,stride_uv);
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
198
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
199 opendivx_src[0]=puc_y;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
200 opendivx_src[1]=puc_u;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
201 opendivx_src[2]=puc_v;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
202
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
203 opendivx_stride[0]=stride_y;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
204 opendivx_stride[1]=stride_uv;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
205 opendivx_stride[2]=stride_uv;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
206 }
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
207 #endif
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
208
1429
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
209 int get_video_quality_max(sh_video_t *sh_video){
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
210 switch(sh_video->codec->driver){
2087
fbf7ce9401ff divx.dll o_bih workaround, postprocessing support
arpi
parents: 2049
diff changeset
211 #ifdef USE_WIN32DLL
fbf7ce9401ff divx.dll o_bih workaround, postprocessing support
arpi
parents: 2049
diff changeset
212 case VFM_VFW:
fbf7ce9401ff divx.dll o_bih workaround, postprocessing support
arpi
parents: 2049
diff changeset
213 case VFM_VFWEX:
2184
966ec115c87f integrated new postproc code
arpi
parents: 2087
diff changeset
214 return 9; // for Divx.dll (divx4)
2087
fbf7ce9401ff divx.dll o_bih workaround, postprocessing support
arpi
parents: 2049
diff changeset
215 #endif
1429
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
216 #ifdef USE_DIRECTSHOW
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
217 case VFM_DSHOW:
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
218 return 4;
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
219 #endif
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
220 #ifdef MPEG12_POSTPROC
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
221 case VFM_MPEG:
2184
966ec115c87f integrated new postproc code
arpi
parents: 2087
diff changeset
222 return GET_PP_QUALITY_MAX;
1429
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
223 #endif
2228
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
224 #ifdef FF_POSTPROCESS
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
225 case VFM_FFMPEG:
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
226 return GET_PP_QUALITY_MAX;
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
227 #endif
4489
745cf5ba7117 make opendivx codec optional at compiletime
rfelker
parents: 4486
diff changeset
228 #ifdef USE_DIVX
1429
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
229 case VFM_DIVX4:
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
230 case VFM_ODIVX:
2184
966ec115c87f integrated new postproc code
arpi
parents: 2087
diff changeset
231 #ifdef NEW_DECORE
966ec115c87f integrated new postproc code
arpi
parents: 2087
diff changeset
232 return 9; // for divx4linux
966ec115c87f integrated new postproc code
arpi
parents: 2087
diff changeset
233 #else
966ec115c87f integrated new postproc code
arpi
parents: 2087
diff changeset
234 return GET_PP_QUALITY_MAX; // for opendivx
966ec115c87f integrated new postproc code
arpi
parents: 2087
diff changeset
235 #endif
4489
745cf5ba7117 make opendivx codec optional at compiletime
rfelker
parents: 4486
diff changeset
236 #endif
1429
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
237 }
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
238 return 0;
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
239 }
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
240
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
241 void set_video_quality(sh_video_t *sh_video,int quality){
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
242 switch(sh_video->codec->driver){
2087
fbf7ce9401ff divx.dll o_bih workaround, postprocessing support
arpi
parents: 2049
diff changeset
243 #ifdef USE_WIN32DLL
fbf7ce9401ff divx.dll o_bih workaround, postprocessing support
arpi
parents: 2049
diff changeset
244 case VFM_VFW:
fbf7ce9401ff divx.dll o_bih workaround, postprocessing support
arpi
parents: 2049
diff changeset
245 case VFM_VFWEX:
fbf7ce9401ff divx.dll o_bih workaround, postprocessing support
arpi
parents: 2049
diff changeset
246 vfw_set_postproc(sh_video,10*quality);
fbf7ce9401ff divx.dll o_bih workaround, postprocessing support
arpi
parents: 2049
diff changeset
247 break;
fbf7ce9401ff divx.dll o_bih workaround, postprocessing support
arpi
parents: 2049
diff changeset
248 #endif
1429
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
249 #ifdef USE_DIRECTSHOW
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
250 case VFM_DSHOW: {
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
251 if(quality<0 || quality>4) quality=4;
3062
7ea7e5fce639 NEW_DSHOW added (for dshow C version)
arpi
parents: 2938
diff changeset
252 DS_VideoDecoder_SetValue(ds_vdec,"Quality",quality);
1429
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
253 }
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
254 break;
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
255 #endif
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
256 #ifdef MPEG12_POSTPROC
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
257 case VFM_MPEG: {
2184
966ec115c87f integrated new postproc code
arpi
parents: 2087
diff changeset
258 if(quality<0 || quality>GET_PP_QUALITY_MAX) quality=GET_PP_QUALITY_MAX;
966ec115c87f integrated new postproc code
arpi
parents: 2087
diff changeset
259 picture->pp_options=getPpModeForQuality(quality);
1429
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
260 }
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
261 break;
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
262 #endif
2228
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
263 #ifdef FF_POSTPROCESS
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
264 case VFM_FFMPEG:
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
265 if(quality<0 || quality>GET_PP_QUALITY_MAX) quality=GET_PP_QUALITY_MAX;
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
266 lavc_pp=getPpModeForQuality(quality);
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
267 break;
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
268 #endif
4489
745cf5ba7117 make opendivx codec optional at compiletime
rfelker
parents: 4486
diff changeset
269 #ifdef USE_DIVX
1429
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
270 case VFM_DIVX4:
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
271 case VFM_ODIVX: {
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
272 DEC_SET dec_set;
2184
966ec115c87f integrated new postproc code
arpi
parents: 2087
diff changeset
273 #ifdef NEW_DECORE
966ec115c87f integrated new postproc code
arpi
parents: 2087
diff changeset
274 if(quality<0 || quality>9) quality=9;
966ec115c87f integrated new postproc code
arpi
parents: 2087
diff changeset
275 dec_set.postproc_level=quality*10;
966ec115c87f integrated new postproc code
arpi
parents: 2087
diff changeset
276 #else
966ec115c87f integrated new postproc code
arpi
parents: 2087
diff changeset
277 if(quality<0 || quality>GET_PP_QUALITY_MAX) quality=GET_PP_QUALITY_MAX;
966ec115c87f integrated new postproc code
arpi
parents: 2087
diff changeset
278 dec_set.postproc_level=getPpModeForQuality(quality);
966ec115c87f integrated new postproc code
arpi
parents: 2087
diff changeset
279 #endif
1429
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
280 decore(0x123,DEC_OPT_SETPP,&dec_set,NULL);
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
281 }
4489
745cf5ba7117 make opendivx codec optional at compiletime
rfelker
parents: 4486
diff changeset
282 #endif
1429
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
283 break;
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
284 }
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
285 }
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
286
4395
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
287 int set_video_colors(sh_video_t *sh_video,char *item,int value)
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
288 {
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
289 if(vo_vaa.get_video_eq)
4388
b6b429d10296 Support for HW equalizing
nick
parents: 4301
diff changeset
290 {
4395
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
291 vidix_video_eq_t veq;
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
292 if(vo_vaa.get_video_eq(&veq) == 0)
4388
b6b429d10296 Support for HW equalizing
nick
parents: 4301
diff changeset
293 {
4395
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
294 int v_hw_equ_cap = veq.cap;
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
295 if(v_hw_equ_cap != 0)
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
296 {
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
297 if(vo_vaa.set_video_eq)
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
298 {
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
299 vidix_video_eq_t veq;
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
300 veq.flags = VEQ_FLG_ITU_R_BT_601; /* Fixme please !!! */
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
301 if(strcmp(item,"Brightness") == 0)
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
302 {
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
303 if(!(v_hw_equ_cap & VEQ_CAP_BRIGHTNESS)) goto try_sw_control;
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
304 veq.brightness = value*10;
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
305 veq.cap = VEQ_CAP_BRIGHTNESS;
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
306 }
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
307 else
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
308 if(strcmp(item,"Contrast") == 0)
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
309 {
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
310 if(!(v_hw_equ_cap & VEQ_CAP_CONTRAST)) goto try_sw_control;
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
311 veq.contrast = value*10;
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
312 veq.cap = VEQ_CAP_CONTRAST;
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
313 }
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
314 else
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
315 if(strcmp(item,"Saturation") == 0)
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
316 {
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
317 if(!(v_hw_equ_cap & VEQ_CAP_SATURATION)) goto try_sw_control;
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
318 veq.saturation = value*10;
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
319 veq.cap = VEQ_CAP_SATURATION;
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
320 }
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
321 else
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
322 if(strcmp(item,"Hue") == 0)
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
323 {
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
324 if(!(v_hw_equ_cap & VEQ_CAP_HUE)) goto try_sw_control;
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
325 veq.hue = value*10;
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
326 veq.cap = VEQ_CAP_HUE;
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
327 }
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
328 else goto try_sw_control;;
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
329 vo_vaa.set_video_eq(&veq);
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
330 }
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
331 return 1;
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
332 }
4388
b6b429d10296 Support for HW equalizing
nick
parents: 4301
diff changeset
333 }
b6b429d10296 Support for HW equalizing
nick
parents: 4301
diff changeset
334 }
4395
817530449706 New logic of HW equalizing:
nick
parents: 4388
diff changeset
335 try_sw_control:
1431
d1f9cc72a87f missing #ifdef DIRECTSHOW... thanx gruel
arpi
parents: 1430
diff changeset
336 #ifdef USE_DIRECTSHOW
2295
d48e1d714586 divx4 brightness etc support patch by Adam Tla/lka
arpi
parents: 2291
diff changeset
337 if(sh_video->codec->driver==VFM_DSHOW){
3062
7ea7e5fce639 NEW_DSHOW added (for dshow C version)
arpi
parents: 2938
diff changeset
338 DS_VideoDecoder_SetValue(ds_vdec,item,value);
1429
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
339 return 1;
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
340 }
1431
d1f9cc72a87f missing #ifdef DIRECTSHOW... thanx gruel
arpi
parents: 1430
diff changeset
341 #endif
2938
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
342
2295
d48e1d714586 divx4 brightness etc support patch by Adam Tla/lka
arpi
parents: 2291
diff changeset
343 #ifdef NEW_DECORE
d48e1d714586 divx4 brightness etc support patch by Adam Tla/lka
arpi
parents: 2291
diff changeset
344 #ifdef DECORE_VERSION
d48e1d714586 divx4 brightness etc support patch by Adam Tla/lka
arpi
parents: 2291
diff changeset
345 #if DECORE_VERSION >= 20011010
d48e1d714586 divx4 brightness etc support patch by Adam Tla/lka
arpi
parents: 2291
diff changeset
346 if(sh_video->codec->driver==VFM_DIVX4){
d48e1d714586 divx4 brightness etc support patch by Adam Tla/lka
arpi
parents: 2291
diff changeset
347 int option;
d48e1d714586 divx4 brightness etc support patch by Adam Tla/lka
arpi
parents: 2291
diff changeset
348 if(!strcmp(item,"Brightness")) option=DEC_GAMMA_BRIGHTNESS;
d48e1d714586 divx4 brightness etc support patch by Adam Tla/lka
arpi
parents: 2291
diff changeset
349 else if(!strcmp(item, "Contrast")) option=DEC_GAMMA_CONTRAST;
d48e1d714586 divx4 brightness etc support patch by Adam Tla/lka
arpi
parents: 2291
diff changeset
350 else if(!strcmp(item,"Saturation")) option=DEC_GAMMA_SATURATION;
d48e1d714586 divx4 brightness etc support patch by Adam Tla/lka
arpi
parents: 2291
diff changeset
351 else return 0;
d48e1d714586 divx4 brightness etc support patch by Adam Tla/lka
arpi
parents: 2291
diff changeset
352 value = (value * 256) / 100 - 128;
d48e1d714586 divx4 brightness etc support patch by Adam Tla/lka
arpi
parents: 2291
diff changeset
353 decore(0x123, DEC_OPT_GAMMA, (void *)option, (void *) value);
d48e1d714586 divx4 brightness etc support patch by Adam Tla/lka
arpi
parents: 2291
diff changeset
354 return 1;
d48e1d714586 divx4 brightness etc support patch by Adam Tla/lka
arpi
parents: 2291
diff changeset
355 }
d48e1d714586 divx4 brightness etc support patch by Adam Tla/lka
arpi
parents: 2291
diff changeset
356 #endif
d48e1d714586 divx4 brightness etc support patch by Adam Tla/lka
arpi
parents: 2291
diff changeset
357 #endif
d48e1d714586 divx4 brightness etc support patch by Adam Tla/lka
arpi
parents: 2291
diff changeset
358 #endif
2938
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
359
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
360 #ifdef USE_TV
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
361
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
362 if (tv_param_on == 1)
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
363 {
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
364 if (!strcmp(item, "Brightness"))
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
365 {
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
366 tv_set_color_options(tv_handler, TV_COLOR_BRIGHTNESS, value);
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
367 return(1);
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
368 }
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
369 if (!strcmp(item, "Hue"))
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
370 {
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
371 tv_set_color_options(tv_handler, TV_COLOR_HUE, value);
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
372 return(1);
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
373 }
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
374 if (!strcmp(item, "Saturation"))
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
375 {
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
376 tv_set_color_options(tv_handler, TV_COLOR_SATURATION, value);
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
377 return(1);
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
378 }
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
379 if (!strcmp(item, "Contrast"))
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
380 {
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
381 tv_set_color_options(tv_handler, TV_COLOR_CONTRAST, value);
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
382 return(1);
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
383 }
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
384 }
757c3ab1a45a added support for setting color values on tv interface
alex
parents: 2827
diff changeset
385 #endif
1429
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
386 return 0;
8986d06b2816 contrast/brightness/etc patch (temporary)
arpi
parents: 1422
diff changeset
387 }
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
388
2049
df41903fd7d7 VfW stuff moved to dll_init, warnings fixed, using dll_init.h
arpi
parents: 2044
diff changeset
389 void uninit_video(sh_video_t *sh_video){
1654
9d85b84e367e dec_video uninit
arpi
parents: 1653
diff changeset
390 if(!sh_video->inited) return;
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1949
diff changeset
391 mp_msg(MSGT_DECVIDEO,MSGL_V,"uninit video: %d \n",sh_video->codec->driver);
1654
9d85b84e367e dec_video uninit
arpi
parents: 1653
diff changeset
392 switch(sh_video->codec->driver){
1666
1667e1db5bb8 addedd #ifdefs to uninit
arpi
parents: 1664
diff changeset
393 #ifdef USE_LIBAVCODEC
1654
9d85b84e367e dec_video uninit
arpi
parents: 1653
diff changeset
394 case VFM_FFMPEG:
9d85b84e367e dec_video uninit
arpi
parents: 1653
diff changeset
395 if (avcodec_close(&lavc_context) < 0)
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1949
diff changeset
396 mp_msg(MSGT_DECVIDEO,MSGL_ERR, MSGTR_CantCloseCodec);
1654
9d85b84e367e dec_video uninit
arpi
parents: 1653
diff changeset
397 break;
1666
1667e1db5bb8 addedd #ifdefs to uninit
arpi
parents: 1664
diff changeset
398 #endif
1669
6c9207896241 Typo: #ifndef -> #ifdef
jkeil
parents: 1666
diff changeset
399 #ifdef USE_DIRECTSHOW
1664
69d305d84d55 directshow uninit
arpi
parents: 1658
diff changeset
400 case VFM_DSHOW: // Win32/DirectShow
3062
7ea7e5fce639 NEW_DSHOW added (for dshow C version)
arpi
parents: 2938
diff changeset
401 if(ds_vdec){ DS_VideoDecoder_Destroy(ds_vdec); ds_vdec=NULL; }
1664
69d305d84d55 directshow uninit
arpi
parents: 1658
diff changeset
402 break;
1666
1667e1db5bb8 addedd #ifdefs to uninit
arpi
parents: 1664
diff changeset
403 #endif
1654
9d85b84e367e dec_video uninit
arpi
parents: 1653
diff changeset
404 case VFM_MPEG:
9d85b84e367e dec_video uninit
arpi
parents: 1653
diff changeset
405 mpeg2_free_image_buffers (picture);
9d85b84e367e dec_video uninit
arpi
parents: 1653
diff changeset
406 break;
2563
fc124f9db88e more cleanup, warnings fixed
arpi
parents: 2541
diff changeset
407 #ifdef USE_XANIM
fc124f9db88e more cleanup, warnings fixed
arpi
parents: 2541
diff changeset
408 case VFM_XANIM:
fc124f9db88e more cleanup, warnings fixed
arpi
parents: 2541
diff changeset
409 xacodec_exit();
fc124f9db88e more cleanup, warnings fixed
arpi
parents: 2541
diff changeset
410 break;
fc124f9db88e more cleanup, warnings fixed
arpi
parents: 2541
diff changeset
411 #endif
4489
745cf5ba7117 make opendivx codec optional at compiletime
rfelker
parents: 4486
diff changeset
412 #ifdef USE_DIVX
4156
22fadd4022b5 playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents: 3969
diff changeset
413 case VFM_DIVX4:
22fadd4022b5 playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents: 3969
diff changeset
414 case VFM_ODIVX:
22fadd4022b5 playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents: 3969
diff changeset
415 decore(0x123,DEC_OPT_RELEASE,NULL,NULL);
22fadd4022b5 playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents: 3969
diff changeset
416 break;
4489
745cf5ba7117 make opendivx codec optional at compiletime
rfelker
parents: 4486
diff changeset
417 #endif
1654
9d85b84e367e dec_video uninit
arpi
parents: 1653
diff changeset
418 }
9d85b84e367e dec_video uninit
arpi
parents: 1653
diff changeset
419 if(sh_video->our_out_buffer){
9d85b84e367e dec_video uninit
arpi
parents: 1653
diff changeset
420 free(sh_video->our_out_buffer);
9d85b84e367e dec_video uninit
arpi
parents: 1653
diff changeset
421 sh_video->our_out_buffer=NULL;
9d85b84e367e dec_video uninit
arpi
parents: 1653
diff changeset
422 }
9d85b84e367e dec_video uninit
arpi
parents: 1653
diff changeset
423 sh_video->inited=0;
9d85b84e367e dec_video uninit
arpi
parents: 1653
diff changeset
424 }
9d85b84e367e dec_video uninit
arpi
parents: 1653
diff changeset
425
4453
71d05615a378 Providing new tune info
nick
parents: 4395
diff changeset
426 int init_video(sh_video_t *sh_video,int *pitches)
71d05615a378 Providing new tune info
nick
parents: 4395
diff changeset
427 {
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
428 unsigned int out_fmt=sh_video->codec->outfmt[sh_video->outfmtidx];
4453
71d05615a378 Providing new tune info
nick
parents: 4395
diff changeset
429 pitches[0] = pitches[1] =pitches[2] = 0; /* fake unknown */
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
430
1454
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
431 sh_video->our_out_buffer=NULL;
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
432
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
433 sh_video->image=new_mp_image(sh_video->disp_w,sh_video->disp_h);
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
434 mp_image_setfmt(sh_video->image,out_fmt);
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
435
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
436 switch(sh_video->codec->driver){
4486
e69bed07cb27 further work on the RoQ audio decoder
melanson
parents: 4462
diff changeset
437 case VFM_ROQVIDEO:
e69bed07cb27 further work on the RoQ audio decoder
melanson
parents: 4462
diff changeset
438 #ifdef USE_MP_IMAGE
e69bed07cb27 further work on the RoQ audio decoder
melanson
parents: 4462
diff changeset
439 sh_video->image->type=MP_IMGTYPE_STATIC;
e69bed07cb27 further work on the RoQ audio decoder
melanson
parents: 4462
diff changeset
440 #else
e69bed07cb27 further work on the RoQ audio decoder
melanson
parents: 4462
diff changeset
441 sh_video->our_out_buffer =
e69bed07cb27 further work on the RoQ audio decoder
melanson
parents: 4462
diff changeset
442 (char*)memalign(64, sh_video->disp_w * sh_video->disp_h * 1.5);
e69bed07cb27 further work on the RoQ audio decoder
melanson
parents: 4462
diff changeset
443 #endif
e69bed07cb27 further work on the RoQ audio decoder
melanson
parents: 4462
diff changeset
444 sh_video->context = roq_decode_video_init();
e69bed07cb27 further work on the RoQ audio decoder
melanson
parents: 4462
diff changeset
445 break;
3643
fb9fd7e2dd35 native opensourec Cinepak (CVID) codec by im Ferguson <timf@mail.csse.monash.edu.au>
arpi
parents: 3449
diff changeset
446 case VFM_CINEPAK: {
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
447 #ifdef USE_MP_IMAGE
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
448 sh_video->image->type=MP_IMGTYPE_STATIC;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
449 #else
3643
fb9fd7e2dd35 native opensourec Cinepak (CVID) codec by im Ferguson <timf@mail.csse.monash.edu.au>
arpi
parents: 3449
diff changeset
450 int bpp=((out_fmt&255)+7)/8;
fb9fd7e2dd35 native opensourec Cinepak (CVID) codec by im Ferguson <timf@mail.csse.monash.edu.au>
arpi
parents: 3449
diff changeset
451 sh_video->our_out_buffer =
fb9fd7e2dd35 native opensourec Cinepak (CVID) codec by im Ferguson <timf@mail.csse.monash.edu.au>
arpi
parents: 3449
diff changeset
452 (char*)memalign(64, sh_video->disp_w*sh_video->disp_h*bpp);
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
453 #endif
3643
fb9fd7e2dd35 native opensourec Cinepak (CVID) codec by im Ferguson <timf@mail.csse.monash.edu.au>
arpi
parents: 3449
diff changeset
454 sh_video->context = decode_cinepak_init();
fb9fd7e2dd35 native opensourec Cinepak (CVID) codec by im Ferguson <timf@mail.csse.monash.edu.au>
arpi
parents: 3449
diff changeset
455 break;
fb9fd7e2dd35 native opensourec Cinepak (CVID) codec by im Ferguson <timf@mail.csse.monash.edu.au>
arpi
parents: 3449
diff changeset
456 }
2659
39b8b9069f41 xacodec configure support
alex
parents: 2658
diff changeset
457 case VFM_XANIM: {
2378
2d3b722512ed #define USE_XANIM to enable xanim stuff
arpi
parents: 2342
diff changeset
458 #ifdef USE_XANIM
2827
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
459 int ret=xacodec_init_video(sh_video,out_fmt);
2378
2d3b722512ed #define USE_XANIM to enable xanim stuff
arpi
parents: 2342
diff changeset
460 if(!ret) return 0;
2659
39b8b9069f41 xacodec configure support
alex
parents: 2658
diff changeset
461 #else
2660
b082c01f6cec sorry for the help_msg.h
alex
parents: 2659
diff changeset
462 // mp_msg(MSGT_DECVIDEO, MSGL_ERR, MSGTR_NoXAnimSupport);
b082c01f6cec sorry for the help_msg.h
alex
parents: 2659
diff changeset
463 mp_msg(MSGT_DECVIDEO, MSGL_ERR, "MPlayer was compiled WIHTOUT XAnim support!\n");
2659
39b8b9069f41 xacodec configure support
alex
parents: 2658
diff changeset
464 return 0;
39b8b9069f41 xacodec configure support
alex
parents: 2658
diff changeset
465 #endif
2378
2d3b722512ed #define USE_XANIM to enable xanim stuff
arpi
parents: 2342
diff changeset
466 break;
2d3b722512ed #define USE_XANIM to enable xanim stuff
arpi
parents: 2342
diff changeset
467 }
1517
0e9c29538a86 Use USE_WIN32DLL define instead of ARCH_X86 to decide whether or not to compile
jkeil
parents: 1496
diff changeset
468 #ifdef USE_WIN32DLL
1410
eda16e490ae7 using AFM_/VFM_ macros instead of hardcoded constants (idea by al3x)
arpi
parents: 1401
diff changeset
469 case VFM_VFW: {
2049
df41903fd7d7 VfW stuff moved to dll_init, warnings fixed, using dll_init.h
arpi
parents: 2044
diff changeset
470 if(!init_vfw_video_codec(sh_video,0)) {
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
471 return 0;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
472 }
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1547
diff changeset
473 mp_msg(MSGT_DECVIDEO,MSGL_V,"INFO: Win32 video codec init OK!\n");
4516
d604c3db9a76 Direct rendering expansion:
nick
parents: 4515
diff changeset
474 /* Warning: these pitches tested only with YUY2 fourcc */
d604c3db9a76 Direct rendering expansion:
nick
parents: 4515
diff changeset
475 pitches[0] = 16; pitches[1] = pitches[2] = 8;
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
476 break;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
477 }
1410
eda16e490ae7 using AFM_/VFM_ macros instead of hardcoded constants (idea by al3x)
arpi
parents: 1401
diff changeset
478 case VFM_VFWEX: {
2049
df41903fd7d7 VfW stuff moved to dll_init, warnings fixed, using dll_init.h
arpi
parents: 2044
diff changeset
479 if(!init_vfw_video_codec(sh_video,1)) {
1297
200c03672178 VfwEx support
arpi
parents: 1294
diff changeset
480 return 0;
200c03672178 VfwEx support
arpi
parents: 1294
diff changeset
481 }
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1547
diff changeset
482 mp_msg(MSGT_DECVIDEO,MSGL_V,"INFO: Win32Ex video codec init OK!\n");
4516
d604c3db9a76 Direct rendering expansion:
nick
parents: 4515
diff changeset
483 /* Warning: these pitches tested only with YUY2 fourcc */
d604c3db9a76 Direct rendering expansion:
nick
parents: 4515
diff changeset
484 pitches[0] = 16; pitches[1] = pitches[2] = 8;
1297
200c03672178 VfwEx support
arpi
parents: 1294
diff changeset
485 break;
200c03672178 VfwEx support
arpi
parents: 1294
diff changeset
486 }
1410
eda16e490ae7 using AFM_/VFM_ macros instead of hardcoded constants (idea by al3x)
arpi
parents: 1401
diff changeset
487 case VFM_DSHOW: { // Win32/DirectShow
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
488 #ifndef USE_DIRECTSHOW
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1949
diff changeset
489 mp_msg(MSGT_DECVIDEO,MSGL_ERR,MSGTR_NoDShowSupport);
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
490 return 0;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
491 #else
1547
4b0046db8e64 alloc frame buffer for directshow codec - requires for avifile sync
arpi
parents: 1517
diff changeset
492 int bpp;
3448
837bc55b5913 updated for latest dshow api changes
arpi
parents: 3442
diff changeset
493 if(!(ds_vdec=DS_VideoDecoder_Open(sh_video->codec->dll,&sh_video->codec->guid, sh_video->bih, 0, 0))){
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
494 // if(DS_VideoDecoder_Open(sh_video->codec->dll,&sh_video->codec->guid, sh_video->bih, 0, NULL)){
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1949
diff changeset
495 mp_msg(MSGT_DECVIDEO,MSGL_ERR,MSGTR_MissingDLLcodec,sh_video->codec->dll);
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1547
diff changeset
496 mp_msg(MSGT_DECVIDEO,MSGL_HINT,"Maybe you forget to upgrade your win32 codecs?? It's time to download the new\n");
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1547
diff changeset
497 mp_msg(MSGT_DECVIDEO,MSGL_HINT,"package from: ftp://mplayerhq.hu/MPlayer/releases/w32codec.zip !\n");
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1547
diff changeset
498 // mp_msg(MSGT_DECVIDEO,MSGL_HINT,"Or you should disable DShow support: make distclean;make -f Makefile.No-DS\n");
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
499 return 0;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
500 }
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
501
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
502 #ifdef USE_MP_IMAGE
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
503 sh_video->image->type=MP_IMGTYPE_STATIC;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
504 bpp=sh_video->image->bpp;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
505 if(sh_video->image->flags&MP_IMGFLAG_YUV){
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
506 DS_VideoDecoder_SetDestFmt(ds_vdec,bpp,out_fmt); // YUV
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
507 } else {
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
508 DS_VideoDecoder_SetDestFmt(ds_vdec,out_fmt&255,0); // RGB/BGR
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
509 }
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
510 #else
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
511 switch(out_fmt){
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
512 case IMGFMT_YUY2:
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
513 case IMGFMT_UYVY:
1547
4b0046db8e64 alloc frame buffer for directshow codec - requires for avifile sync
arpi
parents: 1517
diff changeset
514 bpp=16;
3062
7ea7e5fce639 NEW_DSHOW added (for dshow C version)
arpi
parents: 2938
diff changeset
515 DS_VideoDecoder_SetDestFmt(ds_vdec,16,out_fmt);break; // packed YUV
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
516 case IMGFMT_YV12:
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
517 case IMGFMT_I420:
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
518 case IMGFMT_IYUV:
1547
4b0046db8e64 alloc frame buffer for directshow codec - requires for avifile sync
arpi
parents: 1517
diff changeset
519 bpp=12;
3062
7ea7e5fce639 NEW_DSHOW added (for dshow C version)
arpi
parents: 2938
diff changeset
520 DS_VideoDecoder_SetDestFmt(ds_vdec,12,out_fmt);break; // planar YUV
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
521 default:
1547
4b0046db8e64 alloc frame buffer for directshow codec - requires for avifile sync
arpi
parents: 1517
diff changeset
522 bpp=((out_fmt&255)+7)&(~7);
3062
7ea7e5fce639 NEW_DSHOW added (for dshow C version)
arpi
parents: 2938
diff changeset
523 DS_VideoDecoder_SetDestFmt(ds_vdec,out_fmt&255,0); // RGB/BGR
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
524 }
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
525
2049
df41903fd7d7 VfW stuff moved to dll_init, warnings fixed, using dll_init.h
arpi
parents: 2044
diff changeset
526 sh_video->our_out_buffer = (char*)memalign(64,sh_video->disp_w*sh_video->disp_h*bpp/8); // FIXME!!!
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
527 #endif
4457
49dcbd03436d Optimize DirectShow decoding with vidix
nick
parents: 4453
diff changeset
528 /* Warning: these pitches tested only with YUY2 fourcc */
49dcbd03436d Optimize DirectShow decoding with vidix
nick
parents: 4453
diff changeset
529 pitches[0] = 16; pitches[1] = pitches[2] = 8;
3062
7ea7e5fce639 NEW_DSHOW added (for dshow C version)
arpi
parents: 2938
diff changeset
530 DS_SetAttr_DivX("Quality",divx_quality);
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
531
3062
7ea7e5fce639 NEW_DSHOW added (for dshow C version)
arpi
parents: 2938
diff changeset
532 DS_VideoDecoder_StartInternal(ds_vdec);
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
533 // printf("DivX setting result = %d\n", DS_SetAttr_DivX("Quality",divx_quality) );
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
534 // printf("DivX setting result = %d\n", DS_SetValue_DivX("Brightness",60) );
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
535
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1547
diff changeset
536 mp_msg(MSGT_DECVIDEO,MSGL_V,"INFO: Win32/DShow video codec init OK!\n");
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
537 break;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
538 #endif
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
539 }
1517
0e9c29538a86 Use USE_WIN32DLL define instead of ARCH_X86 to decide whether or not to compile
jkeil
parents: 1496
diff changeset
540 #else /* !USE_WIN32DLL */
1410
eda16e490ae7 using AFM_/VFM_ macros instead of hardcoded constants (idea by al3x)
arpi
parents: 1401
diff changeset
541 case VFM_VFW:
eda16e490ae7 using AFM_/VFM_ macros instead of hardcoded constants (idea by al3x)
arpi
parents: 1401
diff changeset
542 case VFM_DSHOW:
eda16e490ae7 using AFM_/VFM_ macros instead of hardcoded constants (idea by al3x)
arpi
parents: 1401
diff changeset
543 case VFM_VFWEX:
2006
dcf6972ef6ca MSGTR_NoWfvSupport fixed
arpi
parents: 1973
diff changeset
544 mp_msg(MSGT_DECVIDEO,MSGL_ERR,MSGTR_NoWfvSupport);
1309
598e3047ce13 Add some preliminary support for non-x86 architectures to mplayer
jkeil
parents: 1297
diff changeset
545 return 0;
1517
0e9c29538a86 Use USE_WIN32DLL define instead of ARCH_X86 to decide whether or not to compile
jkeil
parents: 1496
diff changeset
546 #endif /* !USE_WIN32DLL */
1410
eda16e490ae7 using AFM_/VFM_ macros instead of hardcoded constants (idea by al3x)
arpi
parents: 1401
diff changeset
547 case VFM_ODIVX: { // OpenDivX
4489
745cf5ba7117 make opendivx codec optional at compiletime
rfelker
parents: 4486
diff changeset
548 #ifndef USE_DIVX
745cf5ba7117 make opendivx codec optional at compiletime
rfelker
parents: 4486
diff changeset
549 mp_msg(MSGT_DECVIDEO,MSGL_ERR,"MPlayer was compiled WITHOUT OpenDivx support!\n");
745cf5ba7117 make opendivx codec optional at compiletime
rfelker
parents: 4486
diff changeset
550 return 0;
745cf5ba7117 make opendivx codec optional at compiletime
rfelker
parents: 4486
diff changeset
551 #else
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1547
diff changeset
552 mp_msg(MSGT_DECVIDEO,MSGL_V,"OpenDivX video codec\n");
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
553 { DEC_PARAM dec_param;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
554 DEC_SET dec_set;
1349
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
555 memset(&dec_param,0,sizeof(dec_param));
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
556 #ifdef NEW_DECORE
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
557 dec_param.output_format=DEC_USER;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
558 #else
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
559 dec_param.color_depth = 32;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
560 #endif
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
561 dec_param.x_dim = sh_video->bih->biWidth;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
562 dec_param.y_dim = sh_video->bih->biHeight;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
563 decore(0x123, DEC_OPT_INIT, &dec_param, NULL);
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
564 dec_set.postproc_level = divx_quality;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
565 decore(0x123, DEC_OPT_SETPP, &dec_set, NULL);
1349
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
566 }
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1547
diff changeset
567 mp_msg(MSGT_DECVIDEO,MSGL_V,"INFO: OpenDivX video codec init OK!\n");
1349
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
568 break;
4489
745cf5ba7117 make opendivx codec optional at compiletime
rfelker
parents: 4486
diff changeset
569 #endif
1349
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
570 }
1410
eda16e490ae7 using AFM_/VFM_ macros instead of hardcoded constants (idea by al3x)
arpi
parents: 1401
diff changeset
571 case VFM_DIVX4: { // DivX4Linux
1352
5ac130627602 fixed shmem size, and now compiles without divx4linux too :)
arpi
parents: 1349
diff changeset
572 #ifndef NEW_DECORE
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1949
diff changeset
573 mp_msg(MSGT_DECVIDEO,MSGL_ERR,MSGTR_NoDivx4Support);
1631
09284c9c2b49 exit() -> return NULL
arpi
parents: 1567
diff changeset
574 return 0;
1352
5ac130627602 fixed shmem size, and now compiles without divx4linux too :)
arpi
parents: 1349
diff changeset
575 #else
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1547
diff changeset
576 mp_msg(MSGT_DECVIDEO,MSGL_V,"DivX4Linux video codec\n");
1349
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
577 { DEC_PARAM dec_param;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
578 DEC_SET dec_set;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
579 int bits=16;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
580 memset(&dec_param,0,sizeof(dec_param));
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
581 switch(out_fmt){
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
582 case IMGFMT_YV12: dec_param.output_format=DEC_YV12;bits=12;break;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
583 case IMGFMT_YUY2: dec_param.output_format=DEC_YUY2;break;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
584 case IMGFMT_UYVY: dec_param.output_format=DEC_UYVY;break;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
585 case IMGFMT_I420: dec_param.output_format=DEC_420;bits=12;break;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
586 case IMGFMT_BGR15: dec_param.output_format=DEC_RGB555_INV;break;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
587 case IMGFMT_BGR16: dec_param.output_format=DEC_RGB565_INV;break;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
588 case IMGFMT_BGR24: dec_param.output_format=DEC_RGB24_INV;bits=24;break;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
589 case IMGFMT_BGR32: dec_param.output_format=DEC_RGB32_INV;bits=32;break;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
590 default:
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1547
diff changeset
591 mp_msg(MSGT_DECVIDEO,MSGL_ERR,"Unsupported out_fmt: 0x%X\n",out_fmt);
1349
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
592 return 0;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
593 }
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
594 dec_param.x_dim = sh_video->bih->biWidth;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
595 dec_param.y_dim = sh_video->bih->biHeight;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
596 decore(0x123, DEC_OPT_INIT, &dec_param, NULL);
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
597 dec_set.postproc_level = divx_quality;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
598 decore(0x123, DEC_OPT_SETPP, &dec_set, NULL);
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
599 #ifdef USE_MP_IMAGE
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
600 sh_video->image->type=MP_IMGTYPE_STATIC;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
601 #else
2049
df41903fd7d7 VfW stuff moved to dll_init, warnings fixed, using dll_init.h
arpi
parents: 2044
diff changeset
602 sh_video->our_out_buffer = (char*)memalign(64,((bits*dec_param.x_dim+7)/8)*dec_param.y_dim);
1352
5ac130627602 fixed shmem size, and now compiles without divx4linux too :)
arpi
parents: 1349
diff changeset
603 // sh_video->our_out_buffer = shmem_alloc(dec_param.x_dim*dec_param.y_dim*5);
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
604 #endif
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
605 }
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1547
diff changeset
606 mp_msg(MSGT_DECVIDEO,MSGL_V,"INFO: OpenDivX video codec init OK!\n");
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
607 break;
1352
5ac130627602 fixed shmem size, and now compiles without divx4linux too :)
arpi
parents: 1349
diff changeset
608 #endif
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
609 }
1410
eda16e490ae7 using AFM_/VFM_ macros instead of hardcoded constants (idea by al3x)
arpi
parents: 1401
diff changeset
610 case VFM_FFMPEG: { // FFmpeg's libavcodec
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
611 #ifndef USE_LIBAVCODEC
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1949
diff changeset
612 mp_msg(MSGT_DECVIDEO,MSGL_ERR,MSGTR_NoLAVCsupport);
1631
09284c9c2b49 exit() -> return NULL
arpi
parents: 1567
diff changeset
613 return 0;
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
614 #else
4453
71d05615a378 Providing new tune info
nick
parents: 4395
diff changeset
615 /* Just because we know that */
71d05615a378 Providing new tune info
nick
parents: 4395
diff changeset
616 pitches[0] = 16;
71d05615a378 Providing new tune info
nick
parents: 4395
diff changeset
617 pitches[1] = pitches[2] = 8;
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1547
diff changeset
618 mp_msg(MSGT_DECVIDEO,MSGL_V,"FFmpeg's libavcodec video codec\n");
1654
9d85b84e367e dec_video uninit
arpi
parents: 1653
diff changeset
619 if(!avcodec_inited){
9d85b84e367e dec_video uninit
arpi
parents: 1653
diff changeset
620 avcodec_init();
9d85b84e367e dec_video uninit
arpi
parents: 1653
diff changeset
621 avcodec_register_all();
9d85b84e367e dec_video uninit
arpi
parents: 1653
diff changeset
622 avcodec_inited=1;
9d85b84e367e dec_video uninit
arpi
parents: 1653
diff changeset
623 }
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
624 lavc_codec = (AVCodec *)avcodec_find_decoder_by_name(sh_video->codec->dll);
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
625 if(!lavc_codec){
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1949
diff changeset
626 mp_msg(MSGT_DECVIDEO,MSGL_ERR,MSGTR_MissingLAVCcodec,sh_video->codec->dll);
1631
09284c9c2b49 exit() -> return NULL
arpi
parents: 1567
diff changeset
627 return 0;
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
628 }
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
629 memset(&lavc_context, 0, sizeof(lavc_context));
1462
a776747517c0 ffmpeg12 fix - now passing sequence header
arpi
parents: 1454
diff changeset
630 // sh_video->disp_h/=2; // !!
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
631 lavc_context.width=sh_video->disp_w;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
632 lavc_context.height=sh_video->disp_h;
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1547
diff changeset
633 mp_dbg(MSGT_DECVIDEO,MSGL_DBG2,"libavcodec.size: %d x %d\n",lavc_context.width,lavc_context.height);
3877
a3c73266f81f fixed rv10 with subid=3
alex
parents: 3804
diff changeset
634 if (sh_video->format == mmioFOURCC('R', 'V', '1', '3'))
a3c73266f81f fixed rv10 with subid=3
alex
parents: 3804
diff changeset
635 lavc_context.sub_id = 3;
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
636 /* open it */
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
637 if (avcodec_open(&lavc_context, lavc_codec) < 0) {
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1949
diff changeset
638 mp_msg(MSGT_DECVIDEO,MSGL_ERR, MSGTR_CantOpenCodec);
1631
09284c9c2b49 exit() -> return NULL
arpi
parents: 1567
diff changeset
639 return 0;
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
640 }
2228
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
641 #ifdef FF_POSTPROCESS
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
642 lavc_pp=divx_quality;
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
643 #endif
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1547
diff changeset
644 mp_msg(MSGT_DECVIDEO,MSGL_V,"INFO: libavcodec init OK!\n");
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
645 break;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
646 #endif
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
647 }
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
648
1410
eda16e490ae7 using AFM_/VFM_ macros instead of hardcoded constants (idea by al3x)
arpi
parents: 1401
diff changeset
649 case VFM_MPEG: {
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
650 // init libmpeg2:
2567
ea6158be8103 video frame reading cleanup
arpi
parents: 2563
diff changeset
651 mpeg2_init();
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
652 #ifdef MPEG12_POSTPROC
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
653 picture->pp_options=divx_quality;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
654 #else
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1949
diff changeset
655 if(divx_quality) mp_msg(MSGT_DECVIDEO,MSGL_HINT,MSGTR_MpegPPhint);
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
656 #endif
4453
71d05615a378 Providing new tune info
nick
parents: 4395
diff changeset
657 /* Just because we know that */
71d05615a378 Providing new tune info
nick
parents: 4395
diff changeset
658 pitches[0] = 16;
71d05615a378 Providing new tune info
nick
parents: 4395
diff changeset
659 pitches[1] = pitches[2] = 8;
2567
ea6158be8103 video frame reading cleanup
arpi
parents: 2563
diff changeset
660 // send seq header to the decoder:
ea6158be8103 video frame reading cleanup
arpi
parents: 2563
diff changeset
661 mpeg2_decode_data(NULL,videobuffer,videobuffer+videobuf_len,0);
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
662 mpeg2_allocate_image_buffers (picture);
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
663 break;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
664 }
1488
70652cb8c402 raw (uncompressed) video codec
arpi
parents: 1465
diff changeset
665 case VFM_RAW: {
3397
39abf443aac4 vfm_raw hack: set outfmt if format != 0x0 (for tv input)
alex
parents: 3303
diff changeset
666 if (sh_video->format != 0x0)
39abf443aac4 vfm_raw hack: set outfmt if format != 0x0 (for tv input)
alex
parents: 3303
diff changeset
667 /* set out_fmt */
39abf443aac4 vfm_raw hack: set outfmt if format != 0x0 (for tv input)
alex
parents: 3303
diff changeset
668 sh_video->codec->outfmt[sh_video->outfmtidx] = sh_video->format;
1488
70652cb8c402 raw (uncompressed) video codec
arpi
parents: 1465
diff changeset
669 break;
70652cb8c402 raw (uncompressed) video codec
arpi
parents: 1465
diff changeset
670 }
1948
e0cc7b7290ec native codec 'rle' added
arpi
parents: 1927
diff changeset
671 case VFM_RLE: {
e0cc7b7290ec native codec 'rle' added
arpi
parents: 1927
diff changeset
672 int bpp=((out_fmt&255)+7)/8; // RGB only
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
673 #ifdef USE_MP_IMAGE
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
674 sh_video->image->type=MP_IMGTYPE_STATIC;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
675 #else
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
676 sh_video->our_out_buffer = (char*)memalign(64,sh_video->disp_w*sh_video->disp_h*bpp); // FIXME!!!
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
677 #endif
1949
5ceb384bf163 rle 15,16bpp support (palette conversion)
arpi
parents: 1948
diff changeset
678 if(bpp==2){ // 15 or 16 bpp ==> palette conversion!
5ceb384bf163 rle 15,16bpp support (palette conversion)
arpi
parents: 1948
diff changeset
679 unsigned int* pal=(unsigned int*)(((char*)sh_video->bih)+40);
3303
64976b15ee5d msrle8 paletet fix (workcycl.avi)
arpi
parents: 3172
diff changeset
680 int cols=(sh_video->bih->biSize-40)/4;
64976b15ee5d msrle8 paletet fix (workcycl.avi)
arpi
parents: 3172
diff changeset
681 //int cols=1<<(sh_video->bih->biBitCount);
1949
5ceb384bf163 rle 15,16bpp support (palette conversion)
arpi
parents: 1948
diff changeset
682 int i;
5ceb384bf163 rle 15,16bpp support (palette conversion)
arpi
parents: 1948
diff changeset
683 if(cols>256) cols=256;
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1949
diff changeset
684 mp_msg(MSGT_DECVIDEO,MSGL_V,"RLE: converting palette for %d colors.\n",cols);
1949
5ceb384bf163 rle 15,16bpp support (palette conversion)
arpi
parents: 1948
diff changeset
685 for(i=0;i<cols;i++){
5ceb384bf163 rle 15,16bpp support (palette conversion)
arpi
parents: 1948
diff changeset
686 unsigned int c=pal[i];
5ceb384bf163 rle 15,16bpp support (palette conversion)
arpi
parents: 1948
diff changeset
687 unsigned int b=c&255;
5ceb384bf163 rle 15,16bpp support (palette conversion)
arpi
parents: 1948
diff changeset
688 unsigned int g=(c>>8)&255;
5ceb384bf163 rle 15,16bpp support (palette conversion)
arpi
parents: 1948
diff changeset
689 unsigned int r=(c>>16)&255;
5ceb384bf163 rle 15,16bpp support (palette conversion)
arpi
parents: 1948
diff changeset
690 if((out_fmt&255)==15)
5ceb384bf163 rle 15,16bpp support (palette conversion)
arpi
parents: 1948
diff changeset
691 pal[i]=((r>>3)<<10)|((g>>3)<<5)|((b>>3));
5ceb384bf163 rle 15,16bpp support (palette conversion)
arpi
parents: 1948
diff changeset
692 else
5ceb384bf163 rle 15,16bpp support (palette conversion)
arpi
parents: 1948
diff changeset
693 pal[i]=((r>>3)<<11)|((g>>2)<<5)|((b>>3));
5ceb384bf163 rle 15,16bpp support (palette conversion)
arpi
parents: 1948
diff changeset
694 }
5ceb384bf163 rle 15,16bpp support (palette conversion)
arpi
parents: 1948
diff changeset
695 }
1948
e0cc7b7290ec native codec 'rle' added
arpi
parents: 1927
diff changeset
696 break;
3687
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
697 case VFM_MSVIDC:
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
698 case VFM_FLI:
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
699 case VFM_QTRLE:
4301
8f43b10f387f added skeleton for Duck Truemotion v1 decoder (doesn't do anything yet)
melanson
parents: 4275
diff changeset
700 case VFM_DUCKTM1:
3687
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
701 {
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
702 #ifdef USE_MP_IMAGE
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
703 sh_video->image->type=MP_IMGTYPE_STATIC;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
704 #else
2827
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
705 int bpp=((out_fmt&255)+7)/8; // RGB only
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
706 sh_video->our_out_buffer =
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
707 (char*)memalign(64, sh_video->disp_w*sh_video->disp_h*bpp); // FIXME!!!
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
708 #endif
3687
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
709 if ((sh_video->codec->driver == VFM_QTRLE) && (sh_video->bih->biBitCount != 24))
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
710 printf (
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
711 " *** FYI: This Quicktime file is using %d-bit RLE Animation\n" \
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
712 " encoding, which is not yet supported by MPlayer. But if you upload\n" \
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
713 " this Quicktime file to the MPlayer FTP, the team could look at it.\n",
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
714 sh_video->bih->biBitCount);
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
715
3804
53ed66a4f0bf NuppelVideo decoder added, based on Panagiotis Issaris' patch
alex
parents: 3745
diff changeset
716 break;
3172
bb38b6b072f8 support for FLI image decoding
melanson
parents: 3160
diff changeset
717 }
4275
818be6ba8758 initial implementation of SMC codec; it almost works, too!
melanson
parents: 4227
diff changeset
718 case VFM_QTSMC:
818be6ba8758 initial implementation of SMC codec; it almost works, too!
melanson
parents: 4227
diff changeset
719 {
818be6ba8758 initial implementation of SMC codec; it almost works, too!
melanson
parents: 4227
diff changeset
720 if (qt_init_decode_smc() != 0)
818be6ba8758 initial implementation of SMC codec; it almost works, too!
melanson
parents: 4227
diff changeset
721 mp_msg(MSGT_DECVIDEO, MSGL_ERR, "SMC decoder could not allocate enough memory");
818be6ba8758 initial implementation of SMC codec; it almost works, too!
melanson
parents: 4227
diff changeset
722 #ifdef USE_MP_IMAGE
818be6ba8758 initial implementation of SMC codec; it almost works, too!
melanson
parents: 4227
diff changeset
723 sh_video->image->type=MP_IMGTYPE_STATIC;
818be6ba8758 initial implementation of SMC codec; it almost works, too!
melanson
parents: 4227
diff changeset
724 #else
818be6ba8758 initial implementation of SMC codec; it almost works, too!
melanson
parents: 4227
diff changeset
725 int bpp=((out_fmt&255)+7)/8; // RGB only
818be6ba8758 initial implementation of SMC codec; it almost works, too!
melanson
parents: 4227
diff changeset
726 sh_video->our_out_buffer =
818be6ba8758 initial implementation of SMC codec; it almost works, too!
melanson
parents: 4227
diff changeset
727 (char*)memalign(64, sh_video->disp_w*sh_video->disp_h*bpp); // FIXME!!!
818be6ba8758 initial implementation of SMC codec; it almost works, too!
melanson
parents: 4227
diff changeset
728 #endif
818be6ba8758 initial implementation of SMC codec; it almost works, too!
melanson
parents: 4227
diff changeset
729 break;
818be6ba8758 initial implementation of SMC codec; it almost works, too!
melanson
parents: 4227
diff changeset
730 }
3804
53ed66a4f0bf NuppelVideo decoder added, based on Panagiotis Issaris' patch
alex
parents: 3745
diff changeset
731 case VFM_NUV:
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
732 #ifdef USE_MP_IMAGE
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
733 sh_video->image->type=MP_IMGTYPE_STATIC;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
734 #else
3804
53ed66a4f0bf NuppelVideo decoder added, based on Panagiotis Issaris' patch
alex
parents: 3745
diff changeset
735 sh_video->our_out_buffer = (char *)memalign(64, sh_video->disp_w*sh_video->disp_h*3/2);
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
736 #endif
3172
bb38b6b072f8 support for FLI image decoding
melanson
parents: 3160
diff changeset
737 break;
3969
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
738 case VFM_CYUV: {
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
739 // int bpp=((out_fmt&255)+7)/8;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
740 #ifdef USE_MP_IMAGE
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
741 sh_video->image->type=MP_IMGTYPE_STATIC;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
742 #else
3969
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
743 sh_video->our_out_buffer =
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
744 (char*)memalign(64, sh_video->disp_w*sh_video->disp_h*3);
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
745 #endif
3969
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
746 break;
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
747 }
1948
e0cc7b7290ec native codec 'rle' added
arpi
parents: 1927
diff changeset
748 }
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
749 }
1654
9d85b84e367e dec_video uninit
arpi
parents: 1653
diff changeset
750 sh_video->inited=1;
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
751 return 1;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
752 }
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
753
4494
382a3c60629e Allows to users control direct rendering
nick
parents: 4489
diff changeset
754 extern int vaa_use_dr;
4515
4064940f3f9b optimization
nick
parents: 4494
diff changeset
755
4064940f3f9b optimization
nick
parents: 4494
diff changeset
756 static int use_dr=0;
4064940f3f9b optimization
nick
parents: 4494
diff changeset
757 static bes_da_t bda;
4064940f3f9b optimization
nick
parents: 4494
diff changeset
758 void init_video_vaa( void )
4064940f3f9b optimization
nick
parents: 4494
diff changeset
759 {
4064940f3f9b optimization
nick
parents: 4494
diff changeset
760 memset(&bda,0,sizeof(bes_da_t));
4064940f3f9b optimization
nick
parents: 4494
diff changeset
761 if(vo_vaa.query_bes_da)
4064940f3f9b optimization
nick
parents: 4494
diff changeset
762 use_dr = vo_vaa.query_bes_da(&bda) ? 0 : 1;
4064940f3f9b optimization
nick
parents: 4494
diff changeset
763 if(!vaa_use_dr) use_dr = 0;
4064940f3f9b optimization
nick
parents: 4494
diff changeset
764 }
4064940f3f9b optimization
nick
parents: 4494
diff changeset
765
1422
d02e0dcaf077 libvo2 support
arpi
parents: 1410
diff changeset
766 #ifdef USE_LIBVO2
d02e0dcaf077 libvo2 support
arpi
parents: 1410
diff changeset
767 int decode_video(vo2_handle_t *video_out,sh_video_t *sh_video,unsigned char *start,int in_size,int drop_frame){
d02e0dcaf077 libvo2 support
arpi
parents: 1410
diff changeset
768 #else
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
769 int decode_video(vo_functions_t *video_out,sh_video_t *sh_video,unsigned char *start,int in_size,int drop_frame){
1422
d02e0dcaf077 libvo2 support
arpi
parents: 1410
diff changeset
770 #endif
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
771
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
772 mp_image_t *mpi=sh_video->image;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
773 unsigned int out_fmt=mpi->imgfmt; //sh_video->codec->outfmt[sh_video->outfmtidx];
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
774 int planar=(mpi->flags&MP_IMGFLAG_PLANAR)!=0; //(out_fmt==IMGFMT_YV12||out_fmt==IMGFMT_IYUV||out_fmt==IMGFMT_I420);
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
775 int blit_frame=0;
4460
7de7c849dccf Use DIRECT RENDERING WITH DSHOW codecs
nick
parents: 4457
diff changeset
776 void *vmem;
7de7c849dccf Use DIRECT RENDERING WITH DSHOW codecs
nick
parents: 4457
diff changeset
777 int painted;
7de7c849dccf Use DIRECT RENDERING WITH DSHOW codecs
nick
parents: 4457
diff changeset
778 static int double_buff_num = 0;
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
779
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
780 //uint8_t* planes_[3];
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
781 //uint8_t** planes=planes_;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
782 //int stride_[3];
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
783 //int* stride=stride_;
1360
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
784
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
785 unsigned int t=GetTimer();
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
786 unsigned int t2;
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
787
4515
4064940f3f9b optimization
nick
parents: 4494
diff changeset
788 painted = 0;
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
789 #ifdef USE_MP_IMAGE
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
790 if(mpi->type!=MP_IMGTYPE_EXPORT)
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
791 if( !(mpi->flags&MP_IMGFLAG_ALLOCATED) && !(mpi->flags&MP_IMGFLAG_DIRECT) ){
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
792 // allocate image buffer:
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
793 sh_video->our_out_buffer = (char *)memalign(64, mpi->width*mpi->height*mpi->bpp/8);
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
794 if((mpi->flags|MP_IMGFLAG_PLANAR) && (mpi->flags|MP_IMGFLAG_YUV)){
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
795 // planar YUV
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
796 mpi->stride[0]=mpi->width;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
797 mpi->stride[1]=mpi->stride[2]=mpi->width/2;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
798 mpi->planes[0]=sh_video->our_out_buffer;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
799 mpi->planes[1]=mpi->planes[0]+mpi->stride[0]*mpi->height;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
800 mpi->planes[2]=mpi->planes[1]+mpi->stride[0]*mpi->height/4;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
801 } else {
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
802 // packed YUV / RGB
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
803 mpi->stride[0]=mpi->width*mpi->bpp;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
804 mpi->planes[0]=sh_video->our_out_buffer;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
805 }
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
806 mpi->flags|=MP_IMGFLAG_ALLOCATED;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
807 mp_msg(MSGT_DECVIDEO,MSGL_INFO,"mp_image: allocated %d bytes for %dx%dx%d [0x%X] image\n",
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
808 mpi->width*mpi->height*mpi->bpp/8, mpi->width, mpi->height, mpi->bpp, mpi->imgfmt);
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
809 }
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
810 #endif
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
811
2794
411be2ac50ae vfw_raw fix
alex
parents: 2775
diff changeset
812 //printf("decode_frame(start: %p, size: %d, w: %d, h: %d)\n",
411be2ac50ae vfw_raw fix
alex
parents: 2775
diff changeset
813 // start, in_size, sh_video->disp_w, sh_video->disp_h);
411be2ac50ae vfw_raw fix
alex
parents: 2775
diff changeset
814
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
815 //-------------------- Decode a frame: -----------------------
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
816 switch(sh_video->codec->driver){
3643
fb9fd7e2dd35 native opensourec Cinepak (CVID) codec by im Ferguson <timf@mail.csse.monash.edu.au>
arpi
parents: 3449
diff changeset
817 case VFM_CINEPAK:
fb9fd7e2dd35 native opensourec Cinepak (CVID) codec by im Ferguson <timf@mail.csse.monash.edu.au>
arpi
parents: 3449
diff changeset
818 decode_cinepak(sh_video->context, start, in_size, sh_video->our_out_buffer,
3646
3f25f07f4e92 Cinepak YUY2 support
arpi
parents: 3643
diff changeset
819 sh_video->disp_w, sh_video->disp_h, (out_fmt==IMGFMT_YUY2)?16:(out_fmt&255));
3643
fb9fd7e2dd35 native opensourec Cinepak (CVID) codec by im Ferguson <timf@mail.csse.monash.edu.au>
arpi
parents: 3449
diff changeset
820 blit_frame = 3;
fb9fd7e2dd35 native opensourec Cinepak (CVID) codec by im Ferguson <timf@mail.csse.monash.edu.au>
arpi
parents: 3449
diff changeset
821 break;
2378
2d3b722512ed #define USE_XANIM to enable xanim stuff
arpi
parents: 2342
diff changeset
822 #ifdef USE_XANIM
2d3b722512ed #define USE_XANIM to enable xanim stuff
arpi
parents: 2342
diff changeset
823 case VFM_XANIM: {
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2378
diff changeset
824 xacodec_image_t* image=xacodec_decode_frame(start,in_size,drop_frame?1:0);
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2378
diff changeset
825 if(image){
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2378
diff changeset
826 blit_frame=2;
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
827 //planes=image->planes;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
828 //stride=image->stride;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
829 mpi->planes[0]=image->planes[0];
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
830 mpi->planes[1]=image->planes[1];
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
831 mpi->planes[2]=image->planes[2];
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
832 mpi->stride[0]=image->stride[0];
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
833 mpi->stride[1]=image->stride[1];
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
834 mpi->stride[2]=image->stride[2];
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2378
diff changeset
835 }
2378
2d3b722512ed #define USE_XANIM to enable xanim stuff
arpi
parents: 2342
diff changeset
836 break;
2d3b722512ed #define USE_XANIM to enable xanim stuff
arpi
parents: 2342
diff changeset
837 }
2d3b722512ed #define USE_XANIM to enable xanim stuff
arpi
parents: 2342
diff changeset
838 #endif
4489
745cf5ba7117 make opendivx codec optional at compiletime
rfelker
parents: 4486
diff changeset
839 #ifdef USE_DIVX
1410
eda16e490ae7 using AFM_/VFM_ macros instead of hardcoded constants (idea by al3x)
arpi
parents: 1401
diff changeset
840 case VFM_ODIVX: {
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
841 // OpenDivX
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
842 DEC_FRAME dec_frame;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
843 #ifdef NEW_DECORE
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
844 DEC_PICTURE dec_pic;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
845 #endif
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
846 // let's decode
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
847 dec_frame.length = in_size;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
848 dec_frame.bitstream = start;
1349
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
849 dec_frame.render_flag = drop_frame?0:1;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
850
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
851 #ifdef NEW_DECORE
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
852 dec_frame.bmp=&dec_pic;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
853 dec_pic.y=dec_pic.u=dec_pic.v=NULL;
1349
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
854 decore(0x123, (sh_video->format==mmioFOURCC('D','I','V','3'))?DEC_OPT_FRAME_311:DEC_OPT_FRAME, &dec_frame, NULL);
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
855 #else
1360
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
856 opendivx_src[0]=NULL;
1349
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
857 decore(0x123, 0, &dec_frame, NULL);
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
858 #endif
1360
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
859
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
860 if(!drop_frame)
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
861
1349
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
862 // let's display
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
863 #ifdef NEW_DECORE
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
864 if(dec_pic.y){
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
865 mpi->planes[0]=dec_pic.y;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
866 mpi->planes[1]=dec_pic.u;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
867 mpi->planes[2]=dec_pic.v;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
868 mpi->stride[0]=dec_pic.stride_y;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
869 mpi->stride[1]=mpi->stride[2]=dec_pic.stride_uv;
1360
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
870 blit_frame=2;
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
871 }
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
872 #else
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
873 if(opendivx_src[0]){
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
874 // planes=opendivx_src;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
875 // stride=opendivx_stride;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
876 mpi->planes[0]=opendivx_src[0];
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
877 mpi->planes[1]=opendivx_src[1];
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
878 mpi->planes[2]=opendivx_src[2];
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
879 mpi->stride[0]=opendivx_stride[0];
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
880 mpi->stride[1]=opendivx_stride[1];
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
881 mpi->stride[2]=opendivx_stride[2];
1360
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
882 blit_frame=2;
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
883 }
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
884 #endif
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
885
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
886 break;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
887 }
4489
745cf5ba7117 make opendivx codec optional at compiletime
rfelker
parents: 4486
diff changeset
888 #endif
1352
5ac130627602 fixed shmem size, and now compiles without divx4linux too :)
arpi
parents: 1349
diff changeset
889 #ifdef NEW_DECORE
1410
eda16e490ae7 using AFM_/VFM_ macros instead of hardcoded constants (idea by al3x)
arpi
parents: 1401
diff changeset
890 case VFM_DIVX4: {
1349
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
891 // DivX4Linux
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
892 DEC_FRAME dec_frame;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
893 // let's decode
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
894 dec_frame.length = in_size;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
895 dec_frame.bitstream = start;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
896 dec_frame.render_flag = drop_frame?0:1;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
897 dec_frame.bmp=sh_video->our_out_buffer;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
898 dec_frame.stride=sh_video->disp_w;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
899 // printf("Decoding DivX4 frame\n");
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
900 decore(0x123, (sh_video->format==mmioFOURCC('D','I','V','3'))?DEC_OPT_FRAME_311:DEC_OPT_FRAME, &dec_frame, NULL);
1360
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
901 if(!drop_frame) blit_frame=3;
1349
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
902 break;
3db173705860 DivX4Linux support
arpi
parents: 1327
diff changeset
903 }
1352
5ac130627602 fixed shmem size, and now compiles without divx4linux too :)
arpi
parents: 1349
diff changeset
904 #endif
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
905 #ifdef USE_DIRECTSHOW
1410
eda16e490ae7 using AFM_/VFM_ macros instead of hardcoded constants (idea by al3x)
arpi
parents: 1401
diff changeset
906 case VFM_DSHOW: { // W32/DirectShow
3062
7ea7e5fce639 NEW_DSHOW added (for dshow C version)
arpi
parents: 2938
diff changeset
907 if(drop_frame<2)
4460
7de7c849dccf Use DIRECT RENDERING WITH DSHOW codecs
nick
parents: 4457
diff changeset
908 {
7de7c849dccf Use DIRECT RENDERING WITH DSHOW codecs
nick
parents: 4457
diff changeset
909 /* FIXME: WILL WORK ONLY FOR PACKED FOURCC. BUT WHAT ABOUT PLANAR? */
7de7c849dccf Use DIRECT RENDERING WITH DSHOW codecs
nick
parents: 4457
diff changeset
910 vmem = 0;
7de7c849dccf Use DIRECT RENDERING WITH DSHOW codecs
nick
parents: 4457
diff changeset
911 if(use_dr && bda.dest.pitch.y == 16)
7de7c849dccf Use DIRECT RENDERING WITH DSHOW codecs
nick
parents: 4457
diff changeset
912 {
7de7c849dccf Use DIRECT RENDERING WITH DSHOW codecs
nick
parents: 4457
diff changeset
913 vmem = bda.dga_addr + bda.offsets[0] + bda.offset.y;
7de7c849dccf Use DIRECT RENDERING WITH DSHOW codecs
nick
parents: 4457
diff changeset
914 if(vo_doublebuffering && bda.num_frames>1)
7de7c849dccf Use DIRECT RENDERING WITH DSHOW codecs
nick
parents: 4457
diff changeset
915 {
7de7c849dccf Use DIRECT RENDERING WITH DSHOW codecs
nick
parents: 4457
diff changeset
916 if(double_buff_num) vmem = bda.dga_addr + bda.offsets[1] + bda.offset.y;
7de7c849dccf Use DIRECT RENDERING WITH DSHOW codecs
nick
parents: 4457
diff changeset
917 else vmem = bda.dga_addr + bda.offsets[0] + bda.offset.y;
7de7c849dccf Use DIRECT RENDERING WITH DSHOW codecs
nick
parents: 4457
diff changeset
918 double_buff_num = double_buff_num ? 0 : 1;
7de7c849dccf Use DIRECT RENDERING WITH DSHOW codecs
nick
parents: 4457
diff changeset
919 }
7de7c849dccf Use DIRECT RENDERING WITH DSHOW codecs
nick
parents: 4457
diff changeset
920 }
7de7c849dccf Use DIRECT RENDERING WITH DSHOW codecs
nick
parents: 4457
diff changeset
921 DS_VideoDecoder_DecodeInternal(ds_vdec, start, in_size, 0, drop_frame ? 0 : vmem ? vmem : sh_video->our_out_buffer);
7de7c849dccf Use DIRECT RENDERING WITH DSHOW codecs
nick
parents: 4457
diff changeset
922 if(vmem) painted = 1;
7de7c849dccf Use DIRECT RENDERING WITH DSHOW codecs
nick
parents: 4457
diff changeset
923 }
1362
11673118f37f Fix segfault in DShow video decoder. Using directshow, the
jkeil
parents: 1360
diff changeset
924 if(!drop_frame && sh_video->our_out_buffer) blit_frame=3;
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
925 break;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
926 }
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
927 #endif
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
928 #ifdef USE_LIBAVCODEC
1410
eda16e490ae7 using AFM_/VFM_ macros instead of hardcoded constants (idea by al3x)
arpi
parents: 1401
diff changeset
929 case VFM_FFMPEG: { // libavcodec
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
930 int got_picture=0;
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1547
diff changeset
931 mp_dbg(MSGT_DECVIDEO,MSGL_DBG2,"Calling ffmpeg...\n");
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
932 if(drop_frame<2 && in_size>0){
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
933 int ret = avcodec_decode_video(&lavc_context, &lavc_picture,
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
934 &got_picture, start, in_size);
1489
f6b80dff8c25 ffmpeg prints moved to verbose=2
arpi
parents: 1488
diff changeset
935 if(verbose>1){
1462
a776747517c0 ffmpeg12 fix - now passing sequence header
arpi
parents: 1454
diff changeset
936 unsigned char *x="???";
a776747517c0 ffmpeg12 fix - now passing sequence header
arpi
parents: 1454
diff changeset
937 switch(lavc_context.pix_fmt){
a776747517c0 ffmpeg12 fix - now passing sequence header
arpi
parents: 1454
diff changeset
938 case PIX_FMT_YUV420P: x="YUV420P";break;
a776747517c0 ffmpeg12 fix - now passing sequence header
arpi
parents: 1454
diff changeset
939 case PIX_FMT_YUV422: x="YUV422";break;
a776747517c0 ffmpeg12 fix - now passing sequence header
arpi
parents: 1454
diff changeset
940 case PIX_FMT_RGB24: x="RGB24";break;
a776747517c0 ffmpeg12 fix - now passing sequence header
arpi
parents: 1454
diff changeset
941 case PIX_FMT_BGR24: x="BGR24";break;
1465
194c2f643d2c PIX_FMT_YUV422P undeclared error fixed
arpi
parents: 1463
diff changeset
942 #ifdef PIX_FMT_YUV422P
1462
a776747517c0 ffmpeg12 fix - now passing sequence header
arpi
parents: 1454
diff changeset
943 case PIX_FMT_YUV422P: x="YUV422P";break;
a776747517c0 ffmpeg12 fix - now passing sequence header
arpi
parents: 1454
diff changeset
944 case PIX_FMT_YUV444P: x="YUV444P";break;
1465
194c2f643d2c PIX_FMT_YUV422P undeclared error fixed
arpi
parents: 1463
diff changeset
945 #endif
1462
a776747517c0 ffmpeg12 fix - now passing sequence header
arpi
parents: 1454
diff changeset
946 }
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1547
diff changeset
947 mp_dbg(MSGT_DECVIDEO,MSGL_DBG2,"DONE -> got_picture=%d format=0x%X (%s) \n",got_picture,
1462
a776747517c0 ffmpeg12 fix - now passing sequence header
arpi
parents: 1454
diff changeset
948 lavc_context.pix_fmt,x);
a776747517c0 ffmpeg12 fix - now passing sequence header
arpi
parents: 1454
diff changeset
949 }
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1547
diff changeset
950 if(ret<0) mp_msg(MSGT_DECVIDEO,MSGL_WARN, "Error while decoding frame!\n");
1360
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
951 if(!drop_frame && got_picture){
1454
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
952 // if(!drop_frame){
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
953 if(planar){
2228
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
954 #ifdef FF_POSTPROCESS
3745
db95315504fd old ffmpeg (MBC) workaround
arpi
parents: 3687
diff changeset
955 #ifdef MBC
2228
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
956 if(lavc_pp){
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
957 // postprocess
2291
0cee957b7669 ffdivx postproc dest buffer is 16x16 aligned
arpi
parents: 2228
diff changeset
958 int w=(sh_video->disp_w+15)&(~15);
0cee957b7669 ffdivx postproc dest buffer is 16x16 aligned
arpi
parents: 2228
diff changeset
959 int h=(sh_video->disp_h+15)&(~15);
0cee957b7669 ffdivx postproc dest buffer is 16x16 aligned
arpi
parents: 2228
diff changeset
960 int xoff=0; //(w-sh_video->disp_w)/2;
0cee957b7669 ffdivx postproc dest buffer is 16x16 aligned
arpi
parents: 2228
diff changeset
961 int yoff=0; //(h-sh_video->disp_h)/2;
0cee957b7669 ffdivx postproc dest buffer is 16x16 aligned
arpi
parents: 2228
diff changeset
962 if(!sh_video->our_out_buffer){
0cee957b7669 ffdivx postproc dest buffer is 16x16 aligned
arpi
parents: 2228
diff changeset
963 sh_video->our_out_buffer = (char*)memalign(64,w*h*3/2);
0cee957b7669 ffdivx postproc dest buffer is 16x16 aligned
arpi
parents: 2228
diff changeset
964 memset(sh_video->our_out_buffer,0,w*h*3/2);
0cee957b7669 ffdivx postproc dest buffer is 16x16 aligned
arpi
parents: 2228
diff changeset
965 }
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
966 mpi->stride[0]=w;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
967 mpi->stride[1]=mpi->stride[2]=w/2;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
968 mpi->planes[0]=sh_video->our_out_buffer+mpi->stride[0]*yoff+xoff;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
969 mpi->planes[2]=sh_video->our_out_buffer+w*h+mpi->stride[2]*(yoff>>1)+(xoff>>1);
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
970 mpi->planes[1]=mpi->planes[2]+w*h/4;
2228
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
971 postprocess(lavc_picture.data,lavc_picture.linesize[0],
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
972 mpi->planes,mpi->stride[0],
2228
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
973 sh_video->disp_w,sh_video->disp_h,
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
974 &quant_store[0][0],MBC+1,lavc_pp);
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
975 } else
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
976 #endif
3745
db95315504fd old ffmpeg (MBC) workaround
arpi
parents: 3687
diff changeset
977 #endif
2228
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
978 {
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
979 //planes=lavc_picture.data;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
980 //stride=lavc_picture.linesize;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
981 mpi->planes[0]=lavc_picture.data[0];
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
982 mpi->planes[1]=lavc_picture.data[1];
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
983 mpi->planes[2]=lavc_picture.data[2];
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
984 mpi->stride[0]=lavc_picture.linesize[0];
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
985 mpi->stride[1]=lavc_picture.linesize[1];
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
986 mpi->stride[2]=lavc_picture.linesize[2];
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
987
2228
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
988 //stride[1]=stride[2]=0;
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
989 //stride[0]/=2;
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
990 }
ac517956d9b0 ffmpeg postprocess
arpi
parents: 2184
diff changeset
991 blit_frame=2;
1454
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
992 } else {
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
993 int y;
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
994 // temporary hack - FIXME
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
995 if(!sh_video->our_out_buffer)
2049
df41903fd7d7 VfW stuff moved to dll_init, warnings fixed, using dll_init.h
arpi
parents: 2044
diff changeset
996 sh_video->our_out_buffer = (char*)memalign(64,sh_video->disp_w*sh_video->disp_h*2);
1454
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
997 for(y=0;y<sh_video->disp_h;y++){
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
998 unsigned char *s0=lavc_picture.data[0]+lavc_picture.linesize[0]*y;
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
999 unsigned char *s1=lavc_picture.data[1]+lavc_picture.linesize[1]*y;
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
1000 unsigned char *s2=lavc_picture.data[2]+lavc_picture.linesize[2]*y;
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
1001 unsigned char *d=sh_video->our_out_buffer+y*2*sh_video->disp_w;
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
1002 int x;
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
1003 for(x=0;x<sh_video->disp_w/2;x++){
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
1004 d[4*x+0]=s0[2*x+0];
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
1005 d[4*x+1]=s1[x];
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
1006 d[4*x+2]=s0[2*x+1];
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
1007 d[4*x+3]=s2[x];
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
1008 }
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
1009 }
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
1010 blit_frame=3;
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
1011 }
3e5b5be0b61d temporary hack: YUV422P -> YUY2 converter (for ffmpeg MJPEG testing)
arpi
parents: 1431
diff changeset
1012
1360
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
1013 }
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
1014 }
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
1015 break;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
1016 }
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
1017 #endif
1517
0e9c29538a86 Use USE_WIN32DLL define instead of ARCH_X86 to decide whether or not to compile
jkeil
parents: 1496
diff changeset
1018 #ifdef USE_WIN32DLL
1410
eda16e490ae7 using AFM_/VFM_ macros instead of hardcoded constants (idea by al3x)
arpi
parents: 1401
diff changeset
1019 case VFM_VFWEX:
eda16e490ae7 using AFM_/VFM_ macros instead of hardcoded constants (idea by al3x)
arpi
parents: 1401
diff changeset
1020 case VFM_VFW:
1309
598e3047ce13 Add some preliminary support for non-x86 architectures to mplayer
jkeil
parents: 1297
diff changeset
1021 {
2049
df41903fd7d7 VfW stuff moved to dll_init, warnings fixed, using dll_init.h
arpi
parents: 2044
diff changeset
1022 int ret;
1360
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
1023 if(!in_size) break;
4516
d604c3db9a76 Direct rendering expansion:
nick
parents: 4515
diff changeset
1024 /* FIXME: WILL WORK ONLY FOR PACKED FOURCC. BUT WHAT ABOUT PLANAR? */
d604c3db9a76 Direct rendering expansion:
nick
parents: 4515
diff changeset
1025 vmem = 0;
d604c3db9a76 Direct rendering expansion:
nick
parents: 4515
diff changeset
1026 if(use_dr && bda.dest.pitch.y == 16)
d604c3db9a76 Direct rendering expansion:
nick
parents: 4515
diff changeset
1027 {
d604c3db9a76 Direct rendering expansion:
nick
parents: 4515
diff changeset
1028 vmem = bda.dga_addr + bda.offsets[0] + bda.offset.y;
d604c3db9a76 Direct rendering expansion:
nick
parents: 4515
diff changeset
1029 if(vo_doublebuffering && bda.num_frames>1)
d604c3db9a76 Direct rendering expansion:
nick
parents: 4515
diff changeset
1030 {
d604c3db9a76 Direct rendering expansion:
nick
parents: 4515
diff changeset
1031 if(double_buff_num) vmem = bda.dga_addr + bda.offsets[1] + bda.offset.y;
d604c3db9a76 Direct rendering expansion:
nick
parents: 4515
diff changeset
1032 else vmem = bda.dga_addr + bda.offsets[0] + bda.offset.y;
d604c3db9a76 Direct rendering expansion:
nick
parents: 4515
diff changeset
1033 double_buff_num = double_buff_num ? 0 : 1;
d604c3db9a76 Direct rendering expansion:
nick
parents: 4515
diff changeset
1034 }
d604c3db9a76 Direct rendering expansion:
nick
parents: 4515
diff changeset
1035 sh_video->our_out_buffer = vmem;
d604c3db9a76 Direct rendering expansion:
nick
parents: 4515
diff changeset
1036 }
2049
df41903fd7d7 VfW stuff moved to dll_init, warnings fixed, using dll_init.h
arpi
parents: 2044
diff changeset
1037 if((ret=vfw_decode_video(sh_video,start,in_size,drop_frame,(sh_video->codec->driver==VFM_VFWEX) ))){
df41903fd7d7 VfW stuff moved to dll_init, warnings fixed, using dll_init.h
arpi
parents: 2044
diff changeset
1038 mp_msg(MSGT_DECVIDEO,MSGL_WARN,"Error decompressing frame, err=%d\n",ret);
df41903fd7d7 VfW stuff moved to dll_init, warnings fixed, using dll_init.h
arpi
parents: 2044
diff changeset
1039 break;
df41903fd7d7 VfW stuff moved to dll_init, warnings fixed, using dll_init.h
arpi
parents: 2044
diff changeset
1040 }
4516
d604c3db9a76 Direct rendering expansion:
nick
parents: 4515
diff changeset
1041 if(vmem) painted=1;
1360
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
1042 if(!drop_frame) blit_frame=3;
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
1043 break;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
1044 }
1309
598e3047ce13 Add some preliminary support for non-x86 architectures to mplayer
jkeil
parents: 1297
diff changeset
1045 #endif
1410
eda16e490ae7 using AFM_/VFM_ macros instead of hardcoded constants (idea by al3x)
arpi
parents: 1401
diff changeset
1046 case VFM_MPEG:
1873
f27465a65e41 IMGFMT_MPEGPES support
arpi
parents: 1669
diff changeset
1047 if(out_fmt==IMGFMT_MPEGPES){
f27465a65e41 IMGFMT_MPEGPES support
arpi
parents: 1669
diff changeset
1048 // hardware decoding:
f27465a65e41 IMGFMT_MPEGPES support
arpi
parents: 1669
diff changeset
1049 static vo_mpegpes_t packet;
f27465a65e41 IMGFMT_MPEGPES support
arpi
parents: 1669
diff changeset
1050 mpeg2_decode_data(video_out, start, start+in_size,3); // parse headers
f27465a65e41 IMGFMT_MPEGPES support
arpi
parents: 1669
diff changeset
1051 packet.data=start;
f27465a65e41 IMGFMT_MPEGPES support
arpi
parents: 1669
diff changeset
1052 packet.size=in_size-4;
f27465a65e41 IMGFMT_MPEGPES support
arpi
parents: 1669
diff changeset
1053 packet.timestamp=sh_video->timer*90000.0;
f27465a65e41 IMGFMT_MPEGPES support
arpi
parents: 1669
diff changeset
1054 packet.id=0x1E0; //+sh_video->ds->id;
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
1055 mpi->planes[0]=(uint8_t*)(&packet);
1873
f27465a65e41 IMGFMT_MPEGPES support
arpi
parents: 1669
diff changeset
1056 blit_frame=2;
f27465a65e41 IMGFMT_MPEGPES support
arpi
parents: 1669
diff changeset
1057 } else {
f27465a65e41 IMGFMT_MPEGPES support
arpi
parents: 1669
diff changeset
1058 // software decoding:
2019
7de4eceac32f mpeg2-interlaced patch by Ivan Kalvatchev <iive@yahoo.com>
arpi
parents: 2006
diff changeset
1059 if(
7de4eceac32f mpeg2-interlaced patch by Ivan Kalvatchev <iive@yahoo.com>
arpi
parents: 2006
diff changeset
1060 mpeg2_decode_data(video_out, start, start+in_size,drop_frame) > 0 // decode
7de4eceac32f mpeg2-interlaced patch by Ivan Kalvatchev <iive@yahoo.com>
arpi
parents: 2006
diff changeset
1061 && (!drop_frame)
7de4eceac32f mpeg2-interlaced patch by Ivan Kalvatchev <iive@yahoo.com>
arpi
parents: 2006
diff changeset
1062 ) blit_frame=1;
1873
f27465a65e41 IMGFMT_MPEGPES support
arpi
parents: 1669
diff changeset
1063 }
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
1064 break;
1488
70652cb8c402 raw (uncompressed) video codec
arpi
parents: 1465
diff changeset
1065 case VFM_RAW:
2794
411be2ac50ae vfw_raw fix
alex
parents: 2775
diff changeset
1066 // planes[0]=start;
411be2ac50ae vfw_raw fix
alex
parents: 2775
diff changeset
1067 // blit_frame=2;
411be2ac50ae vfw_raw fix
alex
parents: 2775
diff changeset
1068 sh_video->our_out_buffer = start;
411be2ac50ae vfw_raw fix
alex
parents: 2775
diff changeset
1069 blit_frame=3;
1488
70652cb8c402 raw (uncompressed) video codec
arpi
parents: 1465
diff changeset
1070 break;
1948
e0cc7b7290ec native codec 'rle' added
arpi
parents: 1927
diff changeset
1071 case VFM_RLE:
e0cc7b7290ec native codec 'rle' added
arpi
parents: 1927
diff changeset
1072 //void AVI_Decode_RLE8(char *image,char *delta,int tdsize,
e0cc7b7290ec native codec 'rle' added
arpi
parents: 1927
diff changeset
1073 // unsigned int *map,int imagex,int imagey,unsigned char x11_bytes_pixel);
e0cc7b7290ec native codec 'rle' added
arpi
parents: 1927
diff changeset
1074 AVI_Decode_RLE8(sh_video->our_out_buffer,start,in_size,
e0cc7b7290ec native codec 'rle' added
arpi
parents: 1927
diff changeset
1075 (int*)(((char*)sh_video->bih)+40),
e0cc7b7290ec native codec 'rle' added
arpi
parents: 1927
diff changeset
1076 sh_video->disp_w,sh_video->disp_h,((out_fmt&255)+7)/8);
e0cc7b7290ec native codec 'rle' added
arpi
parents: 1927
diff changeset
1077 blit_frame=3;
e0cc7b7290ec native codec 'rle' added
arpi
parents: 1927
diff changeset
1078 break;
2827
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
1079 case VFM_MSVIDC:
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
1080 if (sh_video->bih->biBitCount == 16)
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
1081 AVI_Decode_Video1_16(
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
1082 start, in_size, sh_video->our_out_buffer,
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
1083 sh_video->disp_w, sh_video->disp_h,
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
1084 ((out_fmt&255)+7)/8);
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
1085 else
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
1086 AVI_Decode_Video1_8(
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
1087 start, in_size, sh_video->our_out_buffer,
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
1088 sh_video->disp_w, sh_video->disp_h,
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
1089 (char *)sh_video->bih+40, ((out_fmt&255)+7)/8);
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
1090 blit_frame = 3;
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
1091 break;
3172
bb38b6b072f8 support for FLI image decoding
melanson
parents: 3160
diff changeset
1092 case VFM_FLI:
3687
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
1093 Decode_Fli(
3172
bb38b6b072f8 support for FLI image decoding
melanson
parents: 3160
diff changeset
1094 start, in_size, sh_video->our_out_buffer,
bb38b6b072f8 support for FLI image decoding
melanson
parents: 3160
diff changeset
1095 sh_video->disp_w, sh_video->disp_h,
bb38b6b072f8 support for FLI image decoding
melanson
parents: 3160
diff changeset
1096 ((out_fmt&255)+7)/8);
bb38b6b072f8 support for FLI image decoding
melanson
parents: 3160
diff changeset
1097 blit_frame = 3;
bb38b6b072f8 support for FLI image decoding
melanson
parents: 3160
diff changeset
1098 break;
3804
53ed66a4f0bf NuppelVideo decoder added, based on Panagiotis Issaris' patch
alex
parents: 3745
diff changeset
1099 case VFM_NUV:
53ed66a4f0bf NuppelVideo decoder added, based on Panagiotis Issaris' patch
alex
parents: 3745
diff changeset
1100 decode_nuv(
53ed66a4f0bf NuppelVideo decoder added, based on Panagiotis Issaris' patch
alex
parents: 3745
diff changeset
1101 start, in_size, sh_video->our_out_buffer,
53ed66a4f0bf NuppelVideo decoder added, based on Panagiotis Issaris' patch
alex
parents: 3745
diff changeset
1102 sh_video->disp_w, sh_video->disp_h);
53ed66a4f0bf NuppelVideo decoder added, based on Panagiotis Issaris' patch
alex
parents: 3745
diff changeset
1103 blit_frame = 3;
53ed66a4f0bf NuppelVideo decoder added, based on Panagiotis Issaris' patch
alex
parents: 3745
diff changeset
1104 break;
3687
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
1105 case VFM_QTRLE:
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
1106 qt_decode_rle(
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
1107 start, in_size, sh_video->our_out_buffer,
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
1108 sh_video->disp_w, sh_video->disp_h,
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
1109 sh_video->bih->biBitCount,
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
1110 ((out_fmt&255)+7)/8);
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
1111 blit_frame = 3;
7fb817c9060b This commit adds initial support for Quicktime Animation (RLE) video. It
melanson
parents: 3646
diff changeset
1112 break;
4227
4b652eac6738 added skeleton for QT SMC decoder
melanson
parents: 4188
diff changeset
1113 case VFM_QTSMC:
4b652eac6738 added skeleton for QT SMC decoder
melanson
parents: 4188
diff changeset
1114 qt_decode_smc(
4b652eac6738 added skeleton for QT SMC decoder
melanson
parents: 4188
diff changeset
1115 start, in_size, sh_video->our_out_buffer,
4b652eac6738 added skeleton for QT SMC decoder
melanson
parents: 4188
diff changeset
1116 sh_video->disp_w, sh_video->disp_h,
4275
818be6ba8758 initial implementation of SMC codec; it almost works, too!
melanson
parents: 4227
diff changeset
1117 (unsigned char *)sh_video->bih+40,
4227
4b652eac6738 added skeleton for QT SMC decoder
melanson
parents: 4188
diff changeset
1118 ((out_fmt&255)+7)/8);
4b652eac6738 added skeleton for QT SMC decoder
melanson
parents: 4188
diff changeset
1119 blit_frame = 3;
4b652eac6738 added skeleton for QT SMC decoder
melanson
parents: 4188
diff changeset
1120 break;
4301
8f43b10f387f added skeleton for Duck Truemotion v1 decoder (doesn't do anything yet)
melanson
parents: 4275
diff changeset
1121 case VFM_DUCKTM1:
8f43b10f387f added skeleton for Duck Truemotion v1 decoder (doesn't do anything yet)
melanson
parents: 4275
diff changeset
1122 decode_duck_tm1(
8f43b10f387f added skeleton for Duck Truemotion v1 decoder (doesn't do anything yet)
melanson
parents: 4275
diff changeset
1123 start, in_size, sh_video->our_out_buffer,
8f43b10f387f added skeleton for Duck Truemotion v1 decoder (doesn't do anything yet)
melanson
parents: 4275
diff changeset
1124 sh_video->disp_w, sh_video->disp_h,
8f43b10f387f added skeleton for Duck Truemotion v1 decoder (doesn't do anything yet)
melanson
parents: 4275
diff changeset
1125 ((out_fmt&255)+7)/8);
8f43b10f387f added skeleton for Duck Truemotion v1 decoder (doesn't do anything yet)
melanson
parents: 4275
diff changeset
1126 blit_frame = 3;
8f43b10f387f added skeleton for Duck Truemotion v1 decoder (doesn't do anything yet)
melanson
parents: 4275
diff changeset
1127 break;
3969
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
1128 case VFM_CYUV:
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
1129 decode_cyuv(start, in_size, sh_video->our_out_buffer,
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
1130 sh_video->disp_w, sh_video->disp_h, (out_fmt==IMGFMT_YUY2)?16:(out_fmt&255));
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
1131 blit_frame = 3;
c4c3f32dae47 integrated Tim Ferguson's native CYUV decoder
melanson
parents: 3947
diff changeset
1132 break;
4486
e69bed07cb27 further work on the RoQ audio decoder
melanson
parents: 4462
diff changeset
1133 case VFM_ROQVIDEO:
e69bed07cb27 further work on the RoQ audio decoder
melanson
parents: 4462
diff changeset
1134 roq_decode_video(start, in_size, sh_video->our_out_buffer,
e69bed07cb27 further work on the RoQ audio decoder
melanson
parents: 4462
diff changeset
1135 sh_video->disp_w, sh_video->disp_h, sh_video->context);
e69bed07cb27 further work on the RoQ audio decoder
melanson
parents: 4462
diff changeset
1136 blit_frame = 3;
e69bed07cb27 further work on the RoQ audio decoder
melanson
parents: 4462
diff changeset
1137 break;
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
1138 } // switch
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
1139 //------------------------ frame decoded. --------------------
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
1140
3160
80df2986ca42 {f}emms is only needed on x86
jkeil
parents: 3144
diff changeset
1141 #ifdef ARCH_X86
1367
16bedc82bd09 MMX problem workaround for broken (win32) codecs
arpi
parents: 1365
diff changeset
1142 // some codecs is broken, and doesn't restore MMX state :(
16bedc82bd09 MMX problem workaround for broken (win32) codecs
arpi
parents: 1365
diff changeset
1143 // it happens usually with broken/damaged files.
3144
ce34f5b40272 runtime cpu detection
michael
parents: 3073
diff changeset
1144 if(gCpuCaps.has3DNow){
ce34f5b40272 runtime cpu detection
michael
parents: 3073
diff changeset
1145 __asm __volatile ("femms\n\t":::"memory");
ce34f5b40272 runtime cpu detection
michael
parents: 3073
diff changeset
1146 }
ce34f5b40272 runtime cpu detection
michael
parents: 3073
diff changeset
1147 else if(gCpuCaps.hasMMX){
ce34f5b40272 runtime cpu detection
michael
parents: 3073
diff changeset
1148 __asm __volatile ("emms\n\t":::"memory");
ce34f5b40272 runtime cpu detection
michael
parents: 3073
diff changeset
1149 }
3160
80df2986ca42 {f}emms is only needed on x86
jkeil
parents: 3144
diff changeset
1150 #endif
1367
16bedc82bd09 MMX problem workaround for broken (win32) codecs
arpi
parents: 1365
diff changeset
1151
1360
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
1152 t2=GetTimer();t=t2-t;video_time_usage+=t*0.000001f;
4460
7de7c849dccf Use DIRECT RENDERING WITH DSHOW codecs
nick
parents: 4457
diff changeset
1153 if(painted) return 1;
1360
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
1154 switch(blit_frame){
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
1155 case 3:
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
1156 if(planar){
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
1157 mpi->stride[0]=sh_video->disp_w;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
1158 mpi->stride[1]=mpi->stride[2]=sh_video->disp_w/2;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
1159 mpi->planes[0]=sh_video->our_out_buffer;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
1160 mpi->planes[2]=mpi->planes[0]+sh_video->disp_w*sh_video->disp_h;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
1161 mpi->planes[1]=mpi->planes[2]+sh_video->disp_w*sh_video->disp_h/4;
2716
5e10c7239819 passing palette to libvo
arpi
parents: 2660
diff changeset
1162 } else {
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
1163 mpi->planes[0]=sh_video->our_out_buffer;
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
1164 mpi->stride[0]=sh_video->disp_w*mpi->bpp;
2716
5e10c7239819 passing palette to libvo
arpi
parents: 2660
diff changeset
1165 if(sh_video->bih && sh_video->bih->biSize==1064)
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
1166 mpi->planes[1]=&sh_video->bih[1]; // pointer to palette
2716
5e10c7239819 passing palette to libvo
arpi
parents: 2660
diff changeset
1167 else
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
1168 mpi->planes[1]=NULL;
2716
5e10c7239819 passing palette to libvo
arpi
parents: 2660
diff changeset
1169 }
3073
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1170 //#define VFM_RAW_POSTPROC
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1171 #ifdef VFM_RAW_POSTPROC
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1172 if (sh_video->codec->driver == VFM_RAW)
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1173 {
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1174 mp_dbg(MSGT_DECVIDEO, MSGL_V, "Postprocessing raw %s!\n",
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1175 vo_format_name(out_fmt));
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1176 switch(out_fmt)
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1177 {
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1178 case IMGFMT_YV12:
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1179 postprocess(planes, stride[0], planes, stride[0],
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1180 sh_video->disp_w, sh_video->disp_h, planes[0],
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1181 0, /*0x20000*/divx_quality);
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1182 break;
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1183 // case IMGFMT_UYVY:
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1184 // uyvytoyv12(start, planes[0], planes[1], planes[2],
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1185 // sh_video->disp_w, sh_video->disp_h, stride[0], stride[1],
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1186 // sh_video->disp_w*2);
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1187 // postprocess(planes, stride[0], planes, stride[0],
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1188 // sh_video->disp_w, sh_video->disp_h, planes[0],
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1189 // 0, /*0x20000*/divx_quality);
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1190 // break;
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1191 default:
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1192 mp_dbg(MSGT_DECVIDEO, MSGL_DBG2, "Unsuitable outformat (%s) for raw pp!\n",
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1193 vo_format_name(out_fmt));
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1194 }
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1195 }
c5cc7f11302a hacked support for postprocessing to rawyv12
alex
parents: 3064
diff changeset
1196 #endif
1360
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
1197 case 2:
1422
d02e0dcaf077 libvo2 support
arpi
parents: 1410
diff changeset
1198 #ifdef USE_LIBVO2
d02e0dcaf077 libvo2 support
arpi
parents: 1410
diff changeset
1199 if(planar)
d02e0dcaf077 libvo2 support
arpi
parents: 1410
diff changeset
1200 vo2_draw_slice(video_out,planes,stride,sh_video->disp_w,sh_video->disp_h,0,0);
d02e0dcaf077 libvo2 support
arpi
parents: 1410
diff changeset
1201 else
d02e0dcaf077 libvo2 support
arpi
parents: 1410
diff changeset
1202 vo2_draw_frame(video_out,planes[0],sh_video->disp_w,sh_video->disp_w,sh_video->disp_h);
d02e0dcaf077 libvo2 support
arpi
parents: 1410
diff changeset
1203 #else
1360
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
1204 if(planar)
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
1205 video_out->draw_slice(mpi->planes,mpi->stride,sh_video->disp_w,sh_video->disp_h,0,0);
1360
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
1206 else
4188
cfd1eed5961d using mp_image.h - not finished...
arpi
parents: 4156
diff changeset
1207 video_out->draw_frame(mpi->planes);
1422
d02e0dcaf077 libvo2 support
arpi
parents: 1410
diff changeset
1208 #endif
1360
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
1209 t2=GetTimer()-t2;vout_time_usage+=t2*0.000001f;
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
1210 blit_frame=1;
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
1211 break;
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
1212 }
3ab0d3f21f51 some cleanup, redundant code removed
arpi
parents: 1352
diff changeset
1213
1294
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
1214 return blit_frame;
0a8e0c7ddd0c video decoder stuff
arpi
parents:
diff changeset
1215 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1367
diff changeset
1216
2827
b4d46817f050 ms video1 (cram) codecs by Mike Melanson <melanson@pcisys.net>
arpi
parents: 2794
diff changeset
1217