Add code to enforce matching pts with video when (re)starting the
audio stream, by either cutting away the first samples or inserting
silence at the beginning. New option -noinitial-audio-sync can be used
to disable this and return to old behavior.
demuxer_get_current_chapter() accessed sh_video/sh_audio pts fields to
determine playback position. demux layer shouldn't access those and
the values used weren't quite correct anyway. Give the playback
position as a parameter to the demux layer function instead. Also
change the top-level get_current_chapter() to use get_current_time()
in the timeline case where it didn't refer to demux layer.
If the option is enabled and all audio has been buffered to the AO,
then the player will move to the next file without waiting for the
buffered audio to drain, while leaving the AO initialized. If the
playback of the next file starts quickly enough (before the AO buffer
empties) then it should continue writing audio to the same AO with no
gap in between.
At least with PCM it's possible to get an audio stream that doesn't
end at a multiple of whole sample per channel. At least ao_alsa
refuses to accept that part of input, and so EOF detection in
fill_audio_out_buffers didn't trigger until the 0.04 second sanity
check (as there "was still audio not sent to AO left"). Change the
logic to detect EOF if there's less than one sample per channel of
unsent data left.
When file format detection failed the output only said
"Exiting... (End of file)" after "Playing <file>." (or possibly error
messages triggered by format-specific check functions in between). Add
an explicit "Failed to recognize file format." error message.
When -alang / -slang was specified the numerically first matching
track (if any) was always chosen. This meant that specifying "-alang
eng" could change the track choice even if all tracks were in English,
because now the default flag of tracks was ignored. Change the logic
to take the default flag into account as a secondary sorting key.
The code also accepted prefix matches, so that "-slang g" would match
track language "ger". I think that was not intentional. Change it to
require exact matches.
Various code referred to "mpctx->demuxer" where it should really have
referred to the one used for audio/subtitles in case those differ. Fix
by using "mpctx->d_audio->demuxer" etc instead. Disable the copying of
streams in demux_demuxers; that was a partial workaround for things
referring to the main demuxer (and it wasn't enough anyway).
This fixes, among other things, switching audio tracks within the file
specified by -audiofile.
Move functions to query current playback position, percentage position
and total video length from from the demuxer layer to top level. The
functions need access to playback state that doesn't belong on the
demuxing level. Make the new functions more capable and simplify some
code that can now rely on them. This fixes some errors in displayed in
OSD and slave mode information when using timeline (ordered chapters).
Remove cache_fill_status #define.
The #define is only set if CONFIG_STREAM_CACHE is not defined,
but in this case the variable is not used.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32131 b3059339-0415-0410-9bf9-f77b7e298cf2
While convenient, it is too risky.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32025 b3059339-0415-0410-9bf9-f77b7e298cf2
100l, we need to search for SetDllDirectoryA instead of SetDllDirectory
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32026 b3059339-0415-0410-9bf9-f77b7e298cf2
Add support for parameter changes (e.g. channel count) during playback.
This makes decoding AC3 files that switch between 2 and 6 channels
work reasonably well even with -channels 6 and ffac3 decoder.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31737 b3059339-0415-0410-9bf9-f77b7e298cf2
Fix typo in error message: ACC -> AAC
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32473 b3059339-0415-0410-9bf9-f77b7e298cf2
Avoid printing AAC with SBR warning on every decode call, instead print
it only after every decoder reconfiguration.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32476 b3059339-0415-0410-9bf9-f77b7e298cf2
Useful in combination with -fixed-vo and a vo that can do rescaling
during "pause" like gl.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31736 b3059339-0415-0410-9bf9-f77b7e298cf2
Change numbering so that demuxers can "asynchronously" add subtitles
during playback.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31678 b3059339-0415-0410-9bf9-f77b7e298cf2
Fix calculation of global_sub_size.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31711 b3059339-0415-0410-9bf9-f77b7e298cf2
Update global_sub_pos if we auto-selected a subtitle.
This avoid strange behaviour with subtitle selection in that
case, because the subtitle selection code thinks no subtitle
was displayed while we actually did display one.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31863 b3059339-0415-0410-9bf9-f77b7e298cf2
Move function to avoid a forward declaration.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31864 b3059339-0415-0410-9bf9-f77b7e298cf2
Fix subtitle selection: make selecting -sid 0 work again by replacing the
M_PROPERTY_STEP_UP hack by M_PROPERTY_SET and set the global sub pos also
when we do not yet have a subtitle stream but do know the number of subs
from out-of-band as e.g. for DVD.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31882 b3059339-0415-0410-9bf9-f77b7e298cf2
100l, re-add vobsub_get_id_by_index call accidentally removed in
r31678.
Patch by ubitux [ubitux gmail com].
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31985 b3059339-0415-0410-9bf9-f77b7e298cf2
This solution works just as well, but avoids a separate template file
that needs to be #included from multiple places. The end result is
simpler since common options and those of MPlayer and MEncoder are now
in only one file each.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31434 b3059339-0415-0410-9bf9-f77b7e298cf2
SIGPIPE is not really a crash, try to exit cleanly in case we receive one.
Particularly in the network code it would be better to ignore it, but
some window managers use it to indicate a close request.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31432 b3059339-0415-0410-9bf9-f77b7e298cf2
Move the code that prints main per-file -identify info to a separate
function.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31343 b3059339-0415-0410-9bf9-f77b7e298cf2
reasonable.
This avoids completely losing A-V sync e.g. when pts was not reordered correctly.
This was tested with http://samples.mplayerhq.hu/V-codecs/h264/PAFF/tv_cut.mkv
for this sample proper pts reordering is the correct solution, but more resilient
handling of the error case is still useful.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31311 b3059339-0415-0410-9bf9-f77b7e298cf2
Instead of only relying on the MIME type, use the file extension as a
fallback for deciding which attachments are fonts and should be fed to
libass.
This also refactors the check into a separate function in mpcommon.
This fixes subtitles duplication when seeking back in ass stream formated
with the "standard" format FFmpeg uses.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31293 b3059339-0415-0410-9bf9-f77b7e298cf2
insanely large value.
Avoids hang if a decoder handles the data/size == 0 condition incorrectly.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31205 b3059339-0415-0410-9bf9-f77b7e298cf2
Options selecting audio track to play (-nosound, -alang, -aid) only
affected the first source file. When you moved to a timeline part that
came from another file the default audio track for that file was used.
Add code to apply the options to all files.
The option field corresponding to -slang is now called "sub_lang"
instead of the old misleading global name "dvdsub_lang". The code
handling -slang in subreader.c looks rather broken; disable it instead
of converting it to use the option field.
Make the number of output surfaces allocated by vo_vdpau configurable
and allow queuing multiple future frames with the VDPAU frame timing
functionality. There are two known issues that could be polished in
the future for particularly long queue time cases. First, toplevel
code should possibly wait for the queued changes to finish displaying
in some situations like switching files. Second, the VO can block
waiting for a surface to become available, and in the worst case this
wait can be almost as long as the maximum queuing time (potentially
causing audio underruns). However those issues are not high priority.
Due to inexact seeks, chapter seek commands may result in a playback
position that's inside the previous chapter. This causes problems when
the user does repeated next-chapter/previous-chapter seeks, because
the code will use the wrong base for calculating 'next' or
'previous'. Improve the behavior by adding a heuristic that keeps
track of what chapter the user last wanted to seek to and adjusts the
"current chapter" value based on that.
The code processing seek commands only sets/alters variables
specifying the current seek target. Before all queued commands were
processed first, and any needed seeks were executed after that. This
was somewhat unreliable, as commands queued later were not guaranteed
to see all the effects of earlier seek commands if they happened to be
processed in the same batch. Change the behavior so that processing
commands is interrupted and the real seek executed if the next command
is anything other than a basic seek. This guarantees that other
commands see a consistent state, while still allowing the combining of
consecutive seeks (which is useful for example when the user keeps the
seek-forward key pressed down, and key repeat is faster than seeks can
be executed).
Before "-chapter 1" did nothing even if the first chapter didn't start
at the beginning of file. Fix it.
Before all chapter property commands (including chapter seek keys)
failed if the current playback position was before the start of the
first chapter. Now they'll work. Relative chapter seeks will go to the
first chapter (even if that's in the wrong direction for backward
seeks).
-chapter can optionally take a range with a start and an end. Add a
new option type which supports such values and use that instead of a
custom per-option function.
This commit also fixes a build configuration bug: before the
availability of the -chapter option depended on DVD functionality
being enabled in the binary, even though the option works with other
sources too.
Move code resetting various things after a seek into a separate
function and use that for chapter seeks too. In most cases this won't
change behavior because chapter seeks were already falling back to the
same time-based seek code.
Move code for resetting decoders after seeks, chapter seeks and angle
changes out of demuxer.c. This functionality belongs on a higher
level; the demux layer can't always know what kind of reinitialization
is required.
This keeps the naming of all path-related functions consistent.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30944 b3059339-0415-0410-9bf9-f77b7e298cf2
These files now contain different functions related to path handling.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30943 b3059339-0415-0410-9bf9-f77b7e298cf2
This fixes compilation with the Win32 loader disabled but other binary
codec loaders enabled.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30942 b3059339-0415-0410-9bf9-f77b7e298cf2
1. Include loader/drv.h for SetCodecPath() instead of a declaration of it.
2. Move codec_path from get_path.h to mpcommon.h and mpcommon.c.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30914 b3059339-0415-0410-9bf9-f77b7e298cf2
It allows to search binary codecs in non-standard directories.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30897 b3059339-0415-0410-9bf9-f77b7e298cf2
Previously the argument of the "-sub" option was always interpreted as
a local filename when trying to read it as a libass file. Use the
stream layer to read it instead, so that protocols like 'http://' are
also supported like they are for the main video/audio file.
Based on patch by Yuriy Kaminskiy <yumkam@mail.ru>
Tweak some code parts that used to rely on string literals from
translation macros being concatenated with other adjacent string
literals. Break up the resulting string into independently translated
parts, so that the existing translations for those parts can still be
used.
For some reason commit e306174952, which
replaced translation macro names with the corresponding English
strings, also collapsed multiple consecutive space characters into
one. Change most of these back. In a couple of cases the amount of
whitespace is important for alignment, and for the rest it at least
keeps the strings closer to the existing translations.
Translate help_text and also make all CONF_TYPE_PRINT option output
translatable (though no translations exist yet for anything other than
the main help text).
import_playtree_playlist_into_gui; declare them in interface.h instead.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30575 b3059339-0415-0410-9bf9-f77b7e298cf2
The _t namespace is reserved for POSIX; the typedef is pointless obfuscation.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30560 b3059339-0415-0410-9bf9-f77b7e298cf2
when command.c calls this function without having to duplicate the check.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30548 b3059339-0415-0410-9bf9-f77b7e298cf2
Add -vo vdpau suboptions "queuetime_windowed" and "queuetime_fs" to
specify the maximum number of milliseconds how far into the future a
frame flip can be queued using the VDPAU presentation queue
functionality. The intended main use of these options is to allow
disabling use of the queuing feature on systems where using it causes
choppiness in other graphics behavior (this is an NVIDIA driver issue;
the video itself isn't affected).
from some network location.
Patch by Yuriy Kaminskiy [yumkam mail ru]
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30515 b3059339-0415-0410-9bf9-f77b7e298cf2
libass doesn't support fontconfig < 2.4.2 so fallbacks for these
ancient versions aren't needed anymore. Also update the man page
(English, German) to reflect the change. Additionally note that
-embeddedfonts controls the use of ASS script embedded fonts too.
-embeddedfonts is now always enabled by default. Fonts are never
extracted into a directory anymore but passed to libass via memory.
scattered all over the place with half of it forgotten in some places.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30420 b3059339-0415-0410-9bf9-f77b7e298cf2
while still handling it when the user aborts the cache fill.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30402 b3059339-0415-0410-9bf9-f77b7e298cf2
When using libass with a VO that has direct EOSD support the vf_ass
video filter is unnecessary and is not added automatically, but the
code that adds the filter when it is needed produced misleading output
messages in this case. The following two messages were printed at
MSGL_ERR level, making it look like an error condition:
Couldn't open video filter 'ass'.
ASS: cannot add video filter
Add a version of vf_open_plugin() called vf_open_plugin_noerr() that
does not itself print an error message if opening a vf fails and that
returns the exact status code returned by the vf open() function. Make
vf_ass return a different status code depending on whether there was
an actual error or if it determined a filter would be redundant. Use
the _noerr function in the code adding the filter to avoid the first
message and check the status code to avoid the second.
When loading external subtitle files, the code always tried parsing
the file with subreader.c sub_read_file() first, even if libass was
then used to parse and render the file (the results of the first
parsing would be ignored in that case). This could cause problems like
unnecessary error messages. Change the code to try libass parsing
first if enabled, and skip subreader.c parsing if that succeeds.
Add function set_osd_tmsg() which is a version of set_osd_msg that
translates its format argument. Pass OSD message strings in the
command.c property_osd_display table through mp_gtext before they're
used.