Mark Nauwelaerts
44fa95d5cb
matroskademux: improve reverse playback
...
Slightly modify approach to also handle cases where cue entries do not reliably
lead to initial keyframes.
Fixes #619817 .
2010-06-01 15:56:34 +02:00
Mark Nauwelaerts
b8fd1a91f1
matroskamux: use write caching also when writing buffer data
...
Specifically, this reduces pushing several small buffers for each
data buffer and also avoids a seek for each buffer altogether
(though a seek is still needed for each cluster).
Fixes #619273 .
2010-06-01 15:54:35 +02:00
Mark Nauwelaerts
81bf657aa7
matroskamux: fix ebml write caching with bytewriter implementation
...
Also cache a bit more during header writing.
Fixes #619273 .
2010-06-01 15:53:43 +02:00
Mark Nauwelaerts
7895ddbc38
matroskamux: use consistent debug category name for ebmlwrite
2010-06-01 15:53:37 +02:00
Mark Nauwelaerts
085e333283
matroskademux: use bytereader based GstEbmlRead as a helper
...
... rather than basing on it by inheritance.
Also use more common code for push and pull mode.
Fixes #619198 .
Fixes #611117 .
2010-06-01 15:52:12 +02:00
Mark Nauwelaerts
973c8ddfdf
matroskamux: _get_pad_template result needs no unref
2010-06-01 15:51:16 +02:00
Sebastian Dröge
0d5ae784b1
matroskademux: Don't compare running times with stream times when doing QoS
2010-06-01 11:21:30 +02:00
Philip Jägenstedt
596331c6f0
matroskademux: fix deadlock introduced by video keyframe QoS
2010-06-01 11:21:29 +02:00
Philip Jägenstedt
80926a5596
matroskademux: skip buffers before a late keyframe (QoS)
...
Before, vp8dec had no option but to decode all frames even if some/all
of them would be late. With this change, performance when keyframes are
frequent is helped a great deal. On my Thinkpad X60s, decoding a 20 s
1080p sunflower encode with keyframes every 10 frames went from taking
42 s with 5 frames shown to 21 s with 15 frames shown (still slow
enough to count by hand). When keyframes are more sparse, you will
still be able to catch up eventually, but the results won't be as
noticable.
2010-06-01 11:21:29 +02:00
Tim-Philipp Müller
97de4b217d
Revert "matroska: add temporary webm typefinder"
...
This reverts commit d148ec0ad2
.
We depend on -base git now, which has a webm typefinder in the usual
place.
2010-06-01 09:39:38 +01:00
Tim-Philipp Müller
d51576b14c
Revert "avimux, flvmux, matroskamux: don't crash if tags arrive on multiple input pads at the same time"
...
This reverts commit 6a9983cd20
.
Rely on locking done in GstTagSetter in core git.
2010-06-01 09:39:38 +01:00
Tim-Philipp Müller
a9c13cd4f7
docs: remove unnecessary videorate element from webmmux example pipeline
2010-05-28 15:14:32 +01:00
Tim-Philipp Müller
6a9983cd20
avimux, flvmux, matroskamux: don't crash if tags arrive on multiple input pads at the same time
...
This is a temporary fix for the release only.
Fixes #619533 .
2010-05-26 00:05:54 +01:00
Tim-Philipp Müller
d148ec0ad2
matroska: add temporary webm typefinder
...
Add webm typefinder just for the release, so webm works for
people whose distros don't patch gst-plugins-base as well.
We'll remove this again after the release.
2010-05-25 15:40:01 +01:00
Tim-Philipp Müller
9bdfc7254a
docs: add some pipeline examples to webmmux docs
2010-05-23 11:17:27 +01:00
Tim-Philipp Müller
a4fabfb959
matroska: fix up plugin and element descriptions a bit
2010-05-21 15:06:14 +01:00
Tim-Philipp Müller
0e12bf83a3
matroska: move webmmux into own source files
...
Makes things easier for gtk-doc.
2010-05-21 15:04:48 +01:00
Sebastian Dröge
82e4807d10
matroska: Remove the doctype enum, it's not needed anymore
2010-05-20 21:49:43 +02:00
Sebastian Dröge
6a25cd475c
webmmux: Add new webmmux element that only supports muxing of WebM
...
...and remove the doctype property from matroskamux again.
2010-05-20 21:49:43 +02:00
Philip
9c59da8601
ebmlread: rm floatcast.h include (not used)
2010-05-19 20:38:50 +02:00
Philip Jägenstedt
cbde946768
matroskamux: bump default doctype version to 2
...
In this day and age this should be safe. There's otherwise a risk people
will be creating unneccessarily big WebM files as they can't use
SimpleBlock in v1.
2010-05-19 20:38:31 +02:00
Philip Jägenstedt
9610c7f354
matroska: handle matroska and webm doctype versions equally
...
The original plan was to let WebM v1 be the same as Matroska v2 (with
extra constraints), but for simplicity it was decided to handle the
versions equally, such that e.g. SimpleBlock is only allowed in WebM v2.
2010-05-19 20:38:16 +02:00
Philip Jägenstedt
081f2d00aa
matroskademux: Verify lace size in _parse_blockgroup_or_simpleblock
...
Failure to do this for corrupt input can cause a subbuffer bigger
than the actual buffer to be created, quickly leading to segfault.
Test case:
bug_s222005751_r0.001____memcpy.webm
2010-05-19 20:35:52 +02:00
Philip Jägenstedt
c659c92091
ebml: crude hack to avoid crashing on unexpected metadata
...
The comment says this cannot happen, but it did and I don't know
why. This is not the correct fix, needs investigation. Test case:
bug_s555010094_r0.0005:0.008____IA__g_assertion_message_expr.webm
2010-05-19 20:35:28 +02:00
Philip Jägenstedt
9c1267b1a9
ebml: don't modify out str if returning an error in _read_ascii
...
This is a regression from ASCII validation changes. Test case:
bug_s66876390_r0.001____malloc_printerr.webm
2010-05-19 20:35:06 +02:00
Philip Jägenstedt
c712d28796
ebml: Validate 7-bit ASCII in gst_ebml_read_ascii
...
This was triggering an UTF-8 assertion in gst_caps_set_simple for
corrupt files with garbage as codec id. Test case:
gstreamer_error_trying_to_set_invalid_utf8_as_codec_id.webm
Old gst_ebml_read_ascii renamed to gst_ebml_read_string, also used by
gst_ebml_read_utf8. Unlike for UTF-8, failure to validate is an error,
as gst_ebml_read_ascii is used for reading doctype and codec id and we
might just as well give up early in those cases.
2010-05-19 20:33:38 +02:00
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
ad05dfc032
matroskamux: Use SimpleBlock for WebM when possible
2010-05-19 20:32:02 +02:00
Philip Jägenstedt
1daeb26df1
matroskademux: Support "webm" DocType
2010-05-19 20:31:36 +02:00
Philip Jägenstedt
3b4759de18
matroskamux: rename matroska_version to doctype_version
2010-05-19 20:29:19 +02:00
Philip Jägenstedt
27069088db
matroskamux: Support "webm" DocType
2010-05-19 20:28:42 +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
ad1c01661f
matroskamux: Write previous cluster's size
...
This is useful for backwards playback, which should be implemented
in matroskademux at some point.
2010-05-01 14:20:59 +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
Sebastian Dröge
db6a3e55c6
matroskamux: Write interlaced flag if the input video content is interlaced
...
Unfortunately Matroska has no way to specify TFF and friends...
2010-05-01 14:13:24 +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
Stefan Kost
acc742bbc9
matroska-mux: fix last commit
...
Use a local define for WAVEFORMAT_EX based on the size of the struct + 2 bytes
for the extension size.
2010-04-08 13:29:35 +03:00
Stefan Kost
0c35e0c4db
matroskamux: use riff lib more
...
Remove BITMAPINFOHEADER and use the one from riff-lib. Also remove the
WAVEFORMATEX_SIZE define and use a sizeof together with the respective struct.
Besides better code reuse this lessens the ununsed symbols in the docs.
2010-04-08 12:57:03 +03: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
Tim-Philipp Müller
073201b329
build: Makefile.am cleanups
...
Mostly add $(GST_BASE_CFLAGS) where it was missing, but also fix up
order of flags and libs if needed (see docs/random/moving-plugins).
2010-03-18 21:34:24 +00: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
Tim-Philipp Müller
63c86ac3d8
raw1394, matroska, rtpmanager: remove padding from structures
...
None of these element and class structures are in public headers,
so don't need padding.
2010-02-15 00:50:10 +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
Arnout Vandecappelle
ca41ddda75
matroskamux: make index size configurable.
...
Added the 'min-index-interval' property to matroskamux,
which determines how much time (nanoseconds) is left
between keyframes stored in the index.
Fixes #583985 .
2010-01-20 14:37:20 -03: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
Mark Nauwelaerts
927c22bdc4
matroskamux: use more generic xiphN_streamheader_to_codecdata helper
2010-01-11 21:15:43 +01:00
Mark Nauwelaerts
847d1dd4ed
matroskamux: reflow audio and video setcaps and improve logging
...
Also ensure width and height are available as they are mandatory
in matroska specs.
2010-01-11 21:15:41 +01:00
Thiago Santos
5975b01b01
avimux: matroskamux: rename aac's stream-format to raw
...
AAC's none stream-format has been renamed to raw, rename
on avimux and matroskamux as well
2010-01-11 13:26:32 -03:00
Thiago Santos
1314853210
matroskamux: Only accept raw aac
...
makes matroskamux reject aac streams that are not
in raw format (stream-format=none)
Fixes #598350
2010-01-11 12:32:29 -03: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
Mark Nauwelaerts
e4183c6904
matroskademux: fix ebml read cache usage
2009-12-16 12:46:37 +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
Michael Smith
b0b54d9324
Add dependencies of gstriff to things that link to gstriff, needed on Win32.
2009-10-23 18:09:43 -07:00
Sebastian Dröge
68176befa2
matroskamux: Dirac "muxing" units end on EOS too
...
A Dirac muxing unit are all non-picture, non-end-of-sequence
packets up to and including the first picture or eos packet.
See http://www.diracvideo.org/wiki/index.php/ContainerFormatMappingGuidelines
2009-10-22 12:32:32 +02: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
Jan Schmidt
600516be90
matroskamux: Don't get stuck in an infinite loop with Dirac
...
At the end, Dirac streams have an EOS packet with 0 length.
Don't ever sit in an infinite loop when processing one. Allows
muxing Dirac into mkv to complete successfully.
2009-09-22 11:50:11 +01: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
Thiago Santos
df442b4727
matroskamux: adds support for wmv family
...
Adds support to WMV1, WMV2, WMV3 and other family formats that
are signaled by the 'format' field in the caps (i.e. WVC1).
Partially fixes #576378
2009-08-09 20:34:04 -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
dff3f37bdf
matroska: and the new headers too
2009-06-23 14:39:56 +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