annotate libmpcodecs/vd.c @ 31240:35b5018370b8

libavcodec/libx264.c requires x264 0.98 since r23430.
author cehoyos
date Wed, 02 Jun 2010 20:50:55 +0000
parents f9719a497f8e
children 4614728cab25
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
30421
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30349
diff changeset
1 /*
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30349
diff changeset
2 * This file is part of MPlayer.
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30349
diff changeset
3 *
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30349
diff changeset
4 * MPlayer is free software; you can redistribute it and/or modify
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30349
diff changeset
5 * it under the terms of the GNU General Public License as published by
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30349
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30349
diff changeset
7 * (at your option) any later version.
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30349
diff changeset
8 *
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30349
diff changeset
9 * MPlayer is distributed in the hope that it will be useful,
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30349
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30349
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30349
diff changeset
12 * GNU General Public License for more details.
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30349
diff changeset
13 *
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30349
diff changeset
14 * You should have received a copy of the GNU General Public License along
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30349
diff changeset
15 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30349
diff changeset
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30349
diff changeset
17 */
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30349
diff changeset
18
4878
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
19 #include <stdio.h>
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
20 #include <stdlib.h>
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
21 #include <string.h>
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
22
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
23 #include "config.h"
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
24 #include "mp_msg.h"
5075
37e15b16e38d libvo init moved to libmpcodecs
arpi
parents: 5029
diff changeset
25 #include "help_mp.h"
4878
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
26
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
27 #include "codec-cfg.h"
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
28
5607
1972c3475d93 mp_image.h and img_format.h moved to libmpcodecs
arpi
parents: 5565
diff changeset
29 #include "img_format.h"
4878
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
30
22599
4faee1254928 Add explicit location for headers from the stream/ directory.
diego
parents: 21145
diff changeset
31 #include "stream/stream.h"
22601
ed8f90096c65 Add explicit location for headers from the libmpdemux/ directory.
diego
parents: 22599
diff changeset
32 #include "libmpdemux/demuxer.h"
ed8f90096c65 Add explicit location for headers from the libmpdemux/ directory.
diego
parents: 22599
diff changeset
33 #include "libmpdemux/stheader.h"
6057
31e465fda59c various openbsd and general warning fixes - patch by Bj«Órn Sandell <biorn@dce.chalmers.se>
arpi
parents: 5925
diff changeset
34 #include "dec_video.h"
4878
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
35
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
36 #include "vd.h"
5507
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents: 5483
diff changeset
37 #include "vf.h"
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents: 5483
diff changeset
38
30519
e96015d17ffb Make vd_functions_t describing codecs const.
reimar
parents: 30421
diff changeset
39 extern const vd_functions_t mpcodecs_vd_null;
e96015d17ffb Make vd_functions_t describing codecs const.
reimar
parents: 30421
diff changeset
40 extern const vd_functions_t mpcodecs_vd_ffmpeg;
e96015d17ffb Make vd_functions_t describing codecs const.
reimar
parents: 30421
diff changeset
41 extern const vd_functions_t mpcodecs_vd_theora;
e96015d17ffb Make vd_functions_t describing codecs const.
reimar
parents: 30421
diff changeset
42 extern const vd_functions_t mpcodecs_vd_dshow;
e96015d17ffb Make vd_functions_t describing codecs const.
reimar
parents: 30421
diff changeset
43 extern const vd_functions_t mpcodecs_vd_dmo;
e96015d17ffb Make vd_functions_t describing codecs const.
reimar
parents: 30421
diff changeset
44 extern const vd_functions_t mpcodecs_vd_vfw;
e96015d17ffb Make vd_functions_t describing codecs const.
reimar
parents: 30421
diff changeset
45 extern const vd_functions_t mpcodecs_vd_vfwex;
e96015d17ffb Make vd_functions_t describing codecs const.
reimar
parents: 30421
diff changeset
46 extern const vd_functions_t mpcodecs_vd_raw;
e96015d17ffb Make vd_functions_t describing codecs const.
reimar
parents: 30421
diff changeset
47 extern const vd_functions_t mpcodecs_vd_hmblck;
e96015d17ffb Make vd_functions_t describing codecs const.
reimar
parents: 30421
diff changeset
48 extern const vd_functions_t mpcodecs_vd_xanim;
e96015d17ffb Make vd_functions_t describing codecs const.
reimar
parents: 30421
diff changeset
49 extern const vd_functions_t mpcodecs_vd_mpng;
e96015d17ffb Make vd_functions_t describing codecs const.
reimar
parents: 30421
diff changeset
50 extern const vd_functions_t mpcodecs_vd_ijpg;
e96015d17ffb Make vd_functions_t describing codecs const.
reimar
parents: 30421
diff changeset
51 extern const vd_functions_t mpcodecs_vd_mtga;
e96015d17ffb Make vd_functions_t describing codecs const.
reimar
parents: 30421
diff changeset
52 extern const vd_functions_t mpcodecs_vd_sgi;
e96015d17ffb Make vd_functions_t describing codecs const.
reimar
parents: 30421
diff changeset
53 extern const vd_functions_t mpcodecs_vd_libmpeg2;
e96015d17ffb Make vd_functions_t describing codecs const.
reimar
parents: 30421
diff changeset
54 extern const vd_functions_t mpcodecs_vd_mpegpes;
e96015d17ffb Make vd_functions_t describing codecs const.
reimar
parents: 30421
diff changeset
55 extern const vd_functions_t mpcodecs_vd_zrmjpeg;
e96015d17ffb Make vd_functions_t describing codecs const.
reimar
parents: 30421
diff changeset
56 extern const vd_functions_t mpcodecs_vd_realvid;
e96015d17ffb Make vd_functions_t describing codecs const.
reimar
parents: 30421
diff changeset
57 extern const vd_functions_t mpcodecs_vd_xvid;
e96015d17ffb Make vd_functions_t describing codecs const.
reimar
parents: 30421
diff changeset
58 extern const vd_functions_t mpcodecs_vd_libdv;
e96015d17ffb Make vd_functions_t describing codecs const.
reimar
parents: 30421
diff changeset
59 extern const vd_functions_t mpcodecs_vd_lzo;
e96015d17ffb Make vd_functions_t describing codecs const.
reimar
parents: 30421
diff changeset
60 extern const vd_functions_t mpcodecs_vd_qtvideo;
4878
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
61
25876
edfe8baed49f copy note on new demuxers and codecs to the top of the array as well to be
ivo
parents: 25872
diff changeset
62 /* Please do not add any new decoders here. If you want to implement a new
25880
4df11ac927fc clarify comments/docs about lav* being the preferred place to implement new
ivo
parents: 25876
diff changeset
63 * decoder, add it to libavcodec, except for wrappers around external
4df11ac927fc clarify comments/docs about lav* being the preferred place to implement new
ivo
parents: 25876
diff changeset
64 * libraries and decoders requiring binary support. */
25876
edfe8baed49f copy note on new demuxers and codecs to the top of the array as well to be
ivo
parents: 25872
diff changeset
65
28826
a72ddec9b027 Add some "const" to mpcodecs_vd_drivers
reimar
parents: 28603
diff changeset
66 const vd_functions_t * const mpcodecs_vd_drivers[] = {
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
67 &mpcodecs_vd_null,
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26206
diff changeset
68 #ifdef CONFIG_LIBAVCODEC
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
69 &mpcodecs_vd_ffmpeg,
4951
e5bd91881646 vd_ffmpeg added, handling of EXPORT imgtype changed
arpi
parents: 4915
diff changeset
70 #endif
27363
40057010b1fa Change a bunch of codec-specific preprocessor directives from a HAVE_
diego
parents: 27341
diff changeset
71 #ifdef CONFIG_OGGTHEORA
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
72 &mpcodecs_vd_theora,
10095
51da0282b302 Theora demuxer/codec support, patch by David Kuehling <dvdkhlng@gmx.de>
arpi
parents: 9534
diff changeset
73 #endif
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26206
diff changeset
74 #ifdef CONFIG_WIN32DLL
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
75 &mpcodecs_vd_dshow,
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
76 &mpcodecs_vd_dmo,
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
77 &mpcodecs_vd_vfw,
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
78 &mpcodecs_vd_vfwex,
4968
236b06410b03 vfw, vfwex, odivx, divx4 added
arpi
parents: 4958
diff changeset
79 #endif
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
80 &mpcodecs_vd_lzo,
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
81 &mpcodecs_vd_raw,
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
82 &mpcodecs_vd_hmblck,
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26206
diff changeset
83 #ifdef CONFIG_XANIM
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
84 &mpcodecs_vd_xanim,
4969
db86fcf25ede xanim, raw, rle added
arpi
parents: 4968
diff changeset
85 #endif
27385
2113bd9c6bd9 Rename preprocessor directives related to image libraries.
diego
parents: 27370
diff changeset
86 #ifdef CONFIG_PNG
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
87 &mpcodecs_vd_mpng,
4998
c32191b02a66 mpng, libmpeg2 added, none of them finished :(
arpi
parents: 4989
diff changeset
88 #endif
27385
2113bd9c6bd9 Rename preprocessor directives related to image libraries.
diego
parents: 27370
diff changeset
89 #ifdef CONFIG_JPEG
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
90 &mpcodecs_vd_ijpg,
5029
ef8a43b74075 Add IJPG decoder.
pontscho
parents: 5004
diff changeset
91 #endif
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
92 &mpcodecs_vd_mtga,
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
93 &mpcodecs_vd_sgi,
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26206
diff changeset
94 #ifdef CONFIG_LIBMPEG2
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
95 &mpcodecs_vd_libmpeg2,
8026
b465ba5897a3 usage of libmpeg2, liba52, mp3lib & svq1 can be disabled
arpi
parents: 7978
diff changeset
96 #endif
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
97 &mpcodecs_vd_mpegpes,
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27363
diff changeset
98 #ifdef CONFIG_ZR
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
99 &mpcodecs_vd_zrmjpeg,
11386
229079491864 addition of special image formats for Zoran MJPEG, and vd_zrmjpeg.c
rik
parents: 11261
diff changeset
100 #endif
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26206
diff changeset
101 #ifdef CONFIG_REALCODECS
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
102 &mpcodecs_vd_realvid,
6343
d253cf4f43a9 realvideo support by Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents: 6234
diff changeset
103 #endif
27363
40057010b1fa Change a bunch of codec-specific preprocessor directives from a HAVE_
diego
parents: 27341
diff changeset
104 #ifdef CONFIG_XVID4
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
105 &mpcodecs_vd_xvid,
6701
522713337297 Support for Xvid using their new api. If divx4 compatiblity is disabeled
albeu
parents: 6506
diff changeset
106 #endif
27363
40057010b1fa Change a bunch of codec-specific preprocessor directives from a HAVE_
diego
parents: 27341
diff changeset
107 #ifdef CONFIG_LIBDV095
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
108 &mpcodecs_vd_libdv,
6927
0145bba6e201 native DV audio/video decoders using libdv
arpi
parents: 6709
diff changeset
109 #endif
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26206
diff changeset
110 #ifdef CONFIG_QTX_CODECS
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
111 &mpcodecs_vd_qtvideo,
8160
2be30233c532 qt video dll codecs support
arpi
parents: 8026
diff changeset
112 #endif
25872
3eeaf9d4c65a note on new demuxers and codecs, add them to lav* instead of libmp*
ivo
parents: 25597
diff changeset
113 /* Please do not add any new decoders here. If you want to implement a new
25880
4df11ac927fc clarify comments/docs about lav* being the preferred place to implement new
ivo
parents: 25876
diff changeset
114 * decoder, add it to libavcodec, except for wrappers around external
4df11ac927fc clarify comments/docs about lav* being the preferred place to implement new
ivo
parents: 25876
diff changeset
115 * libraries and decoders requiring binary support. */
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
116 NULL
4878
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
117 };
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
118
4971
fa002f25631e direct rendering support
arpi
parents: 4969
diff changeset
119 #include "libvo/video_out.h"
fa002f25631e direct rendering support
arpi
parents: 4969
diff changeset
120
5075
37e15b16e38d libvo init moved to libmpcodecs
arpi
parents: 5029
diff changeset
121 // libvo opts:
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
122 int fullscreen = 0;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
123 int vidmode = 0;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
124 int softzoom = 0;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
125 int flip = -1;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
126 int opt_screen_size_x = 0;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
127 int opt_screen_size_y = 0;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
128 float screen_size_xy = 0;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
129 float movie_aspect = -1.0;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
130 int vo_flags = 0;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
131 int vd_use_slices = 1;
5075
37e15b16e38d libvo init moved to libmpcodecs
arpi
parents: 5029
diff changeset
132
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29087
diff changeset
133 /** global variables for gamma, brightness, contrast, saturation and hue
23077
17bf4f4b0715 Gui --> gui
diego
parents: 22601
diff changeset
134 modified by mplayer.c and gui/mplayer/gtk/eq.c:
13341
0c41c3728568 fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents: 12827
diff changeset
135 ranges -100 - 100
0c41c3728568 fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents: 12827
diff changeset
136 1000 if the vo default should be used
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29087
diff changeset
137 */
13341
0c41c3728568 fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents: 12827
diff changeset
138 int vo_gamma_gamma = 1000;
0c41c3728568 fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents: 12827
diff changeset
139 int vo_gamma_brightness = 1000;
0c41c3728568 fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents: 12827
diff changeset
140 int vo_gamma_contrast = 1000;
0c41c3728568 fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents: 12827
diff changeset
141 int vo_gamma_saturation = 1000;
0c41c3728568 fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents: 12827
diff changeset
142 int vo_gamma_hue = 1000;
0c41c3728568 fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents: 12827
diff changeset
143
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
144 extern const vd_functions_t *mpvdec; // FIXME!
5180
7e77d7344208 supports query_format in codecs
arpi
parents: 5172
diff changeset
145
27751
d120b2951b37 Move SCREEN_SIZE_X/Y definition to libmpcodecs/vd.c where it is used.
diego
parents: 27385
diff changeset
146 #define SCREEN_SIZE_X 1
d120b2951b37 Move SCREEN_SIZE_X/Y definition to libmpcodecs/vd.c where it is used.
diego
parents: 27385
diff changeset
147 #define SCREEN_SIZE_Y 1
d120b2951b37 Move SCREEN_SIZE_X/Y definition to libmpcodecs/vd.c where it is used.
diego
parents: 27385
diff changeset
148
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
149 int mpcodecs_config_vo(sh_video_t *sh, int w, int h,
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
150 unsigned int preferred_outfmt)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
151 {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
152 int i, j;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
153 unsigned int out_fmt = 0;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
154 int screen_size_x = 0; //SCREEN_SIZE_X;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
155 int screen_size_y = 0; //SCREEN_SIZE_Y;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
156 vf_instance_t *vf = sh->vfilter, *sc = NULL;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
157 int palette = 0;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
158 int vocfg_flags = 0;
5075
37e15b16e38d libvo init moved to libmpcodecs
arpi
parents: 5029
diff changeset
159
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
160 if (w)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
161 sh->disp_w = w;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
162 if (h)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
163 sh->disp_h = h;
8579
8f6e84a2a431 do not config video out system if input dimensions are invalid (triggered a segfault in vop_expand due to missing dimension checks, which bug was reported by gabucino)
alex
parents: 8295
diff changeset
164
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
165 if (!sh->disp_w || !sh->disp_h)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
166 return 0;
5365
b87743434e1f Issue a warning in VDec if disp_w and disp_h weren't set by codec and try workaround.
atmos4
parents: 5315
diff changeset
167
29700
cd5b4ddc9546 Reduce console output verbosity: Move colorspace information to verbose mode.
diego
parents: 29263
diff changeset
168 mp_msg(MSGT_DECVIDEO, MSGL_V,
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
169 "VDec: vo config request - %d x %d (preferred colorspace: %s)\n", w,
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
170 h, vo_format_name(preferred_outfmt));
5075
37e15b16e38d libvo init moved to libmpcodecs
arpi
parents: 5029
diff changeset
171
5925
3f17793b2cea setting vf_inited flag, some printf->mp_msg, some MSGL_FATAL->MSGL_WARN
arpi
parents: 5903
diff changeset
172 // if(!vf) return 1; // temp hack
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29087
diff changeset
173
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
174 if (get_video_quality_max(sh) <= 0 && divx_quality) {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
175 // user wants postprocess but no pp filter yet:
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
176 sh->vfilter = vf = vf_open_filter(vf, "pp", NULL);
5565
0b301fec999a capabilities support -> automatic insertion of scale, expand, pp
arpi
parents: 5549
diff changeset
177 }
5131
cff03e88d331 prefer outfmt with no conversion (see vo's query flags)
arpi
parents: 5077
diff changeset
178 // check if libvo and codec has common outfmt (no conversion):
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
179 csp_again:
9275
d29f03d5763c - append the 'palette' filter if the codec supports RGB8/BGR8 and no csp
arpi
parents: 8579
diff changeset
180
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
181 if (mp_msg_test(MSGT_DECVIDEO, MSGL_V)) {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
182 vf_instance_t *f = vf;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
183 mp_msg(MSGT_DECVIDEO, MSGL_V, "Trying filter chain:");
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
184 for (f = vf; f; f = f->next)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
185 mp_msg(MSGT_DECVIDEO, MSGL_V, " %s", f->info->name);
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
186 mp_msg(MSGT_DECVIDEO, MSGL_V, "\n");
9275
d29f03d5763c - append the 'palette' filter if the codec supports RGB8/BGR8 and no csp
arpi
parents: 8579
diff changeset
187 }
d29f03d5763c - append the 'palette' filter if the codec supports RGB8/BGR8 and no csp
arpi
parents: 8579
diff changeset
188
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
189 j = -1;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
190 for (i = 0; i < CODECS_MAX_OUTFMT; i++) {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
191 int flags;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
192 out_fmt = sh->codec->outfmt[i];
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
193 if (out_fmt == (unsigned int) 0xFFFFFFFF)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
194 continue;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
195 flags = vf->query_format(vf, out_fmt);
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
196 mp_msg(MSGT_CPLAYER, MSGL_DBG2,
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
197 "vo_debug: query(%s) returned 0x%X (i=%d) \n",
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
198 vo_format_name(out_fmt), flags, i);
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
199 if ((flags & VFCAP_CSP_SUPPORTED_BY_HW)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
200 || (flags & VFCAP_CSP_SUPPORTED && j < 0)) {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
201 // check (query) if codec really support this outfmt...
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
202 sh->outfmtidx = j; // pass index to the control() function this way
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
203 if (mpvdec->control(sh, VDCTRL_QUERY_FORMAT, &out_fmt) ==
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
204 CONTROL_FALSE) {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
205 mp_msg(MSGT_CPLAYER, MSGL_DBG2,
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
206 "vo_debug: codec query_format(%s) returned FALSE\n",
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
207 vo_format_name(out_fmt));
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
208 continue;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
209 }
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
210 j = i;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
211 vo_flags = flags;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
212 if (flags & VFCAP_CSP_SUPPORTED_BY_HW)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
213 break;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
214 } else if (!palette
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
215 && !(flags &
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
216 (VFCAP_CSP_SUPPORTED_BY_HW | VFCAP_CSP_SUPPORTED))
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
217 && (out_fmt == IMGFMT_RGB8 || out_fmt == IMGFMT_BGR8)) {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
218 sh->outfmtidx = j; // pass index to the control() function this way
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
219 if (mpvdec->control(sh, VDCTRL_QUERY_FORMAT, &out_fmt) !=
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
220 CONTROL_FALSE)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
221 palette = 1;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
222 }
5075
37e15b16e38d libvo init moved to libmpcodecs
arpi
parents: 5029
diff changeset
223 }
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
224 if (j < 0) {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
225 // TODO: no match - we should use conversion...
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
226 if (strcmp(vf->info->name, "scale") && palette != -1) {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
227 mp_msg(MSGT_DECVIDEO, MSGL_INFO, MSGTR_CouldNotFindColorspace);
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
228 sc = vf = vf_open_filter(vf, "scale", NULL);
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
229 goto csp_again;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
230 } else if (palette == 1) {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
231 mp_msg(MSGT_DECVIDEO, MSGL_V, "vd: Trying -vf palette...\n");
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
232 palette = -1;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
233 vf = vf_open_filter(vf, "palette", NULL);
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
234 goto csp_again;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
235 } else { // sws failed, if the last filter (vf_vo) support MPEGPES try to append vf_lavc
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
236 vf_instance_t *vo, *vp = NULL, *ve, *vpp = NULL;
31198
f9719a497f8e cosmetics: Remove some commented-out #includes, fix a comment grammar error.
diego
parents: 31170
diff changeset
237 // Remove the scale filter if we added it ourselves
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
238 if (vf == sc) {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
239 ve = vf;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
240 vf = vf->next;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
241 vf_uninit_filter(ve);
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
242 }
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
243 // Find the last filter (vf_vo)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
244 for (vo = vf; vo->next; vo = vo->next) {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
245 vpp = vp;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
246 vp = vo;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
247 }
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
248 if (vo->query_format(vo, IMGFMT_MPEGPES)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
249 && (!vp || (vp && strcmp(vp->info->name, "lavc")))) {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
250 ve = vf_open_filter(vo, "lavc", NULL);
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
251 if (vp)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
252 vp->next = ve;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
253 else
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
254 vf = ve;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
255 goto csp_again;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
256 }
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
257 if (vp && !strcmp(vp->info->name, "lavc")) {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
258 if (vpp)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
259 vpp->next = vo;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
260 else
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
261 vf = vo;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
262 vf_uninit_filter(vp);
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
263 }
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
264 }
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
265 mp_msg(MSGT_CPLAYER, MSGL_WARN, MSGTR_VOincompCodec);
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
266 sh->vf_initialized = -1;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
267 return 0; // failed
5075
37e15b16e38d libvo init moved to libmpcodecs
arpi
parents: 5029
diff changeset
268 }
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
269 out_fmt = sh->codec->outfmt[j];
29700
cd5b4ddc9546 Reduce console output verbosity: Move colorspace information to verbose mode.
diego
parents: 29263
diff changeset
270 mp_msg(MSGT_CPLAYER, MSGL_V, "VDec: using %s as output csp (no %d)\n",
cd5b4ddc9546 Reduce console output verbosity: Move colorspace information to verbose mode.
diego
parents: 29263
diff changeset
271 vo_format_name(out_fmt), j);
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
272 sh->outfmtidx = j;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
273 sh->vfilter = vf;
5075
37e15b16e38d libvo init moved to libmpcodecs
arpi
parents: 5029
diff changeset
274
37e15b16e38d libvo init moved to libmpcodecs
arpi
parents: 5029
diff changeset
275 // autodetect flipping
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
276 if (flip == -1) {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
277 flip = 0;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
278 if (sh->codec->outflags[j] & CODECS_FLAG_FLIP)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
279 if (!(sh->codec->outflags[j] & CODECS_FLAG_NOFLIP))
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
280 flip = 1;
5075
37e15b16e38d libvo init moved to libmpcodecs
arpi
parents: 5029
diff changeset
281 }
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
282 if (vo_flags & VFCAP_FLIPPED)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
283 flip ^= 1;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
284 if (flip && !(vo_flags & VFCAP_FLIP)) {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
285 // we need to flip, but no flipping filter avail.
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
286 vf_add_before_vo(&vf, "flip", NULL);
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
287 sh->vfilter = vf;
5565
0b301fec999a capabilities support -> automatic insertion of scale, expand, pp
arpi
parents: 5549
diff changeset
288 }
5075
37e15b16e38d libvo init moved to libmpcodecs
arpi
parents: 5029
diff changeset
289 // time to do aspect ratio corrections...
37e15b16e38d libvo init moved to libmpcodecs
arpi
parents: 5029
diff changeset
290
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
291 if (movie_aspect > -1.0)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
292 sh->aspect = movie_aspect; // cmdline overrides autodetect
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
293 else if (sh->stream_aspect != 0.0)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
294 sh->aspect = sh->stream_aspect;
5075
37e15b16e38d libvo init moved to libmpcodecs
arpi
parents: 5029
diff changeset
295 // if(!sh->aspect) sh->aspect=1.0;
5903
97abdfbbeff0 apply aspect prescaling to -xy
arpi
parents: 5710
diff changeset
296
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
297 if (opt_screen_size_x || opt_screen_size_y) {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
298 screen_size_x = opt_screen_size_x;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
299 screen_size_y = opt_screen_size_y;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
300 if (!vidmode) {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
301 if (!screen_size_x)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
302 screen_size_x = SCREEN_SIZE_X;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
303 if (!screen_size_y)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
304 screen_size_y = SCREEN_SIZE_Y;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
305 if (screen_size_x <= 8)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
306 screen_size_x *= sh->disp_w;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
307 if (screen_size_y <= 8)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
308 screen_size_y *= sh->disp_h;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
309 }
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
310 } else {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
311 // check source format aspect, calculate prescale ::atmos
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
312 screen_size_x = sh->disp_w;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
313 screen_size_y = sh->disp_h;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
314 if (screen_size_xy >= 0.001) {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
315 if (screen_size_xy <= 8) {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
316 // -xy means x+y scale
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
317 screen_size_x *= screen_size_xy;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
318 screen_size_y *= screen_size_xy;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
319 } else {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
320 // -xy means forced width while keeping correct aspect
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
321 screen_size_x = screen_size_xy;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
322 screen_size_y = screen_size_xy * sh->disp_h / sh->disp_w;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
323 }
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
324 }
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
325 if (sh->aspect > 0.01) {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
326 int w;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
327 mp_msg(MSGT_CPLAYER, MSGL_INFO, MSGTR_MovieAspectIsSet,
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
328 sh->aspect);
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
329 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_VIDEO_ASPECT=%1.4f\n",
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
330 sh->aspect);
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
331 w = (int) ((float) screen_size_y * sh->aspect);
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
332 w += w % 2; // round
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
333 // we don't like horizontal downscale || user forced width:
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
334 if (w < screen_size_x || screen_size_xy > 8) {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
335 screen_size_y =
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
336 (int) ((float) screen_size_x * (1.0 / sh->aspect));
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
337 screen_size_y += screen_size_y % 2; // round
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
338 } else
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
339 screen_size_x = w; // keep new width
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
340 } else {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
341 mp_msg(MSGT_CPLAYER, MSGL_INFO, MSGTR_MovieAspectUndefined);
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
342 }
5903
97abdfbbeff0 apply aspect prescaling to -xy
arpi
parents: 5710
diff changeset
343 }
5075
37e15b16e38d libvo init moved to libmpcodecs
arpi
parents: 5029
diff changeset
344
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
345 vocfg_flags = (fullscreen ? VOFLAG_FULLSCREEN : 0)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
346 | (vidmode ? VOFLAG_MODESWITCHING : 0)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
347 | (softzoom ? VOFLAG_SWSCALE : 0)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
348 | (flip ? VOFLAG_FLIPPING : 0);
15212
05aa13cdf92f replace VO and VF numeric flags with #defined identifiers
henry
parents: 14878
diff changeset
349
5075
37e15b16e38d libvo init moved to libmpcodecs
arpi
parents: 5029
diff changeset
350 // Time to config libvo!
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
351 mp_msg(MSGT_CPLAYER, MSGL_V,
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
352 "VO Config (%dx%d->%dx%d,flags=%d,'%s',0x%X)\n", sh->disp_w,
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
353 sh->disp_h, screen_size_x, screen_size_y, vocfg_flags, "MPlayer",
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
354 out_fmt);
5075
37e15b16e38d libvo init moved to libmpcodecs
arpi
parents: 5029
diff changeset
355
14073
9e81af56f554 fix image dimensions at filter config time
henry
parents: 13521
diff changeset
356 vf->w = sh->disp_w;
9e81af56f554 fix image dimensions at filter config time
henry
parents: 13521
diff changeset
357 vf->h = sh->disp_h;
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
358 if (vf_config_wrapper
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
359 (vf, sh->disp_w, sh->disp_h, screen_size_x, screen_size_y, vocfg_flags,
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
360 out_fmt) == 0) {
7124
eca7dbad0166 finally removed query_vaa, bes_da and vo_tune_info - the obsoleted libvo api
alex
parents: 6993
diff changeset
361 // "MPlayer",out_fmt)){
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
362 mp_msg(MSGT_CPLAYER, MSGL_WARN, MSGTR_CannotInitVO);
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
363 sh->vf_initialized = -1;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
364 return 0;
5075
37e15b16e38d libvo init moved to libmpcodecs
arpi
parents: 5029
diff changeset
365 }
37e15b16e38d libvo init moved to libmpcodecs
arpi
parents: 5029
diff changeset
366
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
367 sh->vf_initialized = 1;
13341
0c41c3728568 fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents: 12827
diff changeset
368
0c41c3728568 fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents: 12827
diff changeset
369 if (vo_gamma_gamma != 1000)
0c41c3728568 fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents: 12827
diff changeset
370 set_video_colors(sh, "gamma", vo_gamma_gamma);
0c41c3728568 fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents: 12827
diff changeset
371 if (vo_gamma_brightness != 1000)
0c41c3728568 fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents: 12827
diff changeset
372 set_video_colors(sh, "brightness", vo_gamma_brightness);
0c41c3728568 fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents: 12827
diff changeset
373 if (vo_gamma_contrast != 1000)
0c41c3728568 fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents: 12827
diff changeset
374 set_video_colors(sh, "contrast", vo_gamma_contrast);
0c41c3728568 fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents: 12827
diff changeset
375 if (vo_gamma_saturation != 1000)
0c41c3728568 fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents: 12827
diff changeset
376 set_video_colors(sh, "saturation", vo_gamma_saturation);
0c41c3728568 fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents: 12827
diff changeset
377 if (vo_gamma_hue != 1000)
0c41c3728568 fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents: 12827
diff changeset
378 set_video_colors(sh, "hue", vo_gamma_hue);
0c41c3728568 fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents: 12827
diff changeset
379
4878
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
380 return 1;
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
381 }
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
382
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
383 // mp_imgtype: buffering type, see mp_image.h
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
384 // mp_imgflag: buffer requirements (read/write, preserve, stride limits), see mp_image.h
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
385 // returns NULL or allocated mp_image_t*
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
386 // Note: buffer allocation may be moved to mpcodecs_config_vo() later...
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
387 mp_image_t *mpcodecs_get_image(sh_video_t *sh, int mp_imgtype, int mp_imgflag,
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
388 int w, int h)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
389 {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
390 mp_image_t *mpi =
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
391 vf_get_image(sh->vfilter, sh->codec->outfmt[sh->outfmtidx], mp_imgtype,
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
392 mp_imgflag, w, h);
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
393 if (mpi)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
394 mpi->x = mpi->y = 0;
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
395 return mpi;
4878
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
396 }
eff8a76e515f libmpcodecs core - initial version
arpi
parents:
diff changeset
397
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
398 void mpcodecs_draw_slice(sh_video_t *sh, unsigned char **src, int *stride,
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
399 int w, int h, int x, int y)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
400 {
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
401 struct vf_instance *vf = sh->vfilter;
6709
3b20f07b2c16 Add draw slice for the codecs
albeu
parents: 6701
diff changeset
402
31170
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
403 if (vf->draw_slice)
c720f2bd4765 cosmetics: K&R coding style
diego
parents: 30692
diff changeset
404 vf->draw_slice(vf, src, stride, w, h, x, y);
6709
3b20f07b2c16 Add draw slice for the codecs
albeu
parents: 6701
diff changeset
405 }