VO: actually rename VOs gl -> opengl-old, gl3 -> opengl

This renames vo_gl3 to vo_opengl, and makes it the default. The old
vo_gl is still available under "opengl-old".

We keep "gl3" as alias to "opengl" for short-term compatibility.

For OSX/Cocoa, the autoprobe order changes (prefer the "opengl" over
"opengl-old").

Remove "gl_nosw". This was a compatibility alias for "opengl-old", and
there's no point in keeping it.
This commit is contained in:
wm4 2012-09-23 16:10:00 +02:00
parent 4ecb1b53de
commit 3611d1bf9b
7 changed files with 260 additions and 261 deletions

View File

@ -52,7 +52,7 @@ General changes for mplayer2 to mplayer3
* Cleaned up terminal output (nicer status line, less useless noise)
* Support for playing URLs of popular streaming sites directly
(e.g. ``mplayer3 https://www.youtube.com/watch?v=...``)
* Improved OpenGL output (``vo_gl3``)
* Improved OpenGL output (``vo_opengl``)
* Make ``--softvol`` default (**mplayer3** is not a mixer control panel)
* Improved support for .cue files
* Screenshot improvements (can save screenshots as JPG, configurable filenames)

View File

@ -16,8 +16,8 @@ in the list. Suboptions are optional and can mostly be omitted.
*EXAMPLE*:
``--vo=gl,xv,``
Try the gl driver, then the Xv driver, then others.
``--vo=opengl,xv,``
Try the OpenGL driver, then the Xv driver, then others.
Available video output drivers are:
@ -225,11 +225,226 @@ direct3d (Windows only)
corevideo (Mac OS X 10.6 and later)
Mac OS X CoreVideo video output driver. Uses the CoreVideo APIs to fill
PixelBuffers and generate OpenGL textures from them (useful as a fallback
for vo_gl_).
for vo_opengl_).
.. _vo_gl:
gl
OpenGL video output driver, simple version. Video size must be smaller
.. _vo_opengl:
opengl
OpenGL video output driver.
It supports extended scaling methods, dithering and color management.
It tries to use sane defaults for good quality output.
Note that some cheaper LCDs do dithering that gravely interferes with
vo_opengl's dithering. Disabling dithering with ``dither-depth=-1`` helps.
Requires at least OpenGL 2.1 and the GL_ARB_texture_rg extension. For older
drivers, ``opengl-old`` may work.
Some features are available with OpenGL 3 capable graphics drivers only.
lscale=<filter>
Set the scaling filter. Possible choices:
bilinear
bicubic_fast
sharpen3
sharpen5
hanning
hamming
hermite
quadric
bicubic
kaiser
catmull_rom
mitchell
spline16
spline36
gaussian
sinc2
sinc3
sinc4
lanczos2
lanczos3
lanczos4
blackman2
blackman3
blackman4
bilinear
Bilinear hardware texture filtering (fastest, mid-quality).
lanczos2
Lanczos scaling with radius=2. Provides a good quality and speed.
This is the default.
lanczos3
Lanczos with radius=3.
bicubic_fast
Bicubic filter. Has a blurring effect on the image, even if no
scaling is done.
sharpen3
Unsharp masking (sharpening) with radius=3 and a default strength
of 0.5 (see ``lparam1``).
sharpen5
Unsharp masking (sharpening) with radius=5 and a default strength
of 0.5 (see ``lparam1``).
mitchell
Mitchell-Netravali. The ``b`` and ``c`` parameters can be set with
``lparam1`` and ``lparam2``. Both are set to 1/3 by default.
lparam1=<value>
Set filter parameters. Ignored if the filter is not tunable. These are
unset by default, and use the filter specific default if applicable.
lparam2=<value>
See ``lparam1``.
osdcolor=<0xAARRGGBB>
Use the given color for the OSD.
stereo=<value>
Select a method for stereo display. You may have to use ``--aspect`` to
fix the aspect value. Experimental, do not expect too much from it.
0
Normal 2D display
1
Convert side by side input to full-color red-cyan stereo.
2
Convert side by side input to full-color green-magenta stereo.
3
Convert side by side input to quadbuffered stereo. Only supported
by very few OpenGL cards.
srgb
Enable gamma-correct scaling by working in linear light. This
makes use of sRGB textures and framebuffers.
This option forces the options 'indirect' and 'gamma'.
NOTE: for BT.709 colorspaces, a gamma of 2.35 is assumed. For
other YUV colorspaces, 2.2 is assumed. RGB input is always
assumed to be in sRGB.
pbo
Enable use of PBOs. This is faster, but can sometimes lead to
sporadic and temporary image corruption.
dither-depth=<n>
Positive non-zero values select the target bit depth. Default: 0.
\-1
Disable any dithering done by mplayer.
0
Automatic selection. If output bit depth can't be detected,
8 bits per component are assumed.
8
Dither to 8 bit output.
Note that dithering will always be disabled if the bit depth
of the video is lower or equal to the detected dither-depth.
If color management is enabled, input depth is assumed to be
16 bits, because the 3D LUT output is 16 bit wide.
Note that the depth of the connected video display device can not be
detected. Often, LCD panels will do dithering on their own, which
conflicts with vo_opengl's dithering, and leads to ugly output.
debug
Check for OpenGL errors, i.e. call glGetError(). Also request a
debug OpenGL context (which does nothing with current graphics drivers
as of this writing).
swapinterval=<n>
Interval in displayed frames between two buffer swaps.
1 is equivalent to enable VSYNC, 0 to disable VSYNC.
no-scale-sep
When using a separable scale filter for luma, usually two filter
passes are done. This is often faster. However, it forces
conversion to RGB in an extra pass, so it can actually be slower
if used with fast filters on small screen resolutions. Using
this options will make rendering a single operation.
Note that chroma scalers are always done as 1-pass filters.
cscale=<n>
As lscale but for chroma (2x slower with little visible effect).
Note that with some scaling filters, upscaling is always done in
RGB. If chroma is not subsampled, this option is ignored, and the
luma scaler is used instead. Setting this option is often useless.
no-fancy-downscaling
When using convolution based filters, don't extend the filter
size when downscaling. Trades downscaling performance for
reduced quality.
no-npot
Force use of power-of-2 texture sizes. For debugging only.
Borders will be distorted due to filtering.
glfinish
Call glFinish() before swapping buffers
sw
Continue even if a software renderer is detected.
backend=<sys>
auto
auto-select (default)
cocoa
Cocoa/OSX
win
Win32/WGL
x11
X11/GLX
indirect
Do YUV conversion and scaling as separate passes. This will
first render the video into a video-sized RGB texture, and
draw the result on screen. The luma scaler is used to scale
the RGB image when rendering to screen. The chroma scaler
is used only on YUV conversion, and only if the video uses
chroma-subsampling.
This mechanism is disabled on RGB input.
fbo-format=<fmt>
Selects the internal format of any FBO textures used.
fmt can be one of: rgb, rgba, rgb8, rgb10, rgb16, rgb16f, rgb32f
Default: rgb16.
gamma
Always enable gamma control. (Disables delayed enabling.)
icc-profile=<file>
Load an ICC profile and use it to transform linear RGB to
screen output. Needs LittleCMS2 support compiled in.
icc-cache=<file>
Store and load the 3D LUT created from the ICC profile in
this file. This can be used to speed up loading, since
LittleCMS2 can take a while to create the 3D LUT.
Note that this file contains an uncompressed LUT. Its size depends on
the ``3dlut-size``, can become very big.
icc-intent=<value>
0
perceptual
1
relative colorimetric
2
saturation
3
absolute colorimetric (default)
3dlut-size=<r>x<g>x<b>
Size of the 3D LUT generated from the ICC profile in each
dimension. Default is 128x256x64.
Sizes must be a power of two, and 256 at most.
opengl-old
OpenGL video output driver, old version. Video size must be smaller
than the maximum texture size of your OpenGL implementation. Intended to
work even with the most basic OpenGL implementations, but also makes use
of newer extensions, which allow support for more colorspaces and direct
@ -426,218 +641,6 @@ gl
x11
X11/GLX
gl3
OpenGL video output driver, extended version.
It supports extended scaling methods, dithering and color management.
It tries to use sane defaults for good quality output.
Note that some cheaper LCDs do dithering that gravely interferes with
vo_gl3's dithering. Disabling dithering with ``dither-depth=-1`` helps.
Some features are available with OpenGL 3 capable graphics drivers only.
lscale=<filter>
Set the scaling filter. Possible choices:
bilinear
bicubic_fast
sharpen3
sharpen5
hanning
hamming
hermite
quadric
bicubic
kaiser
catmull_rom
mitchell
spline16
spline36
gaussian
sinc2
sinc3
sinc4
lanczos2
lanczos3
lanczos4
blackman2
blackman3
blackman4
bilinear
Bilinear hardware texture filtering (fastest, mid-quality).
lanczos2
Lanczos scaling with radius=2. Provides a good quality and speed.
This is the default.
lanczos3
Lanczos with radius=3.
bicubic_fast
Bicubic filter. Has a blurring effect on the image, even if no
scaling is done.
sharpen3
Unsharp masking (sharpening) with radius=3 and a default strength
of 0.5 (see ``lparam1``).
sharpen5
Unsharp masking (sharpening) with radius=5 and a default strength
of 0.5 (see ``lparam1``).
mitchell
Mitchell-Netravali. The ``b`` and ``c`` parameters can be set with
``lparam1`` and ``lparam2``. Both are set to 1/3 by default.
lparam1=<value>
Set filter parameters. Ignored if the filter is not tunable. These are
unset by default, and use the filter specific default if applicable.
lparam2=<value>
See ``lparam1``.
osdcolor=<0xAARRGGBB>
Use the given color for the OSD.
stereo=<value>
Select a method for stereo display. You may have to use ``--aspect`` to
fix the aspect value. Experimental, do not expect too much from it.
0
Normal 2D display
1
Convert side by side input to full-color red-cyan stereo.
2
Convert side by side input to full-color green-magenta stereo.
3
Convert side by side input to quadbuffered stereo. Only supported
by very few OpenGL cards.
srgb
Enable gamma-correct scaling by working in linear light. This
makes use of sRGB textures and framebuffers.
This option forces the options 'indirect' and 'gamma'.
NOTE: for BT.709 colorspaces, a gamma of 2.35 is assumed. For
other YUV colorspaces, 2.2 is assumed. RGB input is always
assumed to be in sRGB.
pbo
Enable use of PBOs. This is faster, but can sometimes lead to
sporadic and temporary image corruption.
dither-depth=<n>
Positive non-zero values select the target bit depth. Default: 0.
\-1
Disable any dithering done by mplayer.
0
Automatic selection. If output bit depth can't be detected,
8 bits per component are assumed.
8
Dither to 8 bit output.
Note that dithering will always be disabled if the bit depth
of the video is lower or equal to the detected dither-depth.
If color management is enabled, input depth is assumed to be
16 bits, because the 3D LUT output is 16 bit wide.
Note that the depth of the connected video display device can not be
detected. Often, LCD panels will do dithering on their own, which
conflicts with vo_gl3's dithering, and leads to ugly output.
debug
Check for OpenGL errors, i.e. call glGetError(). Also request a
debug OpenGL context (which does nothing with current graphics drivers
as of this writing).
swapinterval=<n>
Interval in displayed frames between two buffer swaps.
1 is equivalent to enable VSYNC, 0 to disable VSYNC.
no-scale-sep
When using a separable scale filter for luma, usually two filter
passes are done. This is often faster. However, it forces
conversion to RGB in an extra pass, so it can actually be slower
if used with fast filters on small screen resolutions. Using
this options will make rendering a single operation.
Note that chroma scalers are always done as 1-pass filters.
cscale=<n>
As lscale but for chroma (2x slower with little visible effect).
Note that with some scaling filters, upscaling is always done in
RGB. If chroma is not subsampled, this option is ignored, and the
luma scaler is used instead. Setting this option is often useless.
no-fancy-downscaling
When using convolution based filters, don't extend the filter
size when downscaling. Trades downscaling performance for
reduced quality.
no-npot
Force use of power-of-2 texture sizes. For debugging only.
Borders will be distorted due to filtering.
glfinish
Call glFinish() before swapping buffers
sw
Continue even if a software renderer is detected.
backend=<sys>
auto
auto-select (default)
cocoa
Cocoa/OSX
win
Win32/WGL
x11
X11/GLX
indirect
Do YUV conversion and scaling as separate passes. This will
first render the video into a video-sized RGB texture, and
draw the result on screen. The luma scaler is used to scale
the RGB image when rendering to screen. The chroma scaler
is used only on YUV conversion, and only if the video uses
chroma-subsampling.
This mechanism is disabled on RGB input.
fbo-format=<fmt>
Selects the internal format of any FBO textures used.
fmt can be one of: rgb, rgba, rgb8, rgb10, rgb16, rgb16f, rgb32f
Default: rgb16.
gamma
Always enable gamma control. (Disables delayed enabling.)
icc-profile=<file>
Load an ICC profile and use it to transform linear RGB to
screen output. Needs LittleCMS2 support compiled in.
icc-cache=<file>
Store and load the 3D LUT created from the ICC profile in
this file. This can be used to speed up loading, since
LittleCMS2 can take a while to create the 3D LUT.
Note that this file contains an uncompressed LUT. Its size depends on
the ``3dlut-size``, can become very big.
icc-intent=<value>
0
perceptual
1
relative colorimetric
2
saturation
3
absolute colorimetric (default)
3dlut-size=<r>x<g>x<b>
Size of the 3D LUT generated from the ICC profile in each
dimension. Default is 128x256x64.
Sizes must be a power of two, and 256 at most.
null
Produces no video output. Useful for benchmarking.

View File

@ -160,13 +160,13 @@ libvo/:
Video output. They also create GUI windows and handle user input. In most
cases, the windowing code is shared among VOs, like x11_common.c for X11 and
w32_common.c for Windows. The VOs stand between frontend and windowing code.
vo_gl can pick a windowing system at runtime, e.g. the same binary can
vo_opengl can pick a windowing system at runtime, e.g. the same binary can
provide both X11 and Cocoa support on OSX.
VOs can be reconfigured at runtime. A config() call can change the video
resolution and format, without destroying the window.
vo_vdpau and vo_gl3 should be taken as reference.
vo_vdpau and vo_opengl should be taken as reference.
libaf/:
Audio filter chain. format.h/format.c define the audio formats.

View File

@ -73,8 +73,8 @@ int vo_colorkey = 0x0000ff00; // default colorkey is green
extern struct vo_driver video_out_x11;
extern struct vo_driver video_out_vdpau;
extern struct vo_driver video_out_xv;
extern struct vo_driver video_out_gl_nosw;
extern struct vo_driver video_out_gl;
extern struct vo_driver video_out_opengl;
extern struct vo_driver video_out_opengl_old;
extern struct vo_driver video_out_gl3;
extern struct vo_driver video_out_null;
extern struct vo_driver video_out_image;
@ -91,7 +91,8 @@ const struct vo_driver *video_out_drivers[] =
&video_out_direct3d,
#endif
#ifdef CONFIG_GL_COCOA
&video_out_gl,
&video_out_opengl,
&video_out_opengl_old,
#endif
#ifdef CONFIG_COREVIDEO
&video_out_corevideo,
@ -103,9 +104,9 @@ const struct vo_driver *video_out_drivers[] =
&video_out_xv,
#endif
#ifdef CONFIG_GL
&video_out_gl3,
#if !defined CONFIG_GL_COCOA
&video_out_gl,
&video_out_opengl,
&video_out_opengl_old,
#endif
#endif
#ifdef CONFIG_X11
@ -120,10 +121,8 @@ const struct vo_driver *video_out_drivers[] =
#ifdef CONFIG_ENCODING
&video_out_lavc,
#endif
#ifdef CONFIG_X11
#ifdef CONFIG_GL
&video_out_gl_nosw,
#endif
&video_out_gl3,
#endif
NULL
};

View File

@ -54,7 +54,7 @@
#include "fastmemcpy.h"
#include "sub/ass_mp.h"
static const char vo_gl3_shaders[] =
static const char vo_opengl_shaders[] =
// Generated from libvo/vo_opengl_shaders.glsl
#include "libvo/vo_opengl_shaders.h"
;
@ -655,7 +655,7 @@ static void compile_shaders(struct gl_priv *p)
void *tmp = talloc_new(NULL);
struct bstr src = bstr0(vo_gl3_shaders);
struct bstr src = bstr0(vo_opengl_shaders);
char *vertex_shader = get_section(tmp, src, "vertex_all");
char *shader_prelude = get_section(tmp, src, "prelude");
char *s_video = get_section(tmp, src, "frag_video");
@ -2437,10 +2437,29 @@ err_out:
return -1;
}
const struct vo_driver video_out_opengl = {
.is_new = true,
.info = &(const vo_info_t) {
"Extended OpenGL Renderer",
"opengl",
"Based on vo_gl.c by Reimar Doeffinger",
""
},
.preinit = preinit,
.config = config,
.control = control,
.draw_slice = draw_slice,
.draw_osd = draw_osd,
.flip_page = flip_page,
.check_events = check_events,
.uninit = uninit,
};
// short-term compatibility
const struct vo_driver video_out_gl3 = {
.is_new = true,
.info = &(const vo_info_t) {
"OpenGL 3.x",
"Extended OpenGL Renderer",
"gl3",
"Based on vo_gl.c by Reimar Doeffinger",
""
@ -2456,8 +2475,8 @@ const struct vo_driver video_out_gl3 = {
};
static const char help_text[] =
"\n--vo=gl3 command line help:\n"
"Example: mplayer --vo=gl3:scale-sep:lscale=lanczos2\n"
"\n--vo=opengl command line help:\n"
"Example: mplayer --vo=opengl:scale-sep:lscale=lanczos2\n"
"\nOptions:\n"
" lscale=<filter>\n"
" Set the scaling filter. Possible choices:\n"

View File

@ -1230,8 +1230,8 @@ static int preinit(struct vo *vo, const char *arg)
if (subopt_parse(arg, subopts) != 0) {
mp_msg(MSGT_VO, MSGL_FATAL,
"\n-vo gl command line help:\n"
"Example: mplayer -vo gl:slice-height=4\n"
"\n-vo opengl_old command line help:\n"
"Example: mplayer -vo opengl_old:slice-height=4\n"
"\nOptions:\n"
" nomanyfmts\n"
" Disable extended color formats for OpenGL 1.2 and later\n"
@ -1454,33 +1454,11 @@ static int control(struct vo *vo, uint32_t request, void *data)
return VO_NOTIMPL;
}
const struct vo_driver video_out_gl = {
const struct vo_driver video_out_opengl_old = {
.is_new = true,
.info = &(const vo_info_t) {
"OpenGL",
"gl",
"Reimar Doeffinger <Reimar.Doeffinger@gmx.de>",
""
},
.preinit = preinit,
.config = config,
.control = control,
.draw_slice = draw_slice,
.draw_osd = draw_osd,
.flip_page = flip_page,
.check_events = check_events,
.uninit = uninit,
};
// "-vo gl" used to accept software renderers by default. This is not the case
// anymore: you have to use "-vo gl:sw" to get this. This means gl and gl_nosw
// are exactly the same thing now. Keep gl_nosw to not break user configs.
const struct vo_driver video_out_gl_nosw =
{
.is_new = true,
.info = &(const vo_info_t) {
"OpenGL no software rendering",
"gl_nosw",
"opengl-old",
"Reimar Doeffinger <Reimar.Doeffinger@gmx.de>",
""
},

View File

@ -186,7 +186,7 @@ static const char av_desync_help_text[] = _(
" If you have PulseAudio, try --ao=alsa .\n"
"- Slow video output.\n"
" Try a different -vo driver (-vo help for a list) or try -framedrop!\n"
"- Playing a video file with --vo=gl/gl3 with higher FPS than your monitor.\n"
"- Playing a video file with --vo=opengl with higher FPS than the monitor.\n"
" This is due to vsync limiting the framerate. Try --no-vsync, or a\n"
" different VO.\n"
"- Playing from a slow network source.\n"