A timeline starting in the middle of a source file resulted in initial
playback state not being set up properly. Fix this by forcing an
absolute seek to initialize timeline state before playback starts.
The video updating functions no longer need to separately track
whether a frame is available for flipping. That information is
now available in video_out->frame_loaded, and all the separate
tracking did was present opportunities for things to go out of sync.
Change the vo_control(vo, VOCTRL_RESET, NULL) call done when the vf_vo
filter is uninited to vo_seek_reset(vo). The latter also sets
vo->frame_loaded to false.
Remove the vo->config_ok check from vo_seek_reset(). The reset call
should be doable even if config failed.
Two arrays were allocated one element too small, causing writes beyond
the allocated area. The bug was triggered when playing a Matroska file
with ordered chapters where each chapter came from a different source
and none of the sources was the original file.
Noticed by Daniel Dawson <ddawson@icehouse.net>
The list of OpenGL extension function names to try for setting the
swapinterval value contained "glXSwapIntervalEXT". Such a function
exists in the extension GL_EXT_swap_control but takes different
arguments than vo_gl expects, so trying to use it from the current
code would lead to unpredictable behavior. Remove it from the list of
functions to use.
Misplaced #endif broke compilation with old libvdpau versions that
lack VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 #define.
Also add missing space to the text in related mp_msg() call.
Only 1/3 of the samples in the buffer passed to reorder_channel_nch()
were being reordered. For 8-, 16-, and 32-bit audio, the buffers could
be treated as int8_t, int16_t, and int32_t respectively. 24-bit audio
was being processed as int8_t, requiring iteration over n_samples*3, not
n_samples.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29971 b3059339-0415-0410-9bf9-f77b7e298cf2
This also introduces a dependency of libswscale on libavutil.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29968 b3059339-0415-0410-9bf9-f77b7e298cf2
into account any change in the number of DVD subtitles available.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29964 b3059339-0415-0410-9bf9-f77b7e298cf2
Update the version.sh script for git so it'll generate version numbers
more useful than "UNKNOWN". At the moment it only generates the short
SHA1 name, but adding a tag as a starting point should allow more
useful output. Rather than update the Makefile logic that tried to
guess whether the svn revision had changed since the last version.h
update, just run the version.sh script from configure so the version
is updated at least at that time.
Check that frames added by filters reach the screen and are not just
buffered by the VO, and give filters a chance to output added frames
if previous frame at EOF was buffered by VO. It's unlikely that anyone
ever noticed practical problems caused by these issues.
At least show the extra frames even if correct-pts mode is disabled.
They cannot be timed properly though; the most practical way to fix
that is to just move to correct-pts mode instead.
stream_ffmpeg used libavformat's url_read_complete() to read data.
However that function returns failure if it did not manage to read the
_full_ amount of data asked for, while the behavior we want is to
return any positive amount of data there was before end of file. This
caused attempts to read the last bytes in a file to fail. Fix by using
url_read() instead of url_read_complete(); even if some reads before
EOF return less than the full amount that should not be a problem.
name clashes, in particular with Windows headers (which define STREAM_SEEK as an enum type).
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29962 b3059339-0415-0410-9bf9-f77b7e298cf2
OSD contents such as video position and non-libass subtitles were
updated just before feeding a video frame through filters. The updates
were done at that point mainly for the benefit of vf_expand OSD
rendering functionality, which draws the OSD contents when the frame
passes through that filter. However this gave the wrong results for
VO-drawn OSD if the filter chain or VO had any delay or timestamp
manipulation: the OSD contents should reflect the most recent contents
that were _output_ after any filtering, not the last frame that was
fed _into_ the filtering machinery. This issue became more important
after vo_vdpau started buffering frames by default.
Move the OSD updates to be done just before the OSD is drawn, using
the most accurate available information. This fixes the common case
but worsens vf_expand OSD behavior (adding extra latency). A special
case could be added to fall back to the previous behavior when
vf_expand OSD is being used; however I don't consider that a high
priority at the moment especially when other problems with vf_expand
OSD would still remain.
This has little effect on libass-rendered subtitles either way,
because both vf_ass and VO libass rendering use timestamps from the
filter chain and do not rely on separate position updates.
The scaletempo filter has a special-case check to return the samples
unchanged if the current scaling factor is 1. In this case code
setting af->delay wasn't run. If the scale had had a different value
and then been changed to 1 as a result of a playback speed change then
the delay field could have a nonzero value left, resulting in A/V sync
errors. Fix by setting the delay field to 0 in the scale == 1 special
case code.
Has little use except for experimenting - on Windows 9x it could be used to
render on monitors that were not managed by Windows, but that feature was
removed in newer Windows versions.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29946 b3059339-0415-0410-9bf9-f77b7e298cf2
the args argument to open will always be NULL and vf->priv will always be
!= NULL.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29945 b3059339-0415-0410-9bf9-f77b7e298cf2
to actually use GLX/WGL visuals with more than 8 bits per component if available).
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29944 b3059339-0415-0410-9bf9-f77b7e298cf2
Add a mode where libavcodec's reordered_opaque feature is used to
associate container packet timestamps with decoded frames. This should
improve behavior at least for MPEG files with interlaced h264; the
previous code does not cope well with the libavformat demuxer
producing two field packets with separate timestamps but the
libavcodec h264 decoder only producing a single output frame for those
two packets (so half the timestamps have no associated output frame).
The current libavformat mpeg demuxer seems to finally work with
interlaced h264 files and produce valid timestamps which are useful
with a mode like this.
By default MPlayer now selects between this new mode and the old one
automatically based on the number of timestamp problems they cause; by
default the new mode is used if both seem to work. The new option
-pts-association-mode can be used to force a particular mode. If
correct-pts mode is disabled this has no effect on timing.
Also remove the "EXPERIMENTAL" marker from the manpage description of
-correct-pts.
putting it on the stack, performance should not matter much here.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29938 b3059339-0415-0410-9bf9-f77b7e298cf2