Mark Nauwelaerts
4085f12058
ac3: demuxers provide framed output
2010-10-14 17:29:26 +02:00
Mark Nauwelaerts
bb9a8a9b7d
matroskademux: only unref buffer when no longer needed for cluster scanning
...
Fixes #629047 .
2010-10-05 16:03:10 +02:00
Mark Nauwelaerts
e0d11f0644
matroskademux: avoid infinite cluster scanning
2010-10-05 16:03:08 +02:00
Arun Raghavan
9e786de9c8
matroskademux: Use pbutils for H.264 profile/level extraction
...
The functions used to extract this data have been moved to gstpbutils to
facilitate reuse.
https://bugzilla.gnome.org/show_bug.cgi?id=617318
2010-10-01 16:58:46 +01:00
Mark Nauwelaerts
91a60245b7
matroskademux: QoS handling logic only applies to forward playback
...
Fixes #628894 .
2010-09-08 17:51:34 +02:00
Mark Nauwelaerts
13b553bce7
matroskademux: attempt more resync upon (cluster) parse error
...
That is, if parse error occurs in state requiring to move to next cluster,
and doing so to the expected next position of cluster fails, then scan for a
next cluster from present position and resume from there.
Fixes #620790 .
2010-09-06 14:45:40 +02:00
Mark Nauwelaerts
4d9c1e99f2
matroskademux: not so fatal error handling
...
If some bits out of place in block(group) parsing, forego and move to next.
Also skip large blocks in pull mode, but need to give up in push mode.
Fixes #626463 .
Improves #620790 .
2010-09-06 14:45:37 +02:00
Mark Nauwelaerts
680eb51b68
matroskademux: additional parse recovery
...
In particular, upon parse failure in one cluster, we may forego remaining
content and try resuming from next cluster onwards.
Fixes #620790 .
2010-09-06 14:45:30 +02:00
Pavel Kostyuchenko
6940559c46
matroskademux: Relax parsing of date tags
...
Before we required a complete date in matroskademux but in
id3demux for example only the year or year and month was possible too.
Fixes bug #628454 .
2010-09-04 14:52:11 +02:00
Sebastian Dröge
e8743b3789
matroskademux: Don't use GST_FLOW_IS_FATAL()
2010-09-04 14:52:09 +02:00
Mark Nauwelaerts
8419df627b
matroskademux: proper handling of streaming upstream without duration
...
Fixes #625371 .
2010-07-28 14:45:25 +02:00
Tim-Philipp Müller
a0de5e8a4f
matroskademux: initialize some variables to fix compiler warnings on OSX build bot
2010-07-26 18:33:09 +02:00
Mark Nauwelaerts
c626e90fda
matroskademux: pull mode non-cue seeking
...
That is, in files that have no index (Cue), perform seek by scanning for
nearest cluster with timecode before requested position. Scanning is done
as a combination of interpolation and sequential scan.
Fixes #617368 .
2010-07-22 12:18:14 +02:00
Mark Nauwelaerts
fd959ca77f
matroskademux: add missing argument in debug message
2010-07-16 18:05:21 +02:00
Mark Nauwelaerts
39268f10d3
matroskademux: remove bogus UNLOCK
2010-07-16 14:00:40 +02:00
Mark Nauwelaerts
16b57b49c9
matroskademux: handle bogus files storing ADTS AAC data
2010-07-16 13:59:22 +02:00
Mark Nauwelaerts
18f37ffc9a
matroskademux: do not error out on a block with unknown tracknumber
2010-07-16 13:58:39 +02:00
Sebastian Dröge
968ce701a7
matroskademux: Fix an uninitialized variable compiler warning
2010-06-17 10:44:33 +02:00
Sebastian Dröge
e4a5f0911e
matroskademux: Fix possible NULL pointer dereference and assertion that could be caused by invalid files
2010-06-16 20:02:58 +02:00
Sebastian Dröge
20b9022289
matroskademux: Clean up/fix some minor error handling bugs
2010-06-16 19:50:34 +02:00
Philip Jägenstedt
21c84e23e8
matroskademux: refactor delta unit handling
...
This allows us to skip delta units earlier and is a bit clearer in my
opinion. It also makes only video buffers ever be delta units, not
just for SimpleBlock as before.
2010-06-06 15:38:00 +02:00
Philip Jägenstedt
b2ff8042d3
matroskademux: Ignore keyframe flag for non-video streams
...
When the keyframe bit of SimpleBlock Flags wasn't set, the buffer was being
marked with GST_BUFFER_FLAG_DELTA_UNIT, causing all buffers to be skipped
after a seek. This may be a problem with the Sorenson Squish encoder, but
arguably the keyframe bit should only be applied to video.
Fixes bug #620358 .
2010-06-06 14:59:29 +02:00
Zaheer Abbas Merali
3d876d2b16
matroska: use the uint64 scaling functions
...
In demuxer and muxer use the gst_util_uint64 scaling functions rather than
standard integer division. Add warnings (to be changed to debug) for debugging
the timestamp and duration.
2010-06-01 16:43:04 +01:00
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
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
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
a4fabfb959
matroska: fix up plugin and element descriptions a bit
2010-05-21 15:06:14 +01:00
Sebastian Dröge
82e4807d10
matroska: Remove the doctype enum, it's not needed anymore
2010-05-20 21:49:43 +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
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