This code to calculate codec delay should work with both with regular
FFmpeg and FFmeg-mt. This MPlayer version is not completely compatible
with current FFmpeg-mt though, since it has a build system change
which matches upstream FFmpeg but hasn't been integrated in FFmpeg-mt
yet (RUNTIME_CPUDETECT -> CONFIG_RUNTIME_CPUDETECT rename).
If there is no timestamp available for a video frame at all, use
timestamp from the previous frame (if any) instead of leaving it as
MP_NOPTS_VALUE. The main practical difference for playback is that
MP_NOPTS_VALUE caused timing to be reset, moving current video
position immediately to time of the next frame that had a timestamp
and thus likely advancing the video too fast. Now the next frame with
a timestamp will be shown at its proper position relative to the
previous timestamp.
demux_lavf interpreted absolute seeks as relative to the start of the
file, so if the file didn't start at timestamp 0 then seeking to
timestamp X went to a position MPlayer would display as start+X. Make
the seeks use the same timestamps as used in the original file. This
works better for most use cases as no part of MPlayer normally uses or
displays such "since start of file" timestamp values. There could be
some cases where the old semantics are useful, but I think they do not
justify making it the default behavior; a separate feature for that
could be added if it turns out to be needed.
stheader.h used 'demuxer_t *' without including demuxer.h, causing
compilation to fail if demuxer.h had not been included first. Use
'struct demuxer *' instead so the type does not need to be defined.
changed compared two lines to one, which would result in false positive updates.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29140 b3059339-0415-0410-9bf9-f77b7e298cf2
Remove the "num_chapters" and "mode" parameters that aren't needed by
any callers. Change "float *seek_pts" to "double *". Allocate the
string returned via "chapter_name" with talloc.
The first_tc code was used to force timestamps in the file to start
from 0. There should be no need to do this, and it would likely break
ordered chapter support for any files it affected (since the chapter
timecodes would refer to the original times, not the modified ones).
stop_timecode was used to implement end of playback at a specified
chapter. There is now common code which implements that and
demuxer-specific implementations are not needed.
Allow a seek to "time X or before" to match a keyframe at X plus 1 ms,
and correspondingly for seeks to "X or later". This allows seeks to a
known keyframe to succeed even if the time is not quite perfectly
exact.
The main motivation for this improvement was chapter seeking. Some
time ago things worked in practice because chapter times were slightly
below the exact target and demux_mkv seeked forward of the specified
position by default. Some commits ago demux_mkv started seeking
backward by default, which is generally a more desirable behavior, but
worked worse for the chapter times which happened to be slightly
behind a keyframe rather than ahead. After this commit chapter seeks
go to the desired keyframe again.
Many VOs kept track of pause status, but reset the value when their
config() function was called. However it can be called while playback
stays in pause mode. Modify the VOs to not change anything in
config(). Also send the VO either VOCTRL_PAUSE or VOCTRL_RESUME when
the playback of a new file is starting to make sure they have the
right status.
Lack of -fixed-vo causes the output window to be recreated not only
when changing files but also when switching the video stream, and that
happens when moving from one ordered chapter source to another. Having
the window disappear and reappear (likely at another location if it
was ever moved) is just too annoying.
Add basic support for Matroska ordered chapters. The switching between
segments is implemented as a general edit timeline that could also be
used for other purposes.
Some things still need improvement. In particular the current code
does not try to do any proper mapping between audio/video/subtitle
streams of different files and there should be options for better
control of how MPlayer searches other files for the required content.