Commit Graph

33175 Commits

Author SHA1 Message Date
Uoti Urpala f1bb6fde32 core: audio: if audio pts is missing return MP_NOPTS_VALUE
Change written_audio_pts() and playing_audio_pts() to return
MP_NOPTS_VALUE if no reasonable pts estimate is available. Before they
returned some incorrect value typically around zero (but not
necessarily exactly that).
2011-07-30 21:05:59 +03:00
Uoti Urpala b33bb28ea3 build: fix --enable-debug, remove some "#ifdef MP_DEBUG"
Recent commit 5d5ca22a6d ("options: commandline: accept --foo=xyz
style options") left some bad code under "#ifdef MP_DEBUG" in
playtree.c, which caused a compilation failure if configured with
"--enable-debug". Fix this. Having the "#ifdef MP_DEBUG" there was
completely unnecessary; it only increased the risk for this kind of
problems for no real benefit - executing the asserts under it would
have no noticeable performance or other penalty in default builds
either. Remove several cases of such harmful "#ifdef MP_DEBUG".
2011-07-30 19:03:20 +03:00
Uoti Urpala a2d74a6b20 stream_cdda: fix incorrectly allocated option field
After commit 39e373aa8d ("options: allocate dynamic options with
talloc") dynamically allocated options must be allocated with talloc.
stream_cdda allocated a string used with the option machinery using
strdup(). Fix. Also silence a warning.
2011-07-30 04:03:47 +03:00
Uoti Urpala 85f0577cd9 vo: X key input: remove ambiguous KeySym remapping
Code mapping X keyboard events to internal player key names remapped
the incoming KeySym values in a way that only kept information about
the lowest byte of the value and whether or not the value was below
256. This caused collisions between values. Remove this obviously
broken mapping and use the raw KeySym values instead. I'm not familiar
enough with X key handling to tell whether there was any valid
motivation whatsoever for the mapping, but the implementation was
certainly broken; if something else breaks it'll have to be fixed
later.
2011-07-29 08:46:50 +03:00
Uoti Urpala ad48f8038c options: commandline: print error type for parse failures
If parsing an option fails, print a string corresponding to the parse
function return value (M_OPT_MISSING_PARAM etc). The primary
motivation is that the parsing code already outputs messages
explaining most problems, but does not itself print anything in the
missing parameter case. Before double-dash --options such errors were
rare (or rather they resulted in the next commandline argument being
silently misinterpreted as an argument to the previous option
instead); but now an argument like "--ss" should give a better
indication about the problem than just "Error parsing option".
2011-07-29 07:58:56 +03:00
Uoti Urpala 5d5ca22a6d options: commandline: accept --foo=xyz style options
Allow writing commandline options with two leading dashes. In this
mode a parameter for the option, if any, follows after a '=';
following separate commandline arguments are never consumed as a
parameter to a previous double-dash option.

Flag options may omit parameter and behave like old single-dash
syntax. "--fs=yes", "--fs=no" and "--fs" are all valid; the first two
behave like configuration file "fs=yes" and "fs=no", and last is the
same as old "-fs" (same effect as "--fs=yes").
2011-07-29 07:24:09 +03:00
Uoti Urpala 8bd13d50cf playtree: use talloc to allocate file parameters 2011-07-29 06:34:04 +03:00
Uoti Urpala 0010ffefc4 options: commandline: allow "--" without filenames after it
A "--" argument on the command line is used to indicate that all
following arguments should be interpreted as filenames, not options.
Specifying it as the last argument was considered an error. I see no
particular reason to forbid the following filename list to be empty,
nor do other programs with similar functionalitly I know about treat
it that way. So just ignore a "--" with no more arguments.
2011-07-29 05:50:38 +03:00
Uoti Urpala f25accbc51 core: improve --loop handling
Make per-file loop option start from --ss position, not always 0.
Do looping in more cases; before looping was only done when
encountering real end of file, now it also happens for example at
--endpos or --frames limits. Also move the --ss option to the option
struct.
2011-07-29 05:50:38 +03:00
Uoti Urpala e873d703e9 options: change option parsing to use bstr
Using bstr allows simpler parsing code, especially because it avoids
the need to modify or copy strings just to terminate extracted
substrings.
2011-07-29 05:50:38 +03:00
Uoti Urpala d8374376c0 cosmetics: parser-cfg.c: reformat 2011-07-29 05:23:43 +03:00
Uoti Urpala 507fa7e2c2 options: indicate ambiguous option parameters explicitly
Command line options like "-foo xyz" are ambiguous: "xyz" may be a
parameter to the option "foo" or an unrelated argument. Instead of
relying on the struct m_config mode field (commandline/file) pass
parameters to specify ambiguous mode explicitly. Meant for "--foo"
options which are never ambiguous on command line either.
2011-07-29 05:02:05 +03:00
Uoti Urpala 0958620591 bstr: rename BSTR() -> bstr()
Rename the BSTR() function to bstr(). The former caused a conflict
with some Windows OS name, and it's no longer a macro so uppercase
naming is less appropriate.
2011-07-27 08:38:12 +03:00
Uoti Urpala ea4cc89f36 options: move command line preparse together with parse 2011-07-26 06:02:03 +03:00
Uoti Urpala 3bdcbba496 asxparser: remove code confusing asx/player options 2011-07-26 05:31:30 +03:00
Uoti Urpala 02b99bd5ba cleanup: reformat parser-mpcmd.c
Also remove some redundant code.
2011-07-26 04:28:37 +03:00
Uoti Urpala 99d9e56e27 subs: fix per-file --ass-force-style
The --ass-force-style option was only applied when the main libass
library handle was created. Thus any per-file option changes later had
no effect. Do the ass_set_style_overrides() call in per-file
initialization instead so that possible changes will be applied. Also
move the option variable to the option struct.

Current libass will crash (usually) if you set style overrides to a
nonempty value, then an empty one. It'll be easier to trigger this bug
after this commit, but the problem is not on mplayer2 side. The fix is
trivial so hopefully there will be a fixed libass soon.
2011-07-23 05:35:26 +03:00
Uoti Urpala 91d6bca695 cleanup: subs: remove global ass_library variable 2011-07-23 01:55:13 +03:00
Uoti Urpala d6890a7b53 input: fix input.conf parse errors
Commit df899f59be removing a write outside a buffer triggered another
problem, as for some reason the code did not 0-terminate its read
buffer in the specific case that it had encountered an EOF, and as a
result could parse contents left in the buffer for a second time.
Usually this resulted in parsing error messages. Fix the problem by
rewriting the offending code in a less hacky form.
2011-07-20 04:41:51 +03:00
Uoti Urpala c2f5465bcc input: fix problem with key autorepeat
Recent commit 82b8f89bae ("input: rework event reading and command
queuing") had a problem in the handling of commands generated by
autorepeat code (this code is only used with joystick and Apple IR
remote input). Fix (still untested though).
2011-07-18 01:18:45 +03:00
Uoti Urpala a4f4130819 cleanup: do libav* initialization on startup
Do the global initialization of libavcodec and libavformat
(avcodec_register_all(), av_register_all()) immediately on program
startup and remove the initialization calls from various individual
modules that use libavcodec/libavformat functionality.
2011-07-18 00:57:05 +03:00
Uoti Urpala 4e2b15fc5e vf_qp: enable compilation depending on libavutil eval API
Libavutil eval API seems to be enough for vf_qp, so enable the filter
if the API is available. Also clean up some left over lines for other
filters in Makefile.
2011-07-18 00:57:05 +03:00
Uoti Urpala 25de401425 configure: make libavutil eval API check require newer version
The code now uses a newer syntax (av_expr_*), so require a newer
version of libavutil which supports that.
2011-07-18 00:00:41 +03:00
Uoti Urpala decec7f2a3 vo_vdpau: skip resize code if not fully initialized
Window events or user commands could trigger a call to resize() before
config() had been called. This caused at least error messages. Add a
check to make resize() exit without doing anything in this case. It
will be called again later when the output is configured.
2011-07-17 17:05:42 +03:00
Uoti Urpala c3e46833c2 input: don't make fd 0 nonblocking
Setting O_NONBLOCK on a file descriptor also affects all other fds
that share the same underlying open file description, and in case of
stdin such sharing is likely. Making stdin nonblocking can also make
stdout nonblocking (they may be the same connection to a terminal),
and it can also affect other processes (in "program1 | program2", the
shell may give the same terminal connection to program1 as stdin and
to program2 as stdout, thus program1 making its stdin nonblocking also
turns program2's stdout nonblocking).

To avoid these problems stop making fd 0 nonblocking. After the
previous commit this should no longer cause problems as long as
select() does not spuriously report the fd as readable.
2011-07-17 17:05:08 +03:00
Uoti Urpala 82b8f89bae input: rework event reading and command queuing
Rework much of the logic related to reading from event sources and
queuing commands. The two biggest architecture changes are:
- The code buffering keycodes in mp_fifo.c is gone. Instead key input
  is now immediately fed to input.c and interpreted as commands, and
  then the commands are buffered instead.
- mp_input_get_cmd() now always tries to read every available event
  from every event source and convert them to (buffered) commands.
  Before it would only process new events until one new command became
  available.

Some relevant behavior changes:
- Before commands could be lost when stream code called
  mp_input_check_interrupt() which read commands (to see if they were
  of types that triggered aborts during slow IO tasks) and then threw
  them away. This was especially an issue if cache was enabled and slow
  to read. Fixed - now it's possible to check whether there are queued
  commands which will abort playback of the current file without
  throwing other commands away.
- mp_input_check_interrupt() now prints a message if it returns
  true. This is especially useful because the failures caused by
  aborted stream reads can trigger error messages from other code that
  was doing the read; the new message makes it more obvious what the
  cause of the subsequent error messages is.
- It's now possible to again avoid making stdin non-blocking (which
  caused some issues) without reintroducing extra latency. The change
  will be done in a subsequent commit.
- Event sources that do not support select() should now have somewhat
  lower latency in certain situations as they will be checked both
  before and after select()/sleep in input reading; before the sleep
  always happened first even if such sources already had queued
  input. Before the key fifo was also handled in this manner (first
  key triggered select, but if multiple were read then rest could be
  delayed; however in most cases this didn't add latency in practice
  as after central code started doing command handling it queried for
  further commands with a max sleep time of 0).
- Key fifo limiting is more accurate now: it now counts actual
  commands intead of keycodes, and all queued keys are read
  immediately from input devices so they can be counted correctly.
- Since keypresses are now interpreted immediately, commands which
  change keybindings will no longer affect following keypresses that
  have already been read before the command is executed. This should
  not be an issue in practice with current keybinding behavior.
2011-07-17 07:36:09 +03:00
Uoti Urpala 1916b95b8d cleanup: remove some unnecessary input.[ch] typedefs
Remove some unnecessary typedefs and remove pointless mp_ prefix from
some internal struct names.

Change the type of the "close_func" pointers from "void f(int fd)" to
"int f(int fd)" so that using standard close() there is valid.

Delete some useless assert() statements.

Move internal MP_MAX_KEY_DOWN define from input.h to input.c.
2011-07-16 21:32:37 +03:00
Uoti Urpala db4dee4584 cosmetics: reformat input.h, fix comments 2011-07-16 17:47:02 +03:00
Uoti Urpala e62fcc3a0e img_format.h, vo_gl: fix IMGFMT_IS_YUVP16() definition
Commit aba8a1838a which added 9- and 10-bit formats failed to change
the definition of the IMGFMT_IS_YUVP16() macro (which is misnamed btw,
it matches 9, 10 and 16 bits). This prevented vo_gl from accepting
input in supported 9 and 10 bit colorspaces. Fix.
2011-07-14 01:19:07 +03:00
Uoti Urpala df899f59be input.c: remove write to buffer[-1] in parse_config() 2011-07-11 06:05:19 +03:00
Rico Tzschichholz 10efda3b37 stream_bluray: switch to new libbluray API
Switch to new libbluray API with three parameters to
bd_get_title_info(). libbluray versions using the old API are no
longer supported.
2011-07-10 11:30:06 +03:00
Uoti Urpala 5846a5e8e0 options: fix -use-filename-title crash after recent 39e373aa
After commit 39e373aa8d ("options: allocate dynamic options with
talloc") dynamically allocated options must be allocated with talloc.
Code implementing -use-filename-title still set opts->vo_wintitle to a
value from strdup(), triggering an abort when the option was freed.
Fix.
2011-07-10 03:20:47 +03:00
Uoti Urpala 13151d7b69 vd_ffmpeg: make "-lavdopts lowres" handling more robust
Remove the copy of the "lowres" field that vd_ffmpeg kept in its
private struct and use the value from AVCodecContext directly instead.
The copy gave no benefit and it could be set to the wrong value if
someone used "-lavdopts o=lowres=X" (which would change the real value
but not the copy).
2011-07-09 14:14:38 +03:00
Uoti Urpala 1a7ef3b39c vd_ffmpeg: fix "-lavdopts skipframe" support
Support for -lavdopts skipframe had been broken since commit bc767c2a9
as framedrop logic now set the same field and thus overwrote the value
set from the option. Change that code to set it to the original value
instead of 0 when not dropping frames.
2011-07-09 13:50:16 +03:00
Clément Bœsch 2174cbfa2f cleanup: silence most of the clang warnings 2011-07-09 04:23:24 +03:00
Uoti Urpala 6794bca0e9 build: add a hack to prevent name collision with libtalloc
libsmbclient uses dynamically linked libtalloc.so which has symbols
with names matching those in the internal talloc.c. This name
collision caused a crash under stream_smb when trying to play
anything with smb://. Add a "#pragma GCC visibility" hack to talloc.h
to hide the internal symbols from being visible to the outside
libtalloc.so. Hopefully this doesn't break any platform worse than
possibly causing a compiler warning about an unknown pragma (at least
GCC and clang recognize it).
2011-07-07 23:19:39 +03:00
Uoti Urpala 8a37558c5f vo_directx: include <libavutil/common.h> for FFMIN
070491f102 added an use of FFMIN to
vo_directx.c but failed to include a header for the macro. Fix.
2011-07-07 22:58:34 +03:00
Uoti Urpala c56dfab597 configure: clang: set custom warning flags for clang
Before there was no attempt to set warning flags sanely when compiling
with clang. Set some reasonable defaults that cut down noise and
enable various non-default warnings that are enabled with GCC too.
I'm not sure whether clang is supposed to support more of the options
now used with GCC - it accepts some of those options but they
apparently have no effect; I didn't find any real documentation about
the individual warnings.
2011-07-07 22:53:46 +03:00
Uoti Urpala 5a997b8195 build: Revert "codec-cfg.c: avoid including aviheader.h"
This reverts commit 1e544365bf.

I was careless when cherry-picking the reverted commit - the only
effect it had was add an unnecessary libavutil dependency to a HOST_CC
compiled file.
2011-07-07 07:38:24 +03:00
Uoti Urpala db6b74e807 configure: rename "--disable-ass" to "--disable-libass"
The name of the project is "libass". "ASS" alone refers only to the
subtitle format, not the library, and --disable-ass did not completely
disable handling of subtitles in this format - only advanced rendering
with libass. Thus --disable-libass is a better name.
2011-07-06 20:41:48 +03:00
Anton Khirnov 00ec1a40f1 demux/mp_taglists: Move Bink audio tags to override list
Some versions of lavf abuse codec_tag for passing Bink version
information to the decoder, which broke detection based on codec tag
(though this has already stopped again in latest Libav). Move bink
audio codec IDs from mp_wav_tags to mp_codecid_override_tags so that
codec tags are completely ignored for them.
2011-07-06 20:27:45 +03:00
Uoti Urpala 2670ceeb81 Merge branch 'mplayer1_changes' 2011-07-06 13:07:37 +03:00
reimar a7b99687a7 stream.c: make reconnect checks more robust
Improve checks for when to try reconnecting to be more thorough and
readable.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33809 b3059339-0415-0410-9bf9-f77b7e298cf2

Reindent, add empty lines.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33810 b3059339-0415-0410-9bf9-f77b7e298cf2
2011-07-06 13:01:08 +03:00
reimar 2e2f77e346 stream.c: Pass streaming_ctrl eof on to struct stream field
Fixes a possible endless loop with HTTP files where seeking to
the very end returns the full file again instead of e.g. an error.
Apache/2.2.4 seems to show this behaviour.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33808 b3059339-0415-0410-9bf9-f77b7e298cf2
2011-07-06 13:01:08 +03:00
reimar 93e206e062 stream/network: don't clobber buffer byte counts on error
Ensure we do not add strange values to amount of buffered bytes
read on error.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33807 b3059339-0415-0410-9bf9-f77b7e298cf2
2011-07-06 13:01:08 +03:00
reimar c89f72b561 stream/network: distinguish EOF/error in streaming control API
Signal EOF vs. error also via streaming control API (not yet evaluated).

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33806 b3059339-0415-0410-9bf9-f77b7e298cf2
2011-07-06 13:01:08 +03:00
reimar 61fe3dcd6c cache: don't modify argument when stream control fails
When handling STREAM_CTRL calls for the cached stream, do not modify
the return parameter if the underlying stream returns an error for the
operation.

Avoids issues with some places that don't check the return
value of stream_control.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33802 b3059339-0415-0410-9bf9-f77b7e298cf2

Remove condition that is now always true.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33803 b3059339-0415-0410-9bf9-f77b7e298cf2
2011-07-06 13:01:08 +03:00
reimar 06d830687d cleanup: silence some clang warnings
Cosmetics: vo_mpegpes.c: Fix strange space placement

Avoids clang warning that =- might have been intended as -=.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33797 b3059339-0415-0410-9bf9-f77b7e298cf2

vo_jpeg: Use "const char *" type for paths.
Fixes a clang warning due to sign mismatch when calling open().

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33799 b3059339-0415-0410-9bf9-f77b7e298cf2

mga_template.c: Remove pointless and in addition incorrect cast.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33800 b3059339-0415-0410-9bf9-f77b7e298cf2
2011-07-06 13:01:08 +03:00
reimar 684e54587e demux_rtp.cpp: Add a hack to receive audio while probing video FPS
Otherwise newer live555 versions would just hang.
Fixes http://bugzilla.mplayerhq.hu/show_bug.cgi?id=1874

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33793 b3059339-0415-0410-9bf9-f77b7e298cf2
2011-07-06 13:01:08 +03:00
ptt ae31369a50 manpage: improve vo_gl "stereo" suboption description
Correct suboption stereo descriptions, and reformat to be compliant
with other sections.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33788 b3059339-0415-0410-9bf9-f77b7e298cf2
2011-07-06 13:01:08 +03:00