Commit graph

256 commits

Author SHA1 Message Date
Philip Jägenstedt
d146971128 matroskademux: Ignore unexpected CodecState
Because GstMatroskaTrackContext *stream is set up in the first
SimpleBlock or Block, a rogue CodecState otherwise causes a segfault on
derefencing the NULL pointer. Test case:
bug_s5506167_r0.001____gst_matroska_demux_parse_blockgroup_or_simpleblock.webm
2010-05-19 20:33:35 +02:00
Philip Jägenstedt
9dc7889eea matroskademux: Add video/webm sink caps 2010-05-19 20:32:13 +02:00
Philip Jägenstedt
1daeb26df1 matroskademux: Support "webm" DocType 2010-05-19 20:31:36 +02:00
Sebastian Dröge
e5e90f6035 matroskamux: Add support for On2 VP8
...matroskademux automatically supports it through libgstriff.
2010-05-17 17:18:24 +02:00
Sebastian Dröge
1e1cf5df70 matroskademux: Set interlaced flag in the caps if the flag is set in the Matroska file 2010-05-01 14:15:49 +02:00
Tim-Philipp Müller
fa4b2938bc matroska: init variable to avoid compiler warning on OSX
Fixes (bogus) "'offset' may be used uninitialized in this function"
warning on build bot (also spotted by philn).
2010-05-01 11:15:04 +01:00
Mark Nauwelaerts
a6bb8338fd matroskademux: implement push mode seeking 2010-04-30 13:49:39 +02:00
Tim-Philipp Müller
a155deaabf matroskademux, qtdemux: minor code cleanup in avc_level_idc_to_string()
Do the same with slightly fewer LOC.
2010-04-12 15:10:11 +01:00
Mark Nauwelaerts
dc09ace2bd matroskademux: restrict resyncing to subtitle tracks
This should prevent skipping audio or video in not so well interleaved
cases.

Fixes #614460.
2010-04-07 12:40:13 +02:00
Arun Raghavan
95c6d558f0 matroska: Export h.264 profile and level in caps
This replicates the code in qtdemux to export the h.264 profile and
level in the stream caps.

https://bugzilla.gnome.org/show_bug.cgi?id=614651
2010-04-02 18:51:34 +02:00
Mark Nauwelaerts
b9f569bfd0 matroskademux: push correctly sized flac header buffers
Fixes #614353.
2010-03-30 16:51:36 +02:00
Mark Nauwelaerts
b1f3e4d0cf matroskademux: only seek when in proper state
... and data structures can be thread-safely accessed.

See #601617.
2010-03-26 11:45:47 +01:00
Mark Nauwelaerts
9157c262ba matroskademux: support (pull mode) negative seek rate 2010-03-26 11:45:41 +01:00
Mark Nauwelaerts
95e38e59a2 matroskademux: track clip duration in segment 2010-03-26 11:45:39 +01:00
Mark Nauwelaerts
6ccffcf5f1 matroskademux: prefer index of video track to perform seeking 2010-03-26 11:45:36 +01:00
Benjamin Otte
3f511ec361 Add -Wwrite-strings to the configure flags
... and fix all warnings
2010-03-21 14:17:47 +01:00
Benjamin Otte
3342b1679e Add -Wmissing-declarations -Wmissing-prototypes warning flags
And fix all the warnings.
2010-03-17 18:23:28 +01:00
Edward Hervey
869ff4263f matroskademux: Make sure we don't send invalid newsegments
Fixes #611501
2010-03-02 21:20:45 +01:00
Edward Hervey
be186bd089 matroskademux: Mark streams as being EOS at the right time.
This allows us to stop streaming only when all streams have gone past the
segment.stop and not before.

Fixes #611501
2010-03-02 21:20:31 +01:00
Sebastian Dröge
ad71d43f52 matroskademux: Advance sparse streams only as much as required to keep the gap smaller than 500ms
Changing it to the newest timestamp that was ever pushed will
increase the segment start in 500ms jumps, which could be just
after the next sparse stream buffer. E.g.

Video at 1.0s, sparse stream at 0.5s would jump the
sparse stream to 1.0s. Now a new sparse stream buffer could
appear that has a timestamp of 0.9s and this would be
dropped for no good reason because of bad luck.
2010-02-27 12:20:06 +01:00
Brian Cameron
a45b351ddf matroska: fix GST_ELEMENT_ERROR usage
Fixes #610053.
2010-02-16 01:40:19 +00:00
Tim-Philipp Müller
0233257612 matroska: fix printf format string 2010-02-15 10:33:02 +00:00
Mark Nauwelaerts
f0d6b841a2 matroskademux: improve stream synchronization
In particular, do not make it send newsegment updates that
sort-of contradict the indented playback segment (e.g. start time).
2010-02-02 16:54:05 +01:00
Mark Nauwelaerts
b527360f21 matroskademux: fix bridging (time) gaps in streams
As a side effect, avoid sending newsegment updates with start times
that go back and forth, which leads to bogus downstream running_time.

Also fixes seeking in bug #606744.
2010-02-02 16:53:56 +01:00
Mark Nauwelaerts
9bec2b1127 matroskademux: fix stream synchronization
.. by initializing streams starting at 0, as that is basically
where we 'seek to' at the start and assume streams to start elsewhere.
Also enables newsegment update events for subtitle streams.
2010-02-02 16:53:51 +01:00
Mark Nauwelaerts
891ca1f4d3 matroskademux: polish last buffer end time usage
That is, reset it upon seek, and note that (rarely) last pushed buffer
time might precede segment start.
2010-01-14 18:19:25 +01:00
Mark Nauwelaerts
59224d77f8 matroskademux: refactor eos sending when pausing loop
Also, prevent hanging if no pads yet on which to send eos by
posting a message instead.
2010-01-11 21:15:47 +01:00
Mark Nauwelaerts
ae515fead4 matroskademux: standardize seek handling
... which implies fixing some corner cases.
2010-01-11 21:15:46 +01:00
Edward Hervey
188725811f matroska: Fix unitialized variable.
Yes, it's stupid, but macosx compilers are even more stupid.
2009-12-18 12:46:06 +01:00
Mark Nauwelaerts
c9a0d2339e matroskademux: also consider BlockNumber indicated in index when seeking 2009-12-16 12:48:02 +01:00
Mark Nauwelaerts
900ff7247e matroskademux: support push based mode
Fixes #598610.
2009-12-16 12:46:40 +01:00
Tim-Philipp Müller
b66f914586 matroska: fix language code writing and extraction
Matroska uses three-letter ISO 639-2B codes, but GST_TAG_LANGUAGE is
supposed to contain two-letter ISO 639-1 codes, so use new language
code mapping functions in -base to convert between those two as
needed.

Fixes #505823.
2009-12-13 12:51:13 +00:00
Sebastian Dröge
cd888c0531 matroskademux: Clean up position/duration handling
Also use the last end time for closing the segment, not the
start time of the last buffer.
2009-12-09 20:42:44 +01:00
Sebastian Dröge
0766a54138 matroskademux: Close the segment on EOS if the real duration is known 2009-12-09 16:50:02 +01:00
Sebastian Dröge
5ca96043ff matroskademux: Update duration if current buffer is already after the old duration 2009-12-09 16:46:18 +01:00
Sebastian Dröge
c9b1ab53fe matroskademux: Drop buffers that are after segment stop
...and if this happened for all streams go EOS.
2009-12-09 16:43:41 +01:00
Sebastian Dröge
276a61ab2a matroskademux: Fix position tracking and sending of filler segments 2009-12-09 16:41:04 +01:00
Sebastian Dröge
3ddb75e3c5 matroskademux: Keep the segment stop position for update newsegment events 2009-12-08 17:34:15 +01:00
Tim-Philipp Müller
d0b25845ec matroskademux: only send pending tags with newsegment events
Send pending tags only from the streaming thread, just after we've sent
the newsegment event, not with e.g. flush-start. This not only does the
right thing, but also makes sure we're not trampling over variables set
up in the streaming thread from the seeking thread in case someone tries
to issue a seek just as the demuxer is parsing the headers.

Fixes #601617. Spotted by Ognyan Tonchev.
2009-12-04 11:13:31 +00:00
Thiago Santos
959a3f9c95 matroskademux: Fix late tags finding
Use the correct taglist variable when notifying of late tags.
2009-10-14 11:33:24 -03:00
René Stadler
c40cb18762 matroskademux: fix strstr() usage on possibly unterminated string 2009-10-08 23:31:07 +03:00
Sebastian Dröge
650292706d matroskademux: Change one GST_WARNING to a GST_DEBUG 2009-10-03 12:21:34 +02:00
Mark Nauwelaerts
02581dd2a5 matroskademux: use proper order for no-more-pads and newsegment and tag sending 2009-09-23 17:24:22 +02:00
Mark Nauwelaerts
702df566c3 matroskademux: sprinkle a few branch prediction macros 2009-09-23 17:24:22 +02:00
David Schleef
55d2754098 Remove Ronald Bultje from Authors field
Replaced with "GStreamer maintainers
<gstreamer-devel@lists.sourceforge.net>" or just removed,
depending on the number of other authors.
2009-09-05 20:53:10 -07:00
Sebastian Dröge
b35b752c41 matroskademux: Correctly handle NULL GstIndex 2009-09-04 07:10:03 +02:00
Edward Hervey
d29ba8d48f matroska: remove dead assignments 2009-08-10 09:58:33 +02:00
Thiago Santos
08862850a7 matroska: Adds support to muxing/demuxing WMA
Adds support for muxing wma audio family and fixes
demuxing of wma family in matroskademux. matroskademux
was broken because it missed codec_data.
2009-08-09 20:34:05 -03:00
Vincent Penquerc'h
19b7001bf9 matroska: add kate subtitle support to matroska muxer and demuxer
See #525743.
2009-08-08 12:54:48 +01:00
Sebastian Dröge
b7bf2f6820 matroskademux: Answer SEEKING queries in the original format 2009-07-21 07:52:00 +02:00
Sebastian Dröge
bb03d8ff18 matroskademux: Implement SEEKING query 2009-07-20 16:52:19 +02:00
Wim Taymans
8a4dc37544 matroske: fix compiler error
change gpointer to guint8 * for codec_state and codec_priv as some
functions operate on those types and it avoids breaking strict-aliasing
rules.
2009-06-23 14:32:43 +02:00
Wim Taymans
9600c54938 matroskademux: avoid leaking buffers
Don't leak buffers when resyncing to a keyframe.
Avoid leaking buffers when exiting the loop on error conditions.
Add some more debug info.

Fixes #585911
2009-06-23 12:42:33 +02:00
Tim-Philipp Müller
323517f527 matroska-demux: post container-format tags 2009-06-22 10:49:01 +01:00
Sebastian Dröge
fc9779bd86 matroskademux: Fix leaking of the Matroska TITLE element 2009-06-17 07:14:09 +02:00
Sebastian Dröge
afbe123e33 matroskademux: Populate a GstIndex that is set on matroskademux 2009-05-22 19:41:59 +02:00
Jan Schmidt
66149475bd matroskademux: Recognise PGS subpicture streams - the bluray format.
Recognise and apply appropriate caps to PGS (Presentation Graphic Stream)
subpicture streams.
2009-05-21 21:23:49 +01:00
Sebastian Dröge
a1fe742e80 matroskademux: Only search for the index entry once 2009-05-11 18:21:13 +02:00
Sebastian Dröge
4cb39bc723 matroskademux: Use the first index entry if it's after the seek position 2009-05-11 18:18:36 +02:00
Sebastian Dröge
e4909b37eb matroskademux: Improve/optimize seeking
First of all a keyframe seek should be done to the
keyframe right before the requested position and not
to the keyframe that is nearest to the requested position.

Use per track index arrays and use our new binary search function
from core to speed up the search.
2009-05-11 15:36:46 +02:00
David Schleef
f01adcbc0f matroska: fix printf format to agree with argument 2009-05-09 10:50:45 -07:00
Wim Taymans
bdbdb41e93 matroskademux: add some debugging 2009-05-07 17:10:43 +02:00
Wim Taymans
e4b59136fa matroskademux: parse xiph headers length correctly
See #580980
2009-05-07 17:10:43 +02:00
Edward Hervey
b28c6ca0fb matroskademux: Remove useless variable.
iret was never read outside of that loop, and is always being exited if
iret was != GST_FLOW_OK anyway.
2009-04-18 18:51:28 +02:00
Sebastian Dröge
108774781d Add initial support for muxing/demuxing Speex audio
Note: This is not in the Matroska spec yet
Fixes bug #578310.
2009-04-13 14:03:03 +02:00
Stefan Kost
5ac6b84475 matroska: don't alter passed data and especialy don't leak.
If we need different size, Make a copy, work with that and free it.
2009-03-31 17:06:50 +03:00
Stefan Kost
9b8f1cbaa2 matroska: don't leak read data in demuxer 2009-03-31 11:57:36 +03:00
Edward Hervey
1846e0af0f matroskademux: Remove gst_util_dump_mem() calls. 2009-02-27 11:04:08 +01:00
Sebastian Dröge
a7c2b13543 matroskademux: Unref the buffer and not the memory address of the buffer 2009-02-22 19:25:39 +01:00
Robin Stocker
7353cdc029 Read Matroska Title element for the TITLE tag
Not all Matroska files have a Tags element which contains
information about the title among other things. Most video
Matroska files only contain the Title element so we
should parse this too. Fixes bug #570435.
2009-02-04 09:20:28 +01:00
Jan Schmidt
367f9123de Fix Forte compiler warnings.
Don't do void pointer arithmetic. Don't have an unreachable statement.
2009-01-30 17:26:19 +00:00
Mark Nauwelaerts
7958cf82ab gst/matroska/: Some cleanups, refactoring and minor enhancements in caps handling.
Original commit message from CVS:
* gst/matroska/matroska-demux.c: (gst_matroska_demux_video_caps):
* gst/matroska/matroska-mux.c: (gst_matroska_mux_video_pad_setcaps):
Some cleanups, refactoring and minor enhancements in caps handling.
* gst/matroska/matroska-mux.c: (gst_matroska_mux_class_init),
(gst_matroska_mux_init), (gst_matroska_pad_reset),
(gst_matroska_pad_free), (gst_matroska_mux_reset),
(gst_matroska_mux_video_pad_setcaps),
(gst_matroska_mux_request_new_pad):
* tests/check/elements/matroskamux.c: (teardown_src_pad):
Only remove, release or reset what is appropriate upon state change.
2009-01-08 15:56:46 +00:00
Sebastian Dröge
c54c9e2bac Add documentation for matroskamux and matroskademux and update the inspection xml files.
Original commit message from CVS:
* docs/plugins/Makefile.am:
* docs/plugins/gst-plugins-good-plugins-docs.sgml:
* docs/plugins/gst-plugins-good-plugins-sections.txt:
* docs/plugins/gst-plugins-good-plugins.args:
* docs/plugins/gst-plugins-good-plugins.hierarchy:
* docs/plugins/gst-plugins-good-plugins.interfaces:
* docs/plugins/inspect/plugin-1394.xml:
* docs/plugins/inspect/plugin-aasink.xml:
* docs/plugins/inspect/plugin-alaw.xml:
* docs/plugins/inspect/plugin-alpha.xml:
* docs/plugins/inspect/plugin-alphacolor.xml:
* docs/plugins/inspect/plugin-annodex.xml:
* docs/plugins/inspect/plugin-apetag.xml:
* docs/plugins/inspect/plugin-audiofx.xml:
* docs/plugins/inspect/plugin-auparse.xml:
* docs/plugins/inspect/plugin-autodetect.xml:
* docs/plugins/inspect/plugin-avi.xml:
* docs/plugins/inspect/plugin-cacasink.xml:
* docs/plugins/inspect/plugin-cairo.xml:
* docs/plugins/inspect/plugin-cutter.xml:
* docs/plugins/inspect/plugin-debug.xml:
* docs/plugins/inspect/plugin-dv.xml:
* docs/plugins/inspect/plugin-efence.xml:
* docs/plugins/inspect/plugin-effectv.xml:
* docs/plugins/inspect/plugin-equalizer.xml:
* docs/plugins/inspect/plugin-esdsink.xml:
* docs/plugins/inspect/plugin-flac.xml:
* docs/plugins/inspect/plugin-flxdec.xml:
* docs/plugins/inspect/plugin-gamma.xml:
* docs/plugins/inspect/plugin-gconfelements.xml:
* docs/plugins/inspect/plugin-gdkpixbuf.xml:
* docs/plugins/inspect/plugin-goom.xml:
* docs/plugins/inspect/plugin-goom2k1.xml:
* docs/plugins/inspect/plugin-halelements.xml:
* docs/plugins/inspect/plugin-icydemux.xml:
* docs/plugins/inspect/plugin-id3demux.xml:
* docs/plugins/inspect/plugin-interleave.xml:
* docs/plugins/inspect/plugin-jpeg.xml:
* docs/plugins/inspect/plugin-level.xml:
* docs/plugins/inspect/plugin-matroska.xml:
* docs/plugins/inspect/plugin-monoscope.xml:
* docs/plugins/inspect/plugin-mulaw.xml:
* docs/plugins/inspect/plugin-multifile.xml:
* docs/plugins/inspect/plugin-multipart.xml:
* docs/plugins/inspect/plugin-navigationtest.xml:
* docs/plugins/inspect/plugin-ossaudio.xml:
* docs/plugins/inspect/plugin-png.xml:
* docs/plugins/inspect/plugin-pulseaudio.xml:
* docs/plugins/inspect/plugin-quicktime.xml:
* docs/plugins/inspect/plugin-replaygain.xml:
* docs/plugins/inspect/plugin-rtp.xml:
* docs/plugins/inspect/plugin-rtsp.xml:
* docs/plugins/inspect/plugin-shout2send.xml:
* docs/plugins/inspect/plugin-smpte.xml:
* docs/plugins/inspect/plugin-soup.xml:
* docs/plugins/inspect/plugin-spectrum.xml:
* docs/plugins/inspect/plugin-speex.xml:
* docs/plugins/inspect/plugin-taglib.xml:
* docs/plugins/inspect/plugin-udp.xml:
* docs/plugins/inspect/plugin-video4linux2.xml:
* docs/plugins/inspect/plugin-videobalance.xml:
* docs/plugins/inspect/plugin-videobox.xml:
* docs/plugins/inspect/plugin-videocrop.xml:
* docs/plugins/inspect/plugin-videoflip.xml:
* docs/plugins/inspect/plugin-videomixer.xml:
* docs/plugins/inspect/plugin-wavenc.xml:
* docs/plugins/inspect/plugin-wavpack.xml:
* docs/plugins/inspect/plugin-wavparse.xml:
* docs/plugins/inspect/plugin-ximagesrc.xml:
* gst/matroska/matroska-demux.c:
* gst/matroska/matroska-demux.h:
* gst/matroska/matroska-mux.c:
* gst/matroska/matroska-mux.h:
Add documentation for matroskamux and matroskademux and
update the inspection xml files.
2008-12-05 09:24:18 +00:00
Edward Hervey
481d98b710 gst/matroska/: Make mkvdemux aware of E-AC3.
Original commit message from CVS:
* gst/matroska/matroska-demux.c: (gst_matroska_demux_audio_caps):
* gst/matroska/matroska-ids.h:
Make mkvdemux aware of E-AC3.
2008-11-16 14:41:32 +00:00
Wim Taymans
99eb36eac0 gst/matroska/matroska-demux.c: Forward unknown events upstream.
Original commit message from CVS:
* gst/matroska/matroska-demux.c:
(gst_matroska_demux_handle_src_event):
Forward unknown events upstream.
2008-10-27 10:35:07 +00:00
Tim-Philipp Müller
5c4b6ce079 Make stuff compile with GST_DISABLE_GST_DEBUG.
Original commit message from CVS:
* ext/raw1394/gsthdv1394src.c: (gst_hdv1394src_create):
* gst/alpha/gstalpha.c: (gst_alpha_get_unit_size):
* gst/audiofx/audiocheblimit.c: (generate_coefficients):
* gst/avi/gstavidemux.c: (gst_avi_demux_src_convert):
* gst/matroska/ebml-read.c: (gst_ebml_read_element_id),
(gst_ebml_read_element_length):
* gst/matroska/matroska-demux.c:
(gst_matroska_demux_check_subtitle_buffer):
Make stuff compile with GST_DISABLE_GST_DEBUG.
2008-08-30 14:15:03 +00:00
Edward Hervey
dbea08db34 gst/matroska/: Add Real[Audio|Video] support to Matroska containers.
Original commit message from CVS:
* gst/matroska/matroska-demux.c: (gst_matroska_demux_send_event),
(gst_matroska_demux_video_caps), (gst_matroska_demux_audio_caps):
* gst/matroska/matroska-mux.c:
(gst_matroska_mux_video_pad_setcaps),
(gst_matroska_mux_audio_pad_setcaps), (gst_matroska_mux_finish):
Add Real[Audio|Video] support to Matroska containers.
It works fine for:
* decoding real audio/video streams contained in mkv
* 'transmuxing' real (.rm) files into .mkv files
It will not work though for encoding real[audio/video] streams that
don't contain the 'mdpr_data' extra data on the caps.
The reason why this will not work is because I never intended to
duplicate virtually all the 'mdpr' block creation into mkvmux.
Fixes #536067
2008-08-25 14:15:43 +00:00
Sebastian Dröge
42998c9438 gst/matroska/ebml-read.c: Change some GST_ELEMENT_ERRORs to GST_ERROR_OBJECT to make it possible to ignore errors and...
Original commit message from CVS:
* gst/matroska/ebml-read.c: (gst_ebml_read_element_id),
(gst_ebml_read_element_length), (gst_ebml_read_uint),
(gst_ebml_read_sint), (gst_ebml_read_float),
(gst_ebml_read_header):
Change some GST_ELEMENT_ERRORs to GST_ERROR_OBJECT to make it
possible to ignore errors and not post any ERROR messages on
the bus.
* gst/matroska/matroska-demux.c:
(gst_matroska_demux_parse_contents):
Ignore any errors and not just EOS when parsing the contents of
a SeekHead. Errors here are usually caused by truncated files
and playback of the file works fine. Fixes playback of the
audio_only_chapter_seekbroken.mka file from the MPlayer samples
archive.
2008-08-22 12:24:23 +00:00
Sebastian Dröge
698b432673 gst/matroska/matroska-demux.c: If the duration of a block is unknown only use the timestamp for the first lace and us...
Original commit message from CVS:
* gst/matroska/matroska-demux.c:
(gst_matroska_demux_parse_blockgroup_or_simpleblock):
If the duration of a block is unknown only use the timestamp for the
first lace and use GST_CLOCK_TIME_NONE as duration for the following
laces. Otherwise every lace has the same timestamp which leads to
various problems. Really fixes bug #548831.
2008-08-21 13:22:06 +00:00
Sebastian Dröge
51cc968198 gst/matroska/matroska-demux.c: Don't calculate the default duration of a frame from the audio sampling rate. This onl...
Original commit message from CVS:
* gst/matroska/matroska-demux.c: (gst_matroska_demux_add_stream):
Don't calculate the default duration of a frame from the audio sampling
rate. This only works for raw audio if every frame contains a single
sample and results in broken buffer durations for other formats
if no specified default duration is given or the blocks have no
duration. Fixes bug #548831.
2008-08-21 12:52:47 +00:00
Sebastian Dröge
812954d1e9 gst/matroska/matroska-demux.c: Allow zero sized blocks instead of returning GST_FLOW_OK. Such blocks are used for tex...
Original commit message from CVS:
* gst/matroska/matroska-demux.c:
(gst_matroska_demux_parse_blockgroup_or_simpleblock):
Allow zero sized blocks instead of returning GST_FLOW_OK. Such blocks
are used for text/plain subtitles as a gap-filler in some files.
2008-08-21 12:34:33 +00:00
Sebastian Dröge
ba69194f33 gst/matroska/matroska-demux.*: Close the current segment if we're doing a non-flushing seek and send the close-segmen...
Original commit message from CVS:
* gst/matroska/matroska-demux.c: (gst_matroska_demux_reset),
(gst_matroska_demux_element_send_event),
(gst_matroska_demux_handle_seek_event), (gst_matroska_demux_loop):
* gst/matroska/matroska-demux.h:
Close the current segment if we're doing a non-flushing seek and send
the close-segment and the new segment of the seek from the streaming
thread.
2008-08-08 16:20:26 +00:00
Sebastian Dröge
d0bb024e11 gst/matroska/matroska-demux.c: When receiving a SEEK event on a specific pad first search for a seek table entry for ...
Original commit message from CVS:
* gst/matroska/matroska-demux.c: (gst_matroskademux_do_index_seek),
(gst_matroska_demux_element_send_event),
(gst_matroska_demux_handle_seek_event),
(gst_matroska_demux_handle_src_event):
When receiving a SEEK event on a specific pad first search for a seek
table entry for the stream of the pad and then fall back to an entry
for a different stream.
2008-08-02 18:35:21 +00:00
Sebastian Dröge
c4912dac78 Decode the codec private data and following ContentEncoding if necessary.
Original commit message from CVS:
* configure.ac:
* gst/matroska/Makefile.am:
* gst/matroska/lzo.c: (get_byte), (get_len), (copy),
(copy_backptr), (lzo1x_decode), (main):
* gst/matroska/lzo.h:
* gst/matroska/matroska-demux.c:
(gst_matroska_demux_read_track_encoding),
(gst_matroska_decompress_data), (gst_matroska_decode_data),
(gst_matroska_decode_buffer),
(gst_matroska_decode_content_encodings),
(gst_matroska_demux_read_track_encodings),
(gst_matroska_demux_add_stream),
(gst_matroska_demux_parse_blockgroup_or_simpleblock):
* gst/matroska/matroska-ids.h:
Decode the codec private data and following ContentEncoding if
necessary.
Support bzip2, lzo and header stripped compression. For lzo use the
ffmpeg lzo implementation as liblzo is GPL licensed.
Fix zlib decompression.
2008-08-02 18:18:05 +00:00
Sebastian Dröge
d43e67fa70 gst/matroska/matroska-demux.*: Allow an infinite number of stream inside Matroska containers and use a GPtrArray for ...
Original commit message from CVS:
* gst/matroska/matroska-demux.c: (gst_matroska_demux_finalize),
(gst_matroska_demux_class_init), (gst_matroska_demux_init),
(gst_matroska_demux_combine_flows), (gst_matroska_demux_reset),
(gst_matroska_demux_stream_from_num),
(gst_matroska_demux_tracknumber_unique),
(gst_matroska_demux_add_stream), (gst_matroska_demux_send_event),
(gst_matroska_demux_handle_seek_event),
(gst_matroska_demux_sync_streams),
(gst_matroska_demux_parse_blockgroup_or_simpleblock),
(gst_matroska_demux_loop):
* gst/matroska/matroska-demux.h:
Allow an infinite number of stream inside Matroska containers and use
a GPtrArray for storing them instead of allowing "only" 127 streams.
2008-08-02 18:06:20 +00:00
Sebastian Dröge
4ed1d36b7d gst/matroska/: Fix indention everywhere. A broken indent version has added newlines after every single declaration so...
Original commit message from CVS:
* gst/matroska/ebml-read.c: (gst_ebml_read_class_init),
(gst_ebml_read_change_state), (gst_ebml_read_element_level_up),
(gst_ebml_read_peek_bytes), (gst_ebml_read_element_id),
(gst_ebml_read_element_length), (gst_ebml_peek_id),
(gst_ebml_read_get_length), (gst_ebml_read_skip),
(gst_ebml_read_buffer), (gst_ebml_read_bytes),
(gst_ebml_read_uint), (gst_ebml_read_sint), (_ext2dbl),
(gst_ebml_read_float), (gst_ebml_read_ascii), (gst_ebml_read_date),
(gst_ebml_read_master), (gst_ebml_read_binary),
(gst_ebml_read_header):
* gst/matroska/ebml-write.c: (gst_ebml_write_element_id),
(gst_ebml_write_element_size), (gst_ebml_write_uint),
(gst_ebml_write_sint), (gst_ebml_write_ascii),
(gst_ebml_write_master_start), (gst_ebml_write_master_finish),
(gst_ebml_replace_uint):
* gst/matroska/matroska-demux.c: (gst_matroska_demux_reset),
(gst_matroska_demux_read_track_encoding),
(gst_matroska_demux_read_track_encodings),
(gst_matroska_demux_add_stream), (gst_matroskademux_do_index_seek),
(gst_matroska_demux_send_event),
(gst_matroska_demux_element_send_event),
(gst_matroska_demux_handle_seek_event),
(gst_matroska_demux_handle_src_event),
(gst_matroska_demux_init_stream),
(gst_matroska_demux_parse_tracks),
(gst_matroska_demux_parse_index_cuetrack),
(gst_matroska_demux_parse_index_pointentry),
(gst_matroska_demux_parse_index), (gst_matroska_demux_parse_info),
(gst_matroska_demux_parse_metadata_id_simple_tag),
(gst_matroska_demux_parse_metadata_id_tag),
(gst_matroska_demux_parse_metadata),
(gst_matroska_demux_parse_attached_file),
(gst_matroska_demux_parse_attachments),
(gst_matroska_demux_parse_chapters), (gst_matroska_ebmlnum_uint),
(gst_matroska_ebmlnum_sint), (gst_matroska_demux_push_hdr_buf),
(gst_matroska_demux_push_flac_codec_priv_data),
(gst_matroska_demux_push_xiph_codec_priv_data),
(gst_matroska_demux_push_dvd_clut_change_event),
(gst_matroska_demux_add_mpeg_seq_header),
(gst_matroska_demux_add_wvpk_header),
(gst_matroska_demux_check_subtitle_buffer),
(gst_matroska_decode_buffer),
(gst_matroska_demux_parse_blockgroup_or_simpleblock),
(gst_matroska_demux_parse_cluster),
(gst_matroska_demux_parse_contents_seekentry),
(gst_matroska_demux_parse_contents),
(gst_matroska_demux_loop_stream_parse_id),
(gst_matroska_demux_loop_stream), (gst_matroska_demux_loop),
(gst_matroska_demux_video_caps), (gst_matroska_demux_audio_caps),
(gst_matroska_demux_subtitle_caps),
(gst_matroska_demux_change_state):
* gst/matroska/matroska-ids.c:
* gst/matroska/matroska-mux.c: (gst_matroska_mux_class_init),
(gst_matroska_mux_reset), (gst_matroska_mux_handle_sink_event),
(gst_matroska_mux_video_pad_setcaps),
(xiph3_streamheader_to_codecdata),
(vorbis_streamheader_to_codecdata),
(theora_streamheader_to_codecdata),
(gst_matroska_mux_audio_pad_setcaps),
(gst_matroska_mux_request_new_pad), (gst_matroska_mux_release_pad),
(gst_matroska_mux_track_header), (gst_matroska_mux_start),
(gst_matroska_mux_write_simple_tag), (gst_matroska_mux_finish),
(gst_matroska_mux_best_pad), (gst_matroska_mux_write_data),
(gst_matroska_mux_collected), (gst_matroska_mux_change_state):
Fix indention everywhere. A broken indent version has added newlines
after every single declaration some time ago.
2008-08-02 18:01:36 +00:00
Sebastian Dröge
9cb2a4f461 gst/matroska/matroska-demux.c: If no Tracks are found error out instead of trying it again until the end of time.
Original commit message from CVS:
* gst/matroska/matroska-demux.c:
(gst_matroska_demux_loop_stream_parse_id):
If no Tracks are found error out instead of trying it again until the
end of time.
2008-08-02 17:59:05 +00:00
Sebastian Dröge
f5fdbfd416 gst/matroska/matroska-demux.c: Fix demuxing of raw integer audio. The samples are unsigned only for 8 bit and signed ...
Original commit message from CVS:
* gst/matroska/matroska-demux.c: (gst_matroska_demux_audio_caps):
Fix demuxing of raw integer audio. The samples are unsigned only for 8
bit and signed otherwise, not the other way around.
2008-08-02 17:57:31 +00:00
Sebastian Dröge
33e0d064a5 gst/matroska/matroska-demux.c: Handle position and duration query in DEFAULT format if the pad's track has a default ...
Original commit message from CVS:
* gst/matroska/matroska-demux.c: (gst_matroska_demux_class_init),
(gst_matroska_demux_add_stream), (gst_matroska_demux_query),
(gst_matroska_demux_element_query),
(gst_matroska_demux_handle_src_query),
(gst_matroska_demux_handle_seek_event):
Handle position and duration query in DEFAULT format if the
pad's track has a default frame duration set.
Fix seeking now that the segment's duration doesn't contain the
(possibly wrong or inaccurate) duration of the Matroska file.
2008-07-02 09:51:16 +00:00
Sebastian Dröge
35bcb8d8b0 gst/matroska/matroska-demux.*: Don't set the segment duration to the duration from the Matroska header as this value ...
Original commit message from CVS:
* gst/matroska/matroska-demux.c: (gst_matroska_demux_reset),
(gst_matroska_demux_handle_src_query),
(gst_matroska_demux_parse_info),
(gst_matroska_demux_loop_stream_parse_id):
* gst/matroska/matroska-demux.h:
Don't set the segment duration to the duration from the Matroska
header as this value could be wrong and is just informational.
2008-07-02 08:57:04 +00:00
Sebastian Dröge
5b68f28c94 gst/matroska/matroska-demux.c: If no Tracks element is found until the first Cluster is found search it and error out...
Original commit message from CVS:
* gst/matroska/matroska-demux.c:
(gst_matroska_demux_loop_stream_parse_id):
If no Tracks element is found until the first Cluster is found
search it and error out if none is found in the complete file.
2008-07-02 08:47:00 +00:00
Sebastian Dröge
b7bd5d283b gst/matroska/matroska-demux.c: Resync non-subtitle tracks too if a too large gap compared to other tracks is detected.
Original commit message from CVS:
* gst/matroska/matroska-demux.c: (gst_matroska_demux_sync_streams):
Resync non-subtitle tracks too if a too large gap compared to other
tracks is detected.
2008-07-02 08:14:35 +00:00
Julien Moutte
75c5d2e4ef gst/matroska/matroska-demux.c: Fix buggy format strings in macros. (makes it build on OS X again...)
Original commit message from CVS:
2008-06-23  Julien Moutte  <julien@fluendo.com>

* gst/matroska/matroska-demux.c:
(gst_matroska_demux_read_track_encoding),
(gst_matroska_demux_parse_blockgroup_or_simpleblock): Fix buggy
format strings in macros. (makes it build on OS X again...)
2008-06-23 16:13:40 +00:00
Sebastian Dröge
96da520095 gst/matroska/: Fix demuxing of WavPack files. Muxing is still broken.
Original commit message from CVS:
* gst/matroska/matroska-demux.c:
(gst_matroska_demux_add_wvpk_header),
(gst_matroska_demux_audio_caps):
* gst/matroska/matroska-ids.h:
Fix demuxing of WavPack files. Muxing is still broken.
2008-06-19 10:48:57 +00:00
Sebastian Dröge
7afcb8068a gst/matroska/: Add a "vfunc" to the track context for postprocessing frames and convert the wavpack and subtitle post...
Original commit message from CVS:
* gst/matroska/matroska-demux.c: (gst_matroska_track_free),
(gst_matroska_demux_add_mpeg_seq_header),
(gst_matroska_demux_add_wvpk_header),
(gst_matroska_demux_check_subtitle_buffer),
(gst_matroska_demux_parse_blockgroup_or_simpleblock),
(gst_matroska_demux_video_caps), (gst_matroska_demux_audio_caps),
(gst_matroska_demux_subtitle_caps):
* gst/matroska/matroska-ids.h:
Add a "vfunc" to the track context for postprocessing frames and
convert the wavpack and subtitle postprocessing to this vfunc.
Copy buffer flags in those functions to the new buffers too.
Parse CodecState elements of Blocks.
Add a postprocessing function for MPEG video that adds the sequence
header from the codec private data or codec state to the frames if
it's not already there.
2008-06-19 09:12:55 +00:00
Sebastian Dröge
2d79914948 gst/matroska/matroska-demux.c: If a gap of more than 1/2 second is found in one stream send a
Original commit message from CVS:
* gst/matroska/matroska-demux.c:
(gst_matroska_demux_parse_blockgroup_or_simpleblock):
If a gap of more than 1/2 second is found in one stream send a
NEWSEGMENT event to not stall the pipeline if the gap is too large.
This also fixes Matroska files where the first buffer doesn't start
at timestamp 0. Fixes bug #429322.
The duration of a block is the default duration multiplied with the
number of laces. Every lace is one frame and the default duration
is the duration of one frame. This fixes playback of files that use
lacing for some tracks.
2008-06-19 08:22:16 +00:00
Sebastian Dröge
0865a6019e gst/matroska/matroska-demux.c: Update FIXME/TODOs and only ignore EOS at the central, important place instead of seve...
Original commit message from CVS:
* gst/matroska/matroska-demux.c:
(gst_matroska_demux_parse_contents_seekentry):
Update FIXME/TODOs and only ignore EOS at the central, important place
instead of several places.
2008-06-18 20:09:28 +00:00
Sebastian Dröge
6cf110c1e3 gst/matroska/matroska-demux.c: Improve debug output everywhere and fix the EOS logic.
Original commit message from CVS:
* gst/matroska/matroska-demux.c: (gst_matroska_demux_reset),
(gst_matroska_demux_stream_from_num),
(gst_matroska_demux_encoding_cmp),
(gst_matroska_demux_encoding_order_unique),
(gst_matroska_demux_read_track_encoding),
(gst_matroska_demux_read_track_encodings),
(gst_matroska_demux_tracknumber_unique),
(gst_matroska_demux_add_stream), (gst_matroska_demux_init_stream),
(gst_matroska_demux_parse_tracks),
(gst_matroska_demux_parse_index_cuetrack),
(gst_matroska_demux_parse_index_pointentry),
(gst_matroska_demux_parse_index), (gst_matroska_demux_parse_info),
(gst_matroska_demux_parse_metadata_id_simple_tag),
(gst_matroska_demux_parse_metadata_id_tag),
(gst_matroska_demux_parse_metadata),
(gst_matroska_demux_parse_attached_file),
(gst_matroska_demux_parse_attachments),
(gst_matroska_demux_parse_chapters),
(gst_matroska_demux_sync_streams), (gst_matroska_decode_buffer),
(gst_matroska_demux_parse_blockgroup_or_simpleblock),
(gst_matroska_demux_parse_cluster),
(gst_matroska_demux_parse_contents_seekentry),
(gst_matroska_demux_parse_contents),
(gst_matroska_demux_loop_stream_parse_id),
(gst_matroska_demux_loop):
Improve debug output everywhere and fix the EOS logic.
Check the values of the ContentEncoding elements more strictly and
don't use tracks for which it's invalid.
Check that the track number is unique for this stream.
Check that seek positions are below G_MAXINT64 as our seeks are
int64-based and overflows will fail badly.
After seeks also don't push SimpleBlocks until the first one
containing a keyframe is found. Before this was done only for normal
Blocks.
Update some FIXME/TODOs.
* gst/matroska/ebml-read.c: (gst_ebml_read_peek_bytes),
(gst_ebml_read_utf8), (gst_ebml_read_header):
Improve debug output.
* gst/matroska/matroska-ids.c:
(gst_matroska_track_init_video_context):
* gst/matroska/matroska-ids.h:
* gst/matroska/matroska-mux.c:
(gst_matroska_mux_video_pad_setcaps):
Remove eye mode and don't parse it anymore. We can't use that
information in GStreamer yet so it's useless.
2008-06-18 10:28:20 +00:00
Sebastian Dröge
a5f813b90a gst/matroska/matroska-demux.c: When comparing index elements with the same time compare their block number.
Original commit message from CVS:
* gst/matroska/matroska-demux.c: (gst_matroska_index_compare):
When comparing index elements with the same time compare their
block number.
2008-06-16 11:34:54 +00:00
Tim-Philipp Müller
350df6326d gst/matroska/matroska-demux.c: (gst_matroska_demux_parse_attached_file)
Original commit message from CVS:
* gst/matroska/matroska-demux.c:
(gst_matroska_demux_parse_attached_file)
Init variable to NULL to avoid compiler warning.
2008-06-16 11:31:06 +00:00