Commit graph

698 commits

Author SHA1 Message Date
Wim Taymans
684f504336 matroska: port to new memory API 2012-01-25 12:41:30 +01:00
Wim Taymans
583d39dd8d update for new memory API 2012-01-25 12:30:28 +01:00
Matej Knopp
b780639b2c Don't crash on empty laces
https://bugzilla.gnome.org/show_bug.cgi?id=665224
2012-01-24 14:09:48 +00:00
Mark Nauwelaerts
c588d568f1 matroska-demux: remove redundant variable 2012-01-20 17:10:37 +01:00
Wim Taymans
1584806634 port to new gthread API 2012-01-19 11:33:53 +01:00
Matej Knopp
d55f75f6f4 matroska: fix printf format compiler warnings
https://bugzilla.gnome.org/show_bug.cgi?id=662615
2012-01-15 18:31:27 +00:00
Mark Nauwelaerts
7002edbe2b matroskademux: clean up obsolete closing segment handling 2012-01-13 14:24:40 +01:00
Tim-Philipp Müller
d681af899b GST_TYPE_DATE -> G_TYPE_DATE 2012-01-12 23:55:31 +00:00
Tim-Philipp Müller
8580dd86c9 eqMerge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	ext/jack/gstjackaudiosink.c
	ext/jack/gstjackaudiosrc.c
	gst/matroska/matroska-mux.c
	gst/matroska/matroska-read-common.c
	gst/rtpmanager/gstrtpssrcdemux.c
2012-01-12 23:48:50 +00:00
Vincent Penquerc'h
f04d812719 matroska: do not leak attachment buffers 2012-01-12 14:19:22 +00:00
Nicola Murino
d1bb060d71 matroskamux: fix codec_priv leaks
https://bugzilla.gnome.org/show_bug.cgi?id=667419
2012-01-10 18:29:06 +00:00
Sebastian Dröge
93e3ed5a86 Merge branch 'master' into 0.11
Conflicts:
	ext/cairo/gsttextoverlay.c
	ext/pulse/pulseaudiosink.c
	gst/audioparsers/gstaacparse.c
	gst/avi/gstavimux.c
	gst/flv/gstflvmux.c
	gst/interleave/interleave.c
	gst/isomp4/gstqtmux.c
	gst/matroska/matroska-demux.c
	gst/matroska/matroska-mux.c
	gst/matroska/matroska-mux.h
	gst/matroska/matroska-read-common.c
	gst/multifile/gstmultifilesink.c
	gst/multipart/multipartmux.c
	gst/shapewipe/gstshapewipe.c
	gst/smpte/gstsmpte.c
	gst/udp/gstmultiudpsink.c
	gst/videobox/gstvideobox.c
	gst/videocrop/gstaspectratiocrop.c
	gst/videomixer/videomixer.c
	gst/videomixer/videomixer2.c
	gst/wavparse/gstwavparse.c
	po/ja.po
	po/lv.po
	po/sr.po
	tests/check/Makefile.am
	tests/check/elements/qtmux.c
	tests/check/elements/rgvolume.c
2012-01-10 14:32:32 +01:00
Vincent Penquerc'h
2b2c0940f1 matroskamux: fix codec string leaks 2012-01-09 17:28:17 +00:00
Sebastian Dröge
dd84b002b0 matroska: Update for the new raw audio interleaved caps field
Still needs to be fixed to handle the multichannel channel-mask
and reordering.
2012-01-05 10:30:34 +01:00
Wim Taymans
5fd2b7abe3 GST_FLOW_UNEXPECTED -> GST_FLOW_EOS 2012-01-03 15:26:21 +01:00
Tim-Philipp Müller
0f3e05e580 matroska: update for GstIndex removal 2011-12-30 17:41:46 +00:00
Branko Subasic
a7d6690f92 matroskademux: do not consider duration of non-finalized file
... to avoid it clamping requested seek position.

Non-finalized file case, determined by whether
_parse_blockgroup_or_simpleblock ever updates the segment duration.

Fixes #652195.
2011-12-21 18:14:26 +01:00
Mark Nauwelaerts
628ae5c1a1 matroskademux: improve decision to fall back to scanning when seeking
... which is basically iff not streaming and no entry found in index
2011-12-21 15:45:36 +01:00
Mark Nauwelaerts
f06d741633 matroskamux: bring a few debug statements up to specs
... and minor spelling fix.
2011-12-19 17:44:55 +01:00
Mark Nauwelaerts
0626724262 matroskamux: additional subtitle support 2011-12-19 17:44:52 +01:00
Mark Nauwelaerts
0845a3718a matroskamux: additional buffer handling cleanup 2011-12-19 17:44:43 +01:00
Mark Nauwelaerts
7723d64a73 matroskamux: use GstCollectPads2 buffer callback and running time clipper 2011-12-19 17:44:41 +01:00
Mark Nauwelaerts
f6b38f2c39 matroskamux: use GstCollectPads2 event callback
... in stead of local HACK.
2011-12-15 16:31:36 +01:00
Vincent Penquerc'h
c422a4e2e6 matroskamux: port to GstCollectPads2 2011-12-14 19:07:23 +00:00
Mark Nauwelaerts
ebfc77da19 matroskademux: filter bogus index entries with missing block number
... to avoid contradictory information resulting in seeks sending more
downstream than needed for the corresponding segment.
2011-12-13 18:20:49 +01:00
Mark Nauwelaerts
00ed34d2eb matroskademux: cater for safer arithmetic with global start time 2011-12-13 18:20:47 +01:00
Mark Nauwelaerts
fd88096577 matroskademux: tweak final closing segment sending
... to avoid it interfering with (sparse) stream syncing.
2011-12-13 18:20:44 +01:00
Mark Nauwelaerts
581ca6ce4e matroskademux: mind (un)signed in some timestamp arithmetic
... to avoid ending up with invalid (negative) duration.
2011-12-12 15:23:50 +01:00
Tim-Philipp Müller
b8b8454bcb Suppress deprecation warnings in selected files, for g_static_rec_mutex_* mostly
GStaticRecMutex is part of our API/ABI, not much we can do here
in 0.10 for most of these.
2011-12-12 09:46:27 +00:00
Tim-Philipp Müller
b50bee2617 Merge remote-tracking branch 'origin/master' into 0.11 2011-12-09 12:15:30 +00:00
Tim-Philipp Müller
c363ae8254 matroskamux: stream-format=raw goes with aac caps, not mp3 caps 2011-12-08 11:00:45 +00:00
Tim-Philipp Müller
668e15598b Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	sys/v4l2/gstv4l2object.c
2011-12-08 01:28:26 +00:00
Vincent Penquerc'h
3e2b23280e matroskaparse: warn if accumulating headers after they were pushed
https://bugzilla.gnome.org/show_bug.cgi?id=665412
2011-12-03 18:44:39 +00:00
David Schleef
94b8f0b74e matroskaparse: fix parsing
Mark more parts as belonging to streamheaders.
2011-12-03 10:40:03 -08:00
Tim-Philipp Müller
d895ac645f Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	docs/plugins/inspect/plugin-esdsink.xml
	docs/plugins/inspect/plugin-gconfelements.xml
	ext/pulse/pulseaudiosink.c
	gst/matroska/matroska-demux.c
	gst/matroska/matroska-mux.c
	gst/multifile/gstmultifilesink.c
2011-12-02 01:58:30 +00:00
Wim Taymans
f1558baf83 update for tag API changes 2011-12-01 18:55:45 +01:00
Vincent Penquerc'h
47182ca61f matroskademux: placate gcc since -Werror is used
Initialize values that GCC cannot prove are not used without
being initialized, and assert that I did not mess up my proof.
2011-12-01 15:29:15 +00:00
Tim-Philipp Müller
337533ee84 matroska-mux: fix name of new property and the unit test
https://bugzilla.gnome.org/show_bug.cgi?id=654379
2011-12-01 13:22:42 +00:00
Sebastian Dröge
6ec601fa12 matroskademux: Don't forget SSA subtitles in last commit 2011-12-01 13:38:06 +01:00
Sebastian Dröge
588734b291 matroskademux: Only check for markup and escape if necessary for plaintext subtitles
Otherwise we break USF and ASS/SSA subtitles.
2011-12-01 13:35:54 +01:00
Sebastian Dröge
6d4a634626 matroskademux: Copy all buffer flags when creating a subtitle buffer copy after postprocessing
This also copies the caps. Otherwise we could end up pusing
the first buffer without any caps, which causes downstream
to not get notified about the caps.

Fixes bug #664892.
2011-12-01 12:47:26 +01:00
Alexey Fisher
23594b0324 matroskamux: make default framerate optional per stream
there is at least two use cases where default frame rate
should or may be disabled:
- vp8 stream with altref frame enabled. If default frame rate
is enabled, some players will missinterprete it (critical!)
- for webm container, to reduce micro overhead
- for stream with variable frame rate.

Signed-off-by: Alexey Fisher <bug-track@fisher-privat.net>
2011-12-01 10:55:57 +01:00
Wim Taymans
c36325f0aa Update for indexable change 2011-11-28 18:25:52 +01:00
Vincent Penquerc'h
c0e101e93f various: fix pad template leaks
https://bugzilla.gnome.org/show_bug.cgi?id=662664
2011-11-28 13:30:27 +00:00
Tim-Philipp Müller
dc540c23da Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	gst/equalizer/gstiirequalizer.c
2011-11-27 23:31:43 +00:00
Tim-Philipp Müller
54a951ff15 matroskademux: initialise seen_markup_tag field on subtitle stream context 2011-11-26 16:06:59 +00:00
René Stadler
17240ac9ec matroska: port to 0.11
Support for TAG_IMAGE and TAG_ATTACHMENT is commented out; this requires caps
on buffers which is gone from 0.11.

Segment handling in the demuxer is a bit complex; I added some FIXME comments
in places where I'm not yet sure if I ported correctly.
2011-11-26 15:01:01 +01:00
Wim Taymans
c5cad2aff2 Merge branch 'master' into 0.11 2011-11-23 10:23:28 +01:00
Tim-Philipp Müller
80be58c4f5 matroskaparse: don't leak stream headers
https://bugzilla.gnome.org/show_bug.cgi?id=664548
2011-11-23 01:00:14 +00:00
Stefan Sauer
8643d1caaf collectpads: port API changes 2011-11-17 08:44:45 +01:00
Wim Taymans
95f3987332 Merge branch 'master' into 0.11
Conflicts:
	ext/flac/gstflacdec.c
	gst/audioparsers/gstflacparse.c
	gst/isomp4/qtdemux.c
2011-11-09 12:18:01 +01:00
René Stadler
2a139a28d9 matroskamux: fix regression causing malformed files
This was caused by me in 1b213d. It seems I was too focused on 0.11 when I did
this and tested the wrong branch.

The problem was reported by Alexey Fisher.
2011-11-07 12:00:12 +01:00
Wim Taymans
a19a4a69ae more template fixes 2011-11-04 13:12:37 +01:00
Wim Taymans
a95acb7122 make %u in all request pad templates 2011-11-04 11:58:22 +01:00
Mark Nauwelaerts
00c8ae733d matroskamux: do not use unoffical V_MJPEG codec id
... but as not spec'ed especially, consider it a VfW compatibility case.

Fixes #659837.
2011-10-31 15:47:14 +01:00
Mark Nauwelaerts
4924308d02 matroskademux: tune non-update seek handling cases
Fixes #661049.
2011-10-28 12:13:51 +02:00
René Stadler
1b213d905a matroska: refactor ebml-write to be more 0.11 friendly
Switching to a more 0.11-friendly pattern, where getting the buffer's data
pointer and setting the size many times is less natural. This is of course in
preparation to the upcoming port of the plugin.
2011-10-21 23:17:16 +02:00
René Stadler
003a14e15a matroska: remove stale floatcast include
GDOUBLE_TO_BE was moved to core a long time ago.
2011-10-21 22:41:57 +02:00
René Stadler
6fc85e6c9d matroskamux: fix possible crash with malformed dirac codec_data
Since size is unsigned, we need to safeguard against wrapping below zero.
2011-10-21 22:41:57 +02:00
René Stadler
5baca05ec3 ebml: small correction to previous commit
Signal a short read with UNEXPECTED, exactly like the peek_bytes function.
2011-10-21 10:03:14 +02:00
Edward Hervey
4b5f8ff8d1 ebml: Fix push-based behaviour
The 'peek' method was completely wrong (!?)
2011-10-19 13:10:47 +02:00
René Stadler
26d0812543 matroskamux: fix segment handling, so we actually use running time
gst_matroska_mux_best_pad adjusts the buffer timestamp to running time using
the segment stored in the pad's collect data. However, the event handler didn't
pass the newsegment event on to collectpads' handler, so this segment was never
updated at all.

Re-fixes bug #432612.
2011-10-11 14:58:43 +02:00
Tim-Philipp Müller
ad245a0dc2 matroska-demux: don't leak audio codec_data buffer 2011-10-10 19:02:58 +01:00
Vincent Penquerc'h
be82dd8e3a matroskademux: improve segment handling with non-zero starting timestamp
... as well as related items, such as seeking and position reporting.

https://bugzilla.gnome.org/show_bug.cgi?id=659808
2011-10-05 14:34:55 +02:00
Vincent Penquerc'h
671b56f9da matroskademux: ensure minimal alignment for audio/x-raw-* buffers
Since matroskademux will attempt to push unaligned buffers,
downstream might have trouble with those, especially if downstream
uses ORC, such as audioconvert.

Ensure we push buffers aligned to the basic type at least for
those raw buffers.

https://bugzilla.gnome.org/show_bug.cgi?id=659798
2011-09-28 12:49:42 +02:00
Branko Subasic
11b0a0effc matroskademux: Avoid sending EOS when in paused state
Changed the ebml reader's gst_ebml_peek_id_length() function so
that it returns the actual reason for why the peek failed, instead
of (almost) always returning GST_FLOW_UNEXPECTED. This prevents
the pulling task from sending EOS when doing a flushing seek.
2011-09-16 15:18:48 +02:00
Vincent Penquerc'h
26ae233035 matroskademux: fix stuttering A/V
Someone got had by implicit promotion to unsigned in ops with
a signed and an unsigned value.

https://bugzilla.gnome.org/show_bug.cgi?id=659153
2011-09-15 17:29:00 +01:00
David Svensson Fors
682ae32f6f matroskademux: configurable timestamp gap handling
matroskademux performs segment tricks to skip gaps in streams,
notably at start for non 0 based files.  There may however be
cases when full presentation (including intermediate gaps) is
desired, so a property allows to configure as of which gap
to act (or not at all).

API: GstMatroskaDemux::max-gap-time

Fixes #659009.
2011-09-14 14:49:36 +02:00
Mark Nauwelaerts
ef1ad78eee matroskademux: tweak gap handling
... so as to avoid buffers before and after gap to have identical running time.
2011-09-08 15:10:43 +02:00
Andoni Morales Alastruey
782fc78d57 matroskamux: handle GstForceKeyUnit event
... by starting a new cluster after forwarding event.

Fixes #644154.
2011-09-07 14:51:56 +02:00
Mark Nauwelaerts
aa0ae490d0 matroskamux: make default duration check less sensitive
Frame duration might vary for 1 usecond, in this case matroskamux
decides to create BLOCKGROUP instead of SIMPLEBLOCK.

Convert duration to timecodescale which is (typically) less precise, and
then also allow the difference of 1/-1 to arrange for less sensitive check.

Based on patch by Alexey Fisher <bug-track@fisher-privat.net>

Fixes #653080.
2011-09-06 15:09:13 +02:00
Vincent Penquerc'h
e032d26674 matroskademux: ensure no-more-pads is always emitted
In particular, do so even if failing to read while prerolling,
such as when reading from a partial file (eg, while it is being
downloaded).

This fixes a wedge in playbin2.

https://bugzilla.gnome.org/show_bug.cgi?id=651965
2011-08-18 11:30:07 +02:00
Jan Schmidt
1438bf26ac matroska: Register new debug category
Register the matroskareadcommon debug category when the
plugin is loaded to avoid assertion output when debug is turned on.
2011-08-03 22:52:07 +10:00
Alexey Fisher
69c14012c9 matroskademux: fix pixel-aspect-ratio if header has only one display variable
Current matroska demux calculates the pixel aspect ratio only if both
DisplayHeight and DisplayWidth are set, but it is legal to use only
one variable if the other is equal to PixelWidth or PixelHeight, at
least the mkclean utility is doing that. So this makse mkcleaned
files play correctly.

https://bugzilla.gnome.org/show_bug.cgi?id=654744
2011-07-17 00:11:03 +01:00
Alexey Fisher
a2e0bda3b5 matroskademux: handle blocks with duration=0
Some video frames, for example alt-ref frame in VP8, will be
never displayed. This is why it has duration=0.

This patch allow to use this duration.

Bug: 654175
Signed-off-by: Alexey Fisher <bug-track@fisher-privat.net>
2011-07-08 09:58:29 +02:00
Branko Subasic
e385108f84 matroskademux: avoid looping when searching for clusters
Fixes some bugs that results in the demuxer looping when seaching
for clusters in non-finalized files.

https://bugzilla.gnome.org/show_bug.cgi?id=652195
2011-07-01 17:19:40 +01:00
Debarshi Ray
c8619aa0fd matroskaparse: fix reference counting of parse->streamheader
https://bugzilla.gnome.org/show_bug.cgi?id=652286

Signed-off-by: David Schleef <ds@schleef.org>
2011-06-29 23:56:53 -07:00
Stefan Kost
b5d5fa2bb9 matroska: add missing stdio include for sscanf 2011-06-14 01:07:57 +03:00
Debarshi Ray
9175a903fb matroska: refactor code common to matroskademux and matroskaparse
Move the following function to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
    - gst_matroska_{demux,parse}_parse_chapters

https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-06-06 14:54:23 +02:00
Debarshi Ray
05778b85d5 matroska: refactor code common to matroskademux and matroskaparse
Move the following function to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
    - gst_matroska_{demux,parse}_parse_attachments

https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-06-06 14:43:12 +02:00
Debarshi Ray
d8a8326d7c matroska: refactor code common to matroskademux and matroskaparse
Move the following function to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
    - gst_matroska_{demux,parse}_parse_attached_file

https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-06-06 14:43:04 +02:00
Debarshi Ray
366f064e73 matroska: refactor code common to matroskademux and matroskaparse
Move the following function to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
    - gst_matroska_{demux,parse}_parse_info

https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-06-06 14:42:55 +02:00
Debarshi Ray
2d282a6c79 matroska: refactor code common to matroskademux and matroskaparse
Move the following function to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
    - gst_matroska_{demux,parse}_parse_metadata

https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-06-06 14:42:46 +02:00
Debarshi Ray
493e197588 matroska: refactor code common to matroskademux and matroskaparse
Move the following function to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
    - gst_matroska_{demux,parse}_parse_metadata_id_tag

https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-06-06 14:42:33 +02:00
Debarshi Ray
febfcce0fd matroska: refactor code common to matroskademux and matroskaparse
Move the following function to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
    - gst_matroska_{demux,parse}_parse_metadata_id_simple_tag

https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-06-06 14:41:51 +02:00
Debarshi Ray
25e0da562b matroskaparse: Use ARTIST tag instead of AUTHOR for GST_TAG_ARTIST
AUTHOR only existed in an old version of the spec and ARTIST is
the new replacement for this. We are still reading both to still
be compatible with old files.

Fixes bug #644875.
2011-06-04 13:43:27 -07:00
David Schleef
0672232b26 matroskamux: For streaming files, push tags first 2011-06-01 17:20:44 -07:00
Debarshi Ray
399fc9cd1c matroska: refactor code common to matroskademux and matroskaparse
Move the following functions to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
    - gst_matroska_{demux,parse}_parse_header

https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-05-30 17:43:01 +02:00
Debarshi Ray
bc7d61abca matroska: refactor code common to matroskademux and matroskaparse
Move the following functions to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
    - gst_matroska_{demux,parse}_get_seek_track
    - gst_matroska_{demux,parse}_reset_streams

https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-05-30 07:57:30 +02:00
Debarshi Ray
17ff8a73d8 matroska: refactor code common to matroskademux and matroskaparse
Move the following function to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
    - gst_matroska{demux,parse}_found_global_tag

https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-05-30 07:57:06 +02:00
Debarshi Ray
eeb4d19992 matroska: refactor code common to matroskademux and matroskaparse
Move the following functions to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
    - gst_matroska_index_seek_find
    - gst_matroska{demux,parse}_do_index_seek

https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-05-30 07:56:54 +02:00
Debarshi Ray
1a6e658444 matroska: refactor code common to matroskademux and matroskaparse
Move the following function to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
    - gst_matroska_{demux,parse}_tracknumber_unique

https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-05-30 07:56:44 +02:00
Debarshi Ray
0aa35a6bcc matroska: refactor code common to matroskademux and matroskaparse
Move the following function to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
    - gst_matroska_{demux,parse}_decode_data

https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-05-30 07:56:38 +02:00
Debarshi Ray
b437744b70 matroska: refactor code common to matroskademux and matroskaparse
Move the following function to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
    - gst_matroska_{demux,parse}_get_length

https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-05-30 07:56:21 +02:00
Debarshi Ray
5ba333bcad matroska: refactor code common to matroskademux and matroskaparse
Move the following functions to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
    - gst_matroska_{demux,parse}_encoding_cmp
    - gst_matroska_{demux,parse}_read_track_encodings

https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-05-27 09:10:17 +02:00
Debarshi Ray
2589f1cd2d matroska: refactor code common to matroskademux and matroskaparse
Move the following functions to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
    - gst_matroska_{demux,parse}_peek_id_length_pull
    - gst_matroska_{demux,parse}_peek_id_length_push

https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-05-27 09:09:33 +02:00
Debarshi Ray
f3820b61a1 matroska: refactor code common to matroskademux and matroskaparse
Move the following function to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
    - gst_matroska_{demux,parse}_peek_adapter

https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-05-27 09:09:10 +02:00
Mark Nauwelaerts
74e0c05ff7 matroskademux: UTF-8 subtitles may have markup
Fixes #616936.
2011-05-26 12:12:57 +02:00
Debarshi Ray
5384308c99 matroska: refactor code common to matroskademux and matroskaparse
Move the following function to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
    - gst_matroska_{demux,parse}_peek_pull

https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-05-25 20:02:40 +02:00
Debarshi Ray
72d969b360 matroska: refactor code common to matroskademux and matroskaparse
Move the following function to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
    - gst_matroska_{demux,parse}_peek_bytes

https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-05-25 10:16:31 +02:00
Debarshi Ray
f885e2721a matroska: refactor code common to matroskademux and matroskaparse
Move the following functions to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
    - gst_matroska_{demux,parse}_encoding_order_unique
    - gst_matroska_{demux,parse}_read_track_encoding

https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-05-25 10:13:27 +02:00
Debarshi Ray
b316e2346c matroska: fixed copyright headers
https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-05-24 09:53:54 +02:00
Debarshi Ray
85036682cb matroska: refactor code common to matroskademux and matroskaparse
Move the following functions to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
    - gst_matroska_decode_content_encodings
    - gst_matroska_decompress_data

https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-05-24 09:53:45 +02:00
Debarshi Ray
51c7e6d252 matroska: move GstMatroska{Demux,Parse}::state to GstMatroskaReadCommon
https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-05-24 09:52:50 +02:00
Debarshi Ray
15ce1142ca matroska: refactor code common to matroskademux and matroskaparse
Replace the following functions with their gst_matroska_read_common_*
counterparts:
    - gst_matroska_{demux,parse}_parse_index
    - gst_matroska_{demux,parse}_parse_skip
    - gst_matroska_{demux,parse}_stream_from_num

Introduce GstMatroskaReadCommon to contain those members of
GstMatroskaDemux and GstMatroskaParse that were used by the above
functions.

https://bugzilla.gnome.org/show_bug.cgi?id=650877
2011-05-23 17:21:52 +02:00
Debarshi Ray
4df5d896f0 matroskaparse: calculate segment duration after parsing all the IDs
Since the segment duration is given in terms of the
GST_MATROSKA_ID_TIMECODESCALE we should only convert it into
nanoseconds when we are sure that any scale specified in the file has
been read.

https://bugzilla.gnome.org/show_bug.cgi?id=650258
2011-05-17 09:03:50 +02:00
Mark Nauwelaerts
8b910885ec matroskademux: additional lock safety
Fixes #619590.
2011-05-16 13:30:10 +02:00
Debarshi Ray
bdc464a778 matroskademux: calculate segment duration after parsing all the IDs
Since the segment duration is given in terms of the
GST_MATROSKA_ID_TIMECODESCALE we should only convert it into
nanoseconds when we are sure that any scale specified in the file has
been read.

https://bugzilla.gnome.org/show_bug.cgi?id=650258
2011-05-16 08:56:06 +02:00
Mark Nauwelaerts
fc94b78fe1 matroskamux: avoid building index when streamable
... as it will not be written anyway.

Fixes #648937 (?).
2011-05-04 13:12:16 +02:00
David Schleef
bddac50961 avimux,matroskamux: Add stream-format to h264 caps
Fixes #606662.
2011-04-24 18:56:02 -07:00
Tim-Philipp Müller
c2bc6327cd deinterlace, matroska: fix two variable-may-be-used-uninitialized compiler warnings
We use -DG_DISABLE_ASSERT for the pre-releases, which makes these
warnings pop up in cases that were previously covered by g_assert_not_reached()
and the like:
tvtime/greedyh.c:801:14: warning: 'scanline' may be used uninitialized in this function
matroska-mux.c:501:19: warning: 'context' may be used uninitialized in this function
2011-04-16 16:51:32 +01:00
Robert Swain
d596c2e926 matroska: Remove unused but set variables
GCC 4.6.x spits warnings about such variable usage.
2011-04-16 12:40:53 +01:00
David Schleef
41f3b30010 matroskademux: Better calculation of framerate
https://bugzilla.gnome.org/show_bug.cgi?id=647833
2011-04-15 12:27:57 +01:00
Sebastian Dröge
54349be39f matroskaparse: Allow webm and matroska caps and don't leak caps 2011-04-14 13:27:27 +02:00
Tim-Philipp Müller
d3a24dc842 matroskademux: set stream-format=byte-stream on h264 caps if there's no codec data
https://bugzilla.gnome.org/show_bug.cgi?id=606662
2011-04-13 16:47:05 +01:00
Thibault Saunier
b541208b77 android: Make it ready for androgenizer
Remove the android/ top dir
Fixe the Makefile.am to be androgenized

To build gstreamer for android we are now using androgenizer which generates the needed Android.mk files.
Androgenizer can be found here: http://git.collabora.co.uk/?p=user/derek/androgenizer.git
2011-04-11 01:20:11 +02:00
Sebastian Dröge
cea556b75c matroskamux: Add support for A-Law and µ-Law
Fixes bug #646567.
2011-04-05 14:29:59 +02:00
Mark Nauwelaerts
dd19a7edad matroskamux: use running time for synchronization
Fixes #432612.
2011-03-22 20:55:37 +01:00
Sebastian Dröge
5b977c4fec matroska: Mark tag mapping tables as static const 2011-03-16 09:39:20 +01:00
Sebastian Dröge
7db758164d matroskamux: Use ARTIST instead of AUTHOR for GST_TAG_ARTIST 2011-03-16 09:39:20 +01:00
Sebastian Dröge
52aa27f997 matroskademux: Use ARTIST Matroska tag instead of AUTHOR for GST_TAG_ARTIST
AUTHOR only existed in an old version of the spec and ARTIST is
the new replacement for this. We are still reading both to still
be compatible with old files.

Fixes bug #644875.
2011-03-16 09:39:20 +01:00
Andoni Morales Alastruey
0ed0174ea9 matroskamux: return TRUE from sink pad event function for tag events, which are handled
https://bugzilla.gnome.org/show_bug.cgi?id=644730
2011-03-14 17:08:46 +00:00
Edward Hervey
6e1c701502 Revert "Check that collectpads exists before removing pad"
This reverts commit 8e6b876e76.

Depends on a core commit that was reverted
2011-02-21 12:25:19 +01:00
David Schleef
8e6b876e76 Check that collectpads exists before removing pad
The core now calls release pad from finalize, at which point
the collectpads might have already been freed.
2011-02-20 23:46:01 -08:00
David Schleef
e017e14847 matroskaparse: New element
Copied from demux.  Duplicates much code, also some dead code
remaining.
2011-02-17 18:05:43 -08:00
David Schleef
eab982ce60 matroskademux: Earlier debug category initialization 2011-02-17 18:05:43 -08:00
Stefan Kost
8d5be2e8a4 matroskamux: rework _request_new_pad to handle explict req-pad-names
Don't ignore explicit pad-names.
2011-02-16 17:15:28 +02:00
Mark Nauwelaerts
d466f07def matroskademux: avoid sorting NULL array of cluster positions 2011-02-14 17:57:33 +01:00
Mark Nauwelaerts
b70f4b6ffa matroskademux: store cluster positions provided by SeekHead
... and use those, if available, to locate a cluster rather than scanning.
2011-02-10 18:17:31 +01:00
Mark Nauwelaerts
9de84b45bc matroskademux: properly resume cluster scanning
... rather than getting offset tracking messed up, and then likely
failing a subsequent assert.
2011-02-09 16:27:00 +01:00
Ognyan Tonchev
0add79cbf1 matroskamux: don't leak ebml writer caps when re-using matroskamux
https://bugzilla.gnome.org/show_bug.cgi?id=640542
2011-01-26 08:51:04 +00:00
Mark Nauwelaerts
68fc03fd76 matroskademux: pull mode should always report seekable
... as it no longer requires an index, but can seek by scanning as well.
2011-01-24 22:24:28 +01:00
Mark Nauwelaerts
0124302b58 matroskamux: avoid creating caps from string when possible
Fixes #639516.
2011-01-14 16:25:14 +01:00
Tim-Philipp Müller
68fa8f3417 matroska: don't put essential function calls into g_assert()
g_assert() will expand to NOOPs if -DG_DISABLE_ASSERT is passed.
2011-01-07 02:06:51 +00:00
Stefan Kost
a570310cdc matroska-demux: remove unused variables when debug-logging disabled 2011-01-03 20:17:47 +02:00
Tim-Philipp Müller
3a66829087 matroska-demux: increase allowed max. block size for push mode from 10M to 15M
It was an arbitrary limit from the start, meant as a basic sanity check,
so may just as well increase it a little. Would be good to provide
progress reporting while completing the block in any case..

https://bugzilla.gnome.org/show_bug.cgi?id=637060
2010-12-29 23:38:18 +00:00
Tim-Philipp Müller
c8fc90fd37 matroska-demux: assume matroska if no doctype is specified
https://bugzilla.gnome.org/show_bug.cgi?id=638019
2010-12-29 23:09:04 +00:00
Rob Clark
02cb1dd7b5 matroska-demux: add stream-format and alignment properties for h264 2010-12-23 16:12:51 -06:00
Sebastian Dröge
1d74f568a3 matroskademux: Don't use gst_pad_alloc_buffer()
Using this in a demuxer will cause deadlocks if there's
a pad with a pending pad-block downstream, no matter if
there is a queue between the pad or not. Queues pass
bufferalloc downstream from the same thread and only
act as a thread boundary for events and buffers.
2010-12-22 20:01:16 +01:00
Tim-Philipp Müller
331bcfbdfc matroskamux: fix subtitle pad template, we only handle kate for now 2010-12-22 14:14:08 +00:00
Tim-Philipp Müller
d73440cb97 matroska-demux: put unrecognised RIFF format IDs into the unknown caps
Extra info can't hurt. Field names aren't necessarily consistent with
what's used elsewhere though (e.g. avidemux), but then neither are the
caps.

https://bugzilla.gnome.org/show_bug.cgi?id=623178
2010-12-11 14:53:28 +00:00
Andoni Morales Alastruey
fd6bc949c8 matroskamux: try to write timestamps in all the outgoing buffers
Fixes #632654.
2010-12-06 13:01:17 +01:00
Mark Nauwelaerts
b9048fd953 matroskademux: minor cleanups in setting streamheader on caps 2010-12-03 15:50:30 +01:00
Mark Nauwelaerts
7be2ee8710 matroskademux: normalize empty Cues to no Cues
... to trigger indexless seeking.
2010-12-03 15:50:30 +01:00
Sebastian Dröge
d9a1f3d628 matroskamux: Add support for E-AC3 2010-12-02 19:18:02 +01:00
Sebastian Dröge
01c4117037 matroskamux: Add support for DTS 2010-12-02 19:18:02 +01:00
Philip Jägenstedt
7fcd7d8cf2 matroskademux: Remove useless clearing of send_xiph_headers for Dirac
This looks like a mistake when copy-pasting the Theora code.

https://bugzilla.gnome.org/show_bug.cgi?id=632682
2010-10-23 16:10:14 +01:00
Philip Jägenstedt
6cf398cdf3 matroskademux: don't crash if vorbis/theora codec data is missing
Error out properly in this case instead of crashing.

https://bugzilla.gnome.org/show_bug.cgi?id=632682
2010-10-23 14:05:46 +01:00
Mark Nauwelaerts
4085f12058 ac3: demuxers provide framed output 2010-10-14 17:29:26 +02:00
Tim-Philipp Müller
7a8ebc4a79 matroskamux: reduce newsegment event spam and set discont flag where needed
Only send newsegment events with new positions downstream when actually
needed, instead of sending multiple newsegment events with new seek
positions in a row. Also set the discont flag on buffers after a
discontinuity.
2010-10-14 14:00:59 +01:00
Tim-Philipp Müller
84e47e579b matroskamux: set correct buffer offsets after seeks
Re-use the existing 'pos' field maintained by ebml writer to set
buffer offsets. This also makes sure that we set the right offsets
on buffers after a seek (e.g. when writing an index at the end).
2010-10-14 12:48:33 +01:00
Tim-Philipp Müller
6ff3dfe946 matroskamux: don't forward tag events downstream
Don't forward stream-specific tag events downstream (esp. not
before any newsegment event).x
2010-10-14 12:48:00 +01:00
Stefan Kost
d8167e3071 various (gst): add a missing G_PARAM_STATIC_STRINGS flags 2010-10-13 18:00:28 +03:00
Zaheer Abbas Merali
6f0030f701 matroskamux: make buffer offsets a byte count rather than a buffer count 2010-10-13 07:17:24 +01:00
Zaheer Abbas Merali
f012ab67cc matroskamux: set offsets on outgoing buffers 2010-10-10 14:44:43 +01: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
4b76e95abe matroskamux: streamable files need no _finish
Fixes #624455.
2010-07-22 12:18:11 +02:00
Tim-Philipp Müller
819fb47b78 matroskamux: demote WARNING message to LOG level
It's not a warning.
2010-07-20 16:12:21 +01: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
8172c478aa matroskamux: Fix leaking of the streamheader buffers
gst_value_set_buffer() increases the refcount and doesn't
take ownership of the buffer.
2010-06-25 19:40:06 +02:00
Tim-Philipp Müller
19216e7218 matroska, videobox, videofilter: fix compiler warnings when debugging is disabled in gstreamer
Fixes unused variable warnings when GStreamer's debugging system has been disabled.
2010-06-24 16:34:03 +01:00
Sebastian Dröge
968ce701a7 matroskademux: Fix an uninitialized variable compiler warning 2010-06-17 10:44:33 +02:00
Sebastian Dröge
f44e5e630b ebml-read: Zero-sized ints/uints/floats have a value of 0 according to the EBML spec 2010-06-16 21:02:13 +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
Edward Hervey
342543325b matroska: Fix unitialized variable 2010-06-15 17:20:20 +02:00
Zaheer Abbas Merali
e49c31fd25 matroskamux: revert change that set a reserved flag on the Block.
So matroska's Block structure has no keyframe flag, only the SimpleBlock has it.
To detect keyframes in Blocks, it is just the BlockGroup container that needs
to have a ReferenceBlock attached if it is a delta frame in video.
2010-06-14 14:28:53 +01:00
Zaheer Abbas Merali
823a514161 matroskamux: some non-delta buffers were not marked as keyframes 2010-06-10 01:32:15 +02:00
Zaheer Abbas Merali
45f711044f matroskamux: change 2 second limit per cluster
Start cluster at every keyframe or when we would overflow the previous
cluster's relative timestamp field. This would avoid as much as possible
starting clusters at non-keyframes.
2010-06-10 01:32:15 +02:00
Zaheer Abbas Merali
f22c7d0f7c matroskamux: change indexed property to streamable
The property streamable has reverse semantics to indexed.
2010-06-09 15:42:19 +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
bfaeffcfd0 matroskamux: Remove more unneeded warnings 2010-06-01 16:56:32 +01:00
Zaheer Abbas Merali
7fc21317af matroskamux: remove unneeded warning 2010-06-01 16:54:03 +01:00
Zaheer Abbas Merali
d73cecd8c0 matroskamux: remove unneeded debug statement 2010-06-01 16:49:14 +01:00
Zaheer Abbas Merali
8c165b49a7 matroskamux: change is-live property to indexed 2010-06-01 16:43:04 +01: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
Zaheer Abbas Merali
ec23b22d29 matroskamux: set delta unit on all buffers except cluster start ones 2010-06-01 16:43:04 +01:00
Zaheer Abbas Merali
d3daa12473 matroskamux: store caps and set on buffers rather than using pad caps 2010-06-01 16:43:03 +01:00
Zaheer Abbas Merali
b4e6fcd051 matroskamux: make sure pads caps are set before any buffers pushed. 2010-06-01 16:43:03 +01:00
Zaheer Abbas Merali
7c402d5866 matroskamux: add streamheaders 2010-06-01 16:43:03 +01:00
Zaheer Abbas Merali
d0bf310876 matroskamux: no need to set cache twice 2010-06-01 16:43:03 +01:00
Xavier Queralt
40eda471a1 Do not create a SeekHeader, Cues, .. when doing live 2010-06-01 16:43:03 +01:00
Xavier Queralt
032d9b90ff Add is-live property 2010-06-01 16:43:02 +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
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