1
0
mirror of https://github.com/mpv-player/mpv synced 2024-12-27 17:42:17 +00:00
Commit Graph

33826 Commits

Author SHA1 Message Date
wm4
0e2c48a3ce VO: remove vo_directfb2 and vo_directx
While being able to play videos on a framebuffer device would be nice,
I didn't need it, and couldn't even test it (buggy nvidia binary
drivers that disable framebuffers, buggy DirectFB that crashes when
using the X11 backend). It's just dead weight, get rid of it.

vo_directx was very horrible, and by today it's mostly useless. I didn't
remove it, because there was that-guy who told me in amazement how
awesome mplayer was, because it was the only video player fast enough
for fast playback on his system when using vo_directx. Sorry, that-guy.
2012-08-16 17:17:50 +02:00
wm4
41fbcee1f5 Remove dvdnav support (DVD menus)
When the internal mplayer MPEG demuxer was removed (commit 1fde09db),
the default demuxer when using dvdnav was set to libavformat. Now it
turns out that this doesn't work with libavformat. It will terminate
playback right after the audio runs out (instead of looping it like the
video, or whatever it's supposed to do). I'm not sure what exactly the
problem is, but since 1. even mplayer-svn can't handle DVD menus
directly (missing highlights), 2. DVD menus are essentially worthless,
and 3. I don't directly watch DVDs, don't bother with it and remove it.

For basic playback, there's still libdvdread support.

Also, use pkg-config for libdvdread, and drop support for in-tree
libdvdread. Remove support for in-tree libdvdcss as well.
2012-08-16 17:17:49 +02:00
wm4
aebfbbf2bd Remove win32/qt/xanim/real binary codecs loading
Remove the win32 loader - the win32 emulation layer, as well as the
code for using DirectShow/DMO/VFW codecs. Remove loading of xanim,
QuickTime, and RealMedia codecs.

The win32 emulation layer is based on a very old version of wine.
Apparently, wine code was copied and hacked until it was somehow able
to load a limited collection of binary codecs. It poked around in the
code segment of some known binary codecs to disable unsupported win32
API calls to make them work. Example from module.c:

    for (i=0;i<5;i++)  RVA(0x19e842)[i]=0x90; // make_new_region ?
    for (i=0;i<28;i++) RVA(0x19e86d)[i]=0x90; // call__call_CreateCompatibleDC ?
    for (i=0;i<5;i++)  RVA(0x19e898)[i]=0x90; // jmp_to_call_loadbitmap ?
    for (i=0;i<9;i++)  RVA(0x19e8ac)[i]=0x90; // call__calls_OLE_shit ?
    for (i=0;i<106;i++) RVA(0x261b10)[i]=0x90; // disable threads

Just to show how utterly insane this code is. You wouldn't want even
your worst enemy to have to maintain this. In fact, it seems nobody
made major changes to this code ever since it was committed.

Most formats can be decoded by libavcodecs these days, and the loader
couldn't be used on 64 bit platforms anyway. The same is (probably)
true for the other binary codecs.

General note about how support for win32 codecs could be added back:

It's not possible to replace the win32 loader code by using wine as
library, because modern wine can not be linked with native Linux
programs for certain reasons. It would be possible to to move DirectShow
video decoding into a separate process linked with wine, like the
CoreAVC-for-Linux patches do. There is also the mplayer-ww fork, which
uses the dshownative library to use DirectShow codecs on Windows.
2012-08-16 17:16:33 +02:00
Uoti Urpala
c6b03ffef6 demux_lavf: assume audio codec_tag 0 means unset
Libavformat does not distinguish between "no codec_tag given" and
"codec_tag given, value is 0". 0 can be a valid value. Change
demux_lavf to assume that 0 always means unset for audio. This
prevents incorrect selection of the PCM decoder, which includes
"format 0x0" in its codecs.conf entry. The video case accepts 0 iff
codec_id is RAWVIDEO, but there's no obvious similar check possible
for audio. Thus this could possibly cause issues if a file really uses
0 to mean uncompressed audio.
2012-08-16 17:16:33 +02:00
Uoti Urpala
7f0926498c ad_ffmpeg: add sanity check against decoder overreads
The libavcodec Musepack SV8 decoder returned 2 bytes consumed for 1
byte input, which triggered a crash due to negative input packet size
later. Add a sanity check to prevent crashes with this type of minor
decoder overreads. Also add a check to parser consumed data.
2012-08-16 17:16:33 +02:00
Uoti Urpala
202ea8214e stream_file: print strerror() when failing to open a file
stream_file always printed "File not found" if it could not open a
file, even though this could be due to other reasons such as
permission problems. Print strerror() information instead. This
changes the output for "mplayer /etc/shadow" from
File not found: '/etc/shadow'
to
Cannot open file '/etc/shadow': Permission denied
2012-08-16 17:16:32 +02:00
mplayer-svn
214edc0ef2 command: expand properties for "run" command
Change "run" command to expand properties.

Patch by Jan Christoph Uhde [Jan UhdeJc com], documentation
part changed by me.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@35081 b3059339-0415-0410-9bf9-f77b7e298cf2
Author: reimar
2012-08-16 17:16:32 +02:00
wm4
4672ff39dd vo_vdpau: fix crash when vo_vdpau initialization fails
This happened on system without a vdpau driver installed. It's
especially bad because vdpau is the default VO.

I'm not sure when this bug was introduced, and it seems to exist in
upstream mplayer2 too.
2012-08-16 17:16:32 +02:00
wm4
1b7b0c93a8 video_out: fix crash when VO autoselection fails
init_best_video_out() did not manage the memory for vo->window_title
correctly, and free'd it twice when initialization failed (that's due
to talloc_free_children() being called). When the next VO was tried,
it reused the dangling pointer. Initialize this member somewhere else
lazily instead.
2012-08-16 17:16:08 +02:00
Rudolf Polzer
850f2b4511 configure: check for python3 existence 2012-08-16 17:16:05 +02:00
wm4
bc1034aac2 mplayer: cosmetic changes to status line output
The terminal status line (showing playback status etc.) was too long
for the standard 80 column width in some cases. Shorten the output by
abbreviating some fields with single letters.

Change "(PAUSED!)" to "(Paused)". This looks nicer.

Move the speed field forward and omit the explicit "header". It's
probably intuitively clear that "x2.00" means double speed.

The field showing the playback time in seconds was padded with spaces.
This just takes space away and wasn't really needed.
2012-08-16 00:04:11 +02:00
wm4
80d2c6b141 mplayer: remove playlist demuxer hack
This was a hack for .mov reference files. The mov demuxer, which
triggered this code, has been removed in commit 1fde09db6f.
The code serves no purpose anymore, and it was bogus in the first
place. (This mov feature should have been handled either by the core's
timeline support, or as normal playlist.)
2012-08-16 00:02:04 +02:00
wm4
f3bf5ded4a image_writer: make JPG default and increase quality (for screenshots)
The assumption is that JPG screenshots are more useful in general.
Lossless screenshots made from lossy videos are just a waste of space.

Increase JPEG quality a bit. There's a tradeoff between quality and
size, and since JPEG is the default now, attempt to balance the
JPEG settings to provide sane defaults for general use cases.
2012-08-16 00:01:19 +02:00
wm4
43bd4ab3a2 vf_expand: remove OSD support
It's not clear why this video filter supported OSD rendering.
The manpage says:
    "Can be used for placing subtitles/OSD in the resulting black bands."
But every single VO already does this if vf_expand adds black borders.
This feature is 100% pointless.
2012-08-16 00:00:58 +02:00
wm4
0e7cf9518a core: intentionally cripple slave mode
Rename -slave to -slave-broken to prevent slave mode applications from
working. Do this to prevent horrible user experiences, in case someone
should attempt to try this version of mplayer with smplayer and others.
This also makes it clear that we don't intend to keep slave mode
compatibility, because the slave mode protocol is horrible and bad.

See the changes in options.rst for further reasons and comments.
2012-08-15 23:59:45 +02:00
Stefano Pigozzi
6879d1162c vo_sharedbuffer: remove this VO
Since slave mode is not planned to be kept, this VO is useless and I'm
removing it.

This VO was useful for OSX GUIs. Since in cocoa you can't embed views in
windows from other processes, this VO was writing to a sharedbuffer with
mmap. The OSX GUIs would then read from the buffer and render the image
with an external renderer.

If in the future we will want to support GUIs we will need to reasearch the
IOSurface framework. This allows to share kernel managed image data
across processes and integrates well with OpenGL.
2012-08-15 22:01:39 +02:00
wm4
4e2fe3724b command: fix crash when setting nonexistent property
Commit ebaaa41f2a accidentally removed the final terminator of the
properties array.
2012-08-10 01:30:53 +02:00
wm4
b4dd2194d5 command: fix subtitle selection display
Commit 9c02ae7e95 set the sh variable (see diff) to the struct of
type sh_sub instead the one of sh_stream. Unfortunately this didn't
crash, and merely made the OSD show "unknown" for the language.

Commit 804bf91570 accidentally removed the display of the track
title. Add it back.
2012-08-08 21:45:37 +02:00
Stefano Pigozzi
7fd43b0bcd osx: fix build
adapt the osx VOs to build against the latest changes.
2012-08-08 21:23:28 +02:00
wm4
531778d056 manpage: document gl3, direct3d, portaudio, remove v4l2
The documentation is mostly taken from the help text embedded in the
code of each output driver.

vo_v4l2 and ao_v4l2 have been removed.

Minor modifications to vo_xv, vo_directx and vo_gl.
2012-08-08 00:09:44 +02:00
wm4
97810cbfbd manpage: document per-file options 2012-08-07 22:24:50 +02:00
wm4
d1783c6f7a manpage: add initial documentation about changes
Documents changes from mplayer-svn and mplayer2.

Most of this should probably not be in the manpage, but on a website.
But there is no website yet.
2012-08-07 22:24:29 +02:00
wm4
fb563de255 sub: fix confusion of ass_library handles
Commit 7484ae8e2e attempted to introduce two ass_library handles
(as it was needed to deal with how ass_library manages fonts), but the
commit was completely bogus: it assumed osd_state->ass_library would be
used by osd_libass.c only, which is not the case. As result, some of the
subtitle code used the wrong ass_library handle.

We need two ass_library handles in osd_state. The one from the mplayer
core for subtitles (osd_state->ass_library), and one for OSD rendering
(osd_state->osd_ass_library).
2012-08-07 19:21:46 +02:00
wm4
762ef8d532 codecs.cfg: do not prefer spdifmpa over mpg123 decoder
The generic hardware pass-through decoder ad_spdif (imported from
mplayer-svn) was mistakenly prefered over the default decoder mpg123.
This is the same as mplayer-svn commit 34192.

The spidfmpa entry was marked as "untested", which for inconceivable
reasons is preferred over entries marked "working". (The probe order
is untested, working, buggy. Possibly to "force" untested codecs to be
tested?) I didn't know this behavior, and skipped the corresponding
mplayer-svn commit 34192, as it looked like it would move up the entry
in autoprobe order (not the reverse), which might have been slightly
dangerous, or at least not something we would have to bother with.

The only change in behavior the incorrect entry caused was that playing
a shoutcast mp3 stream displayed "inf" as time on the mplayer status
line, instead the time since joining the stream. (The same can be seen
when starting mplayer-svn with -ac spdifmpa,mpg123 .) I'm not sure why
this happens; I can only guess that when spdifmpa throws away header
data when it fails initializing, or messes up something else.
2012-08-07 19:02:34 +02:00
wm4
796599bcc2 playlist: do not add playlist base path to URLs
The entries of a playlist file usually refer either to local files (in
the same directory as the playlist), or absolute paths like URLs. In
the first case, you want to add the base path of the playlist file to
the files, so that mplayer can find the files. In the second case, the
URLs should not be changed.

Unfortunately, mp_path_join() recognizes URLs as relative paths, and
changes them. E.g. it tried to play /path/to/playlist/http://entry.

Add some code to deal with this properly. The added code uses the same
approach as m_option_type_custom_url in m_option.c, but because it's
so short and trivial, it's perhaps better not to rely on the option
parser code.

It's also unclear whether mp_path_join() should contain this logic,
but maybe it's better to keep the logic of that function clean.
2012-08-07 03:14:53 +02:00
wm4
b27bc9e3c9 command: skipping past the last chapter explicitly stops playback
Skipping past the last chapter as user action means playback of the
current file should be ended. The code did this by doing a relative
seek by 1000000000 seconds, which usually caused playback to stop.
However, it displayed a quite ugly and arbitrary looking number in the
status display.

Fix this by explicitly skipping to the next file, instead of issuing a
seek command. (If there is no next file, the player will exit, just as
before.)

(Note: an alternative way to solve this could have been comparing the
mpctx->video_pts with the mpctx->last_seek_pts in print_status(). If
they're the same, it's likely that the video_pts was set to the seek
request time, and we could print another PTS or no PTS instead.)
2012-08-07 03:01:44 +02:00
wm4
477af1c777 osd: remove FAST_OSD code
This code has never been active by default, ever since it was added
back in 2001. You had to edit config.h or configure manually to enable
it.
2012-08-07 02:21:19 +02:00
wm4
7484ae8e2e osd_libass: allocate separate ASS_Library for OSD
osd_libass.c used the same ASS_Library object as the player core. This
caused a problem: when playing a new file, all fonts loaded by the
ASS_Library object were unloaded, including the OSD font. Parts of the
OSD would stop being rendered correctly.

Solve this by creating a separate ASS_Library, with its own set of
fonts.
2012-08-07 02:15:27 +02:00
wm4
0268b1a445 osd: reset OSD change state even if VO doesn't draw OSD
Commit 168293e0ae assumed the OSD drawing routines (which have the
functions osd_draw_text/_ext as entrypoint) would always be called, and
relied on that to reset the change flag.

Some VOs, such as vo_null, didn't do this. Pausing could turn into
endless framestepping in some cases. Restore the part of the OSD drawing
logic that dealt with this. (Alternatively, the VOs could be obliged to
always call the OSD drawing routines, even if the VO doesn't actually
draw the OSD. But it seems even more messy to rely on that.)
2012-08-07 01:58:43 +02:00
wm4
2287245136 VO: remove old VO glue
This transition to a new VO API started over 4 years ago. It's time to
finally end it, and get rid of the horrible hacks.

Also removes some previously undetected dead code from spudec.c.
2012-08-07 01:29:56 +02:00
wm4
f3bb6692c7 osx_common: remove old VO include, modify change_movie_aspect()
The only reason the old VO related header old_vo_defines.h was included
was probably to gain access to the current VO struct in the function
change_movie_aspect(). Make that function take a parameter instead.

This function seems to be unused.
2012-08-07 01:13:25 +02:00
wm4
1602bb5a46 vo_directx: convert to new VO API 2012-08-07 01:09:50 +02:00
wm4
89b7cb0331 win32: fix compilation on MinGW
The commit 74df1d8e05 (and f752212c62) replaced the configure
endian check with byte order macros defined by standard headers. It
turns out that MinGW-w64 actually doesn't define these macros in the
sys/types.h system header. (I assumed it does, because a quick test
seemed to work. But that was because gcc -W -Wall doesn't warn against
undefined macros. You need -Wundef for that.) MinGW-w64 has a
sys/params.h header defining these macros, but sys/types.h doesn't
include it, so it's useless without special casing the mplayer code.
Add a hack top configure instead. Define the macros directly, and
assume MinGW-w64 only works on little endian machines.

The other changes are basically random typos and superficial oversights.
2012-08-07 01:09:42 +02:00
wm4
76b98e4c32 vo_null: reformat and use new VO API 2012-08-07 01:09:30 +02:00
wm4
c113e6ed7d Remove V4L2 decoder support (vo_v4l2 and ao_v4l2)
The removed VO and AO took MPEG data and decoded it with V4L2. I'm not
exactly sure what's the use of this today, but get rid of it.

As far as feeding video data to V4L2 is concerned, there are other
ways. For example, there is this script, that feeds yuv4mpeg formatted
raw video data to V4L2:

    https://raw.github.com/umlaeute/v4l2loopback/master/examples/yuv4mpeg_to_v4l2.c
2012-08-07 01:09:30 +02:00
wm4
229380d9bd vo_v4l2: reformat, use new VO API
Actually, this is probably completely broken, and there are better
ways to get mplayer output into a V4L2 device.
2012-08-07 01:09:30 +02:00
wm4
3699d5433b vo_caca: use new VO API 2012-08-07 01:09:30 +02:00
wm4
c291f321bb vo_directfb2: reformat and convert to new VO API
No effort was put into moving static variables into a priv struct. The
VO wasn't tested, because DirectFB's X11 backend didn't work for me (it
crashed, not just with mplayer, but also SDL applications).
2012-08-07 01:09:30 +02:00
wm4
ca6d8d431a vo_x11: reformat, use new VO API
This also involves moving the static variables into a priv struct.
2012-08-07 01:09:22 +02:00
wm4
5b39a8255e TOOLS/uncrustify.cfg: add uncrustify profile for code reformatting
There is lots of badly and inconsistently formatted code left, which
leaves us with the frequent need for cleaning up. This uncrustify
profile can be used for automatic reformatting. The author of this file
is (perhaps) uau.

It's different from mplayer-svn's TOOLS/mp-uncrustify-style.cfg. The
differences and origins of these files are unclear, but the file added
with this commit is probably more consistent with the heavily cleaned
up areas of mplayer2 and this fork.
2012-08-06 19:17:21 +02:00
wm4
2f8159e580 manpage: reflect recent VO changes 2012-08-06 19:16:11 +02:00
wm4
97855746f1 image_writer: rename "filetype" option to "format"
Although slightly less precise, this sounds less clunky.

This change also causes the --screenshot-filetype option to be renamed
to --screenshot-format.
2012-08-06 19:05:32 +02:00
wm4
0a20d13dfc libvo: remove videodev_mjpeg.h
This was used by stream/tvi_v4l.c, which was removed a while ago.
2012-08-06 19:02:35 +02:00
wm4
6ecfa42a46 VO: remove vo_gif89a, vo_md5sum, vo_yuv4mpeg
The encoding branch by divverent can handle of these via libavformat.

Note: for some reason, libav/ffmpeg have a GIF muxer only, and no
demuxer. The gif configure checks needef for the mplayer internal gif
demuxer can't be removed yet.
2012-08-06 18:58:17 +02:00
wm4
44f23e36e8 VO: remove vo_jpeg, vo_png, vo_pnm, vo_tga
All of these have been replaced by vo_image.
2012-08-06 18:49:35 +02:00
wm4
eb1182eb50 vo_image: add outdir option
The function checked_mkdir is taken from vo_jpeg, with the error
handling stripped down to a reasonable level.
2012-08-06 17:52:47 +02:00
wm4
c7b66d99d1 vo_image: add new video output for writing images
This is supposed to replace vo_png and others.
2012-08-06 17:52:17 +02:00
wm4
b43adea6c8 video_out: rename privsize member to priv_size 2012-08-06 17:51:53 +02:00
wm4
927c58854f image_writer: support all JPEG specific options vo_jpeg supports
Most of these are useless or probably even dangerous. Support them
anyway, because it's easy, and we want to replace vo_jpeg without any
disadvantages.
2012-08-06 17:51:04 +02:00
wm4
0a0925be82 image_writer: add TGA image format
For getting rid of vo_tga.

This makes use of the libavcodec TGA encoder.
2012-08-06 17:50:31 +02:00