| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
Commit fc39d48465 ("demux_mkv: store streams sequentially in
demuxer->[avs]_streams") had a copy-paste error causing it to look up
a video ID where it should have been an audio one. The most likely
visible symptom was a segfault when seeking while playing a
high-numbered audio track. Looks like I was careless with that
original commit, second bug in the same one...
|
| |
|
|
|
|
| |
Accept files with doctype "webm" in addition to "matroska".
|
|
|
|
|
|
|
| |
Change 'struct vf_instance' pointer arguments to more standard style
as in the subject. Also some other minor formatting fixes.
Patch by Diego Biurrun.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The code handling larger-than-minimum realvideo extradata sizes was
complete nonsense. It tried to add the additional data to the exported
track extradata by reading data from the input stream, which was
completely bogus as this code is called long after the original
Matroska track extradata information has been read. As a result the
data read had nothing to do with correct values, and the read call
messed up the stream position which likely broke further parsing of
the file and caused complete playback failure. Change the code to
instead copy any additional part at the end of input extradata to the
end of output extradata. I believe this is the intended semantics,
though I haven't verified it from any specs.
|
|
|
|
|
|
|
| |
Commit fc39d48465 ("demux_mkv: store streams sequentially in
demuxer->[avs]_streams") had a simple bug in automatic stream
selection causing a crash if no video or audio track was marked as
'default'. Fix.
|
|
|
|
|
|
| |
Allow audio stream switching to turn off sound or enable it, and also
include nosound as one of the values cycled through when stepping to
the next audio stream.
|
|
|
|
|
|
|
|
|
| |
demux_mkv used the Matroska TrackNumber as the array offset in demuxer
stream lists. The TrackNumber entry stored in the file can be an
arbitrary 64-bit value, and some of the code could try reading from
the arrays with that offset, causing a crash if the file had insane
values. Fill the arrays sequentially instead. Also add some checks to
make the handling of too high stream counts more robust.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Move "struct bstr" definition from ebml.h to its own header and add
some utility functions/macros. Change length field type from int to
size_t and adjust using code accordingly.
Partially based on a patch from Anton Khirnov.
|
|
|
|
| |
The "Chapter N from..." lines printed with -v used wrong N.
|
|
|
|
|
|
|
| |
Convert demux_mkv_decode() to allocate possible new storage with
talloc and fix a talloc/malloc conflict in demux_mkv_open_sub() that
broke decoding of files which had a subtitle track with compressed
private data.
|
|
|
|
|
| |
Remove the help/ subdirectory, configure code to create toplevel
help_mp.h, and all the '#include "help_mp.h"' lines from .c files.
|
|\ |
|
| |
| |
| |
| | |
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30615 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| |
| |
| |
| | |
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30127 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| |
| |
| |
| |
| |
| |
| | |
by marking it noinline.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29992 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| |
| |
| |
| |
| |
| | |
The demuxer still printed a message about "unknown/unsupported
compression algorithm (3)" even though that is now supported and in
fact played fine.
|
| |
| |
| |
| |
| |
| |
| | |
Add support for compression algorithm 3 (header stripping). Rewrite
some of the code related to handling manyfold compression, it was just
completely broken (I don't have samples to test whether it actually
works now).
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
The decompression step wasn't run at all for subtitle types other than
vobsub. Fix that. Remove a "!mkv_d->v_skip_to_keyframe" test from the
subtitle handling - for properly timed subtitles unnecessary packets
do little harm, and the subtitles could stay visible.
|
| |
| |
| |
| |
| |
| | |
Allow decoding a 0-sized buffer with zlib algorithm to produce 0-sized
output. Fixes spurious errors reported with subtitle tracks marked to
use compression for track private data without having any such data.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
There was no remaining reason to use this type. The variables were
assigned values with plain double precision anyway.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Change the demuxer_add_attachment() and demuxer_add_chapter()
functions to take a length argument for various name strings, so those
strings do not need to be 0-terminated. This will make it easier to
directly pass demuxed data without first making a copy just to add
0-termination. Also allocate the struct demuxer data structures for
attachments and chapters with talloc.
|
| |
| |
| |
| |
| |
| |
| |
| | |
The main demuxing code signaled EOF and stopped playback if it hit a
top-level element other than Cluster. There are files with other
elements between Cluster ones, at least repeated copies of Track
headers. Change the code to skip any non-Cluster element and only stop
searching on real file EOF.
|
| |
| |
| |
| |
| |
| |
| | |
Rewrite Cues parsing code using the new EBML parser. The new version
fixes a hang in some cases of incomplete files and supports a cuepoint
specifying multiple tracks per timecode (the previous code added an
index entry for the track mentioned last only).
|
| |
| |
| |
| |
| |
| |
| |
| | |
Restructure the code reading toplevel header elements and rewrite the
SeekHead parsing code using the new EBML parser. Now every type of
header element is read anywhere in the file if there's a SeekHead
entry pointing to it. The new SeekHead parsing code has more
diagnostic output in case of errors.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Add a new EBML parser implementation that should allow significant
improvements to the Matroska demuxer. The new parsing code is not
actually used yet by the demuxer. The only changes to existing code in
this commit are to generate the MATROSKA_ID_* / EBML_ID_* macro
definitions from the new implementation and to rename some of them
(the new implementation uses names matching the official Matroska spec).
The main parser implementation is added in ebml.c. There are two new
generated files, ebml_defs.c and ebml_types.h, that contain
definitions of EBML elements. Those are generated by the new script
TOOLS/matroska.py. There's a new Makefile target "generated_ebml" that
run the script to refresh the content of the generated files.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When using generated index (-idx / -forceidx) the Matroska seeking
code first guessed a file position using bitrate-based heuristics,
then located the cluster nearest to that file position. Change it to
store cluster timestamps in addition to file positions and seek to the
cluster with the closest timestamp. This makes seeking with -idx a lot
more accurate.
This change also fixes a crash when trying to seek with generated
index before playing any data from the beginning of the file (could be
triggered by -idx together with ordered chapters or -ss for example).
I removed the code handling MATROSKA_ID_CUES in the middle of parsing
clusters. Such cue entries were not consistently handled if
encountered during playback instead of index creation and the seek
code was also buggy when they were encountered and parsed; i didn't
consider it worth the effort to fix it.
|
| |
| |
| |
| |
| | |
Remove leftover code that no longer did anything useful after earlier
changes.
|
| |
| |
| |
| |
| | |
Don't use the index included in the file if the -forceidx option was
specified.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
Add code to intelligently choose an appropriate Matroska edition when
there are several. Will choose, in descending order of preference: the
edition chosen by the user through the option "-edition <edition id>"
if it exists, the first edition with EditionFlagDefault set to 1 if
there is one, or the first edition.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Detect use of ChapterSegmentEditionUID element in a Matroska chapter
definition, indicating inclusion of an external virtual timeline,
which is not yet supported. Leave the chapter is the chapter list but
set segment_uid to zero. This way timeline parsing will skip the
chapter and avoid nonsensical output but will still print information
about missing content.
|
| |
| |
| |
| |
| | |
Use rounding instead of truncation in another case of double division
used with integer variables.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The Matroska demuxer didn't place FLAC codec extradata in the normal
extradata field but instead constructed a fake data packet and inserted
that at the start of the demuxer stream. Current FFmpeg FLAC decoder
can read the data from the proper extradata field too, so use that
mechanism instead.
This fixes a problem with files that use ordered chapters to load
external segments from other files that have FLAC audio. In that case
there can be a seek before the audio decoder is first initialized, and
the seek will flush all stream packets so the decoder would never see
the inserted extra packet. That particular issue could be fixed by
initializing the decoder before any seeks instead (and there could
still be other similar problem cases where doing that would be more
robust), but this change is still generally right. I think the
previous code would also cause problems in case there are multiple
audio streams; there's only a single demuxer stream used for data
packets, meaning that a packet inserted for the sake of a secondary
audio stream could be read by the codec of the default stream
(possibly not FLAC at all) and the packet would not be available when
switching to the secondary audio stream later.
|
|\|
| |
| |
| |
| |
| |
| |
| |
| | |
As part of merging subtitle-in-terminal changes make
update_subtitles() only clear existing subtitles if called with the
reset argument, and not try to set new ones. Later calls should set
the needed new subtitles, and this change avoids some problems with
trying to set subtitles when mp_property_sub() in command.c gets
called from initialization code before full initialization.
|
| |
| |
| |
| | |
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29740 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| |
| |
| |
| | |
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29739 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| |
| |
| |
| | |
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29738 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| |
| |
| |
| | |
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29737 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| |
| |
| |
| | |
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29736 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| |
| |
| |
| | |
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29735 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| |
| |
| |
| | |
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29734 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| |
| |
| |
| |
| |
| |
| |
| | |
violation (thus making gcc 4.4.x compile the code correctly) and allows to get
rid of some casts at the expense of making the code less clear.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29733 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| |
| |
| |
| |
| |
| |
| |
| | |
When the attachment-reading code was changed to use
demuxer_add_attachment it should have been changed to free its
internally-allocated objects too, since demuxer_add_attachment creates
copies of everything and leaves ownership of original objects to
caller.
|
|\| |
|
| |
| |
| |
| |
| |
| | |
with gcc-4.4.1
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29532 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| |
| |
| |
| |
| |
| |
| | |
Patch by Jason Tackaberry, tack urandom ca
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29513 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| |
| |
| |
| | |
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29305 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| |