Commit graph

51 commits

Author SHA1 Message Date
Sebastian Dröge cced65ee21 matroskamux: Add new property to offset all streams to start at zero
This takes the timestamp of the earliest stream and offsets it so that
it starts at 0. Some software (VLC, ffmpeg-based) does not properly
handle Matroska files that start at timestamps much bigger than zero.

Closes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/449
2019-05-29 11:53:02 +00:00
Seungha Yang 53fedc43ae matroska: Remove white space 2019-05-01 14:28:36 +00:00
Martin Kelly be05515da7 matroskamux: don't store used UIDs
Currently, whenever we generate a 128-bit UID, we store it in a list and
return 0 if we ever encounter a collision. This is so mathematically
improbable that it's not worth checking for, so we can save memory and
time by not tracking the UID. Even if a collision happened, a list of
only 10 UIDs would be unlikely to detect it.

This article has a good description of how improbable a collision is:
https://en.wikipedia.org/wiki/Universally_unique_identifier#Collisions

https://bugzilla.gnome.org/show_bug.cgi?id=797086
2018-09-06 14:14:56 -04:00
fengalin a6702a76d5 matroska: re-activate and update TOC support
TOC support in mastroskamux has been deactivated for a couple of years. This commit updates it to recent GstToc evolutions and introduces toc unit tests for both matroska-mux and matroska-demux.

There are two UIDs for Chapters in Matroska's specifications:
- The ChapterUID is a mandatory unsigned integer which internally refers to a given chapter. Except for title & language which use dedicated fields, this UID can also be used to add tags to the Chapter. The tags come in a separate section of the container.
- The ChapterStringUID is an optional UTF-8 string which also uniquely refers to a chapter but from an external perspective. It can act as a "WebVTT cue identifier" which "can be used to reference a specific cue, for example from script or CSS".

During muxing, the ChapterUID is generated and checked for unicity, while the ChapterStringUID receives the user defined UID. In order to be able to refer to chapters from the tags section, we maintain an internal Toc tree with the generated ChapterUID.

When demuxing, the ChapterStringUIDs (if available) are assigned to the GstTocEntries UIDs and an internal toc mimicking the toc is used to keep track of the ChapterUIDs and match the tags with the appropriate GstTocEntries.

https://bugzilla.gnome.org/show_bug.cgi?id=790686
2017-12-15 16:14:43 +02:00
Nicola Murino 1bbdfa8738 matroskamux: add properties to control cluster duration
https://bugzilla.gnome.org/show_bug.cgi?id=784971
2017-07-18 10:08:33 +03:00
Sebastian Dröge ca9b6b55e6 matroskamux: Create a TIME segment when creating streamable output
Related to https://bugzilla.gnome.org/show_bug.cgi?id=754435 which
does the same for flvmux.
2015-10-11 11:37:51 +01:00
Nicola Murino c4e542de69 matroskamux: Remove duration accumulation logic
Duration accumulation can cause rounding errors and generate wrong
duration with different buffers that share the same timestamp.

https://bugzilla.gnome.org/show_bug.cgi?id=745192
2015-03-04 11:37:48 +01:00
Thiago Santos 7772a25fdc matroskamux: store and write stream tags
Separate global from stream tags storage and write them to the
appropriate tags entry in the output
2015-02-02 20:07:13 -03:00
Per x Johansson 46bc1677a4 matroskamux: Fix constantly growing used uid list
Moves the used uid list to the class to avoid having it grow forever.

https://bugzilla.gnome.org/show_bug.cgi?id=723269
2014-01-30 11:59:28 -03:00
Reynaldo H. Verdejo Pinochet 1cb31eeacc matroskamux: Add context flag for WebM
WebM has a couple of specific requirements we need to handle.
Idea is to set this flag once and just rely on mux->is_webm
at run time instead of repeatedly figuring this out from
GST_MATROSKA_DOCTYPE_WEBM (which requires a strcmp()).
2013-10-06 09:54:28 -07:00
Tim-Philipp Müller 230cf41cc9 Fix FSF address
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-04 00:07:18 +00:00
Mark Nauwelaerts 67e168aef4 collectpads2: rename to collectpads 2012-04-17 15:14:27 +02:00
Stefan Sauer 50bc831c91 Merge branch '0.10'
Conflicts:
	gst/matroska/matroska-demux.c
	gst/matroska/matroska-mux.c
	gst/matroska/matroska-read-common.c
	gst/matroska/matroska-read-common.h
2012-04-02 23:22:01 +02:00
Alexander Saprykin 113ba4ac3c matroska: add GstToc support for muxer 2012-04-02 22:11:51 +02: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
Mark Nauwelaerts 0845a3718a matroskamux: additional buffer handling cleanup 2011-12-19 17:44:43 +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
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
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
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
Zaheer Abbas Merali 8c165b49a7 matroskamux: change is-live property to indexed 2010-06-01 16:43:04 +01:00
Xavier Queralt 032d9b90ff Add is-live property 2010-06-01 16:43:02 +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 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 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 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
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
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
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
Stefan Kost 9cf73bdd8f Update and add documentation for plugins with deps (ext).
Link to properties. Correct titles for examples. Document a few trivial cases. Keep lists in section file and docs/plugins/Makefile.am alphabetically ordered. Fix warnings that gtk-doc points out.
2009-01-28 18:05:09 +02:00
Mark Nauwelaerts 85c6c25264 gst/matroska/matroska-mux.*: Remove internal taglist and fully use tagsetter interface.
Original commit message from CVS:
* gst/matroska/matroska-mux.c: (gst_matroska_mux_reset),
(gst_matroska_mux_handle_sink_event), (gst_matroska_mux_finish):
* gst/matroska/matroska-mux.h:
Remove internal taglist and fully use tagsetter interface.
2009-01-06 17:48:10 +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
Sebastian Dröge 25e2770edf gst/matroska/matroska-mux.*: Don't write another SeekHead which indexes all Clusters to the end of the file. This isn...
Original commit message from CVS:
* gst/matroska/matroska-mux.c: (gst_matroska_mux_reset),
(gst_matroska_mux_start), (gst_matroska_mux_finish),
(gst_matroska_mux_write_data):
* gst/matroska/matroska-mux.h:
Don't write another SeekHead which indexes all Clusters to the end of
the file. This isn't useful for anything and just increases filesize.
2008-06-15 15:29:29 +00:00
Wouter Cloetens 0a3ae38bf0 gst/matroska/matroska-mux.*: Keep track of first and last timestamps for each incoming stream, so we can calculate th...
Original commit message from CVS:
Based on patch by: Wouter Cloetens  <wouter at mind be>
* gst/matroska/matroska-mux.c: (gst_matroska_mux_video_pad_setcaps),
(gst_matroska_mux_request_new_pad), (gst_matroska_mux_release_pad),
(gst_matroska_mux_finish), (gst_matroska_mux_collected):
* gst/matroska/matroska-mux.h:
Keep track of first and last timestamps for each incoming stream,
so we can calculate the total duration for live sources and other
input where we can't query the duration from the start or where
there's no constant framerate from which we can deduce the
duration; also use calculated/observed duration if it is bigger
than the previously queried duration. Furthermore, use
gst_pad_query_peer_duration() and take into account that it may
return TRUE but still a duration of CLOCK_TIME_NONE, which easily
screws up comparisons when using unsigned integers. Fixes #504081.
2008-01-08 19:57:23 +00:00
Mark Nauwelaerts 5c446dc4f5 gst/matroska/matroska-mux.*: Add basic tag writing support; implement releasing pads (#374658).
Original commit message from CVS:
Patch by: Mark Nauwelaerts  <manauw at skynet be>
* gst/matroska/matroska-mux.c: (gst_matroska_mux_add_interfaces),
(gst_matroska_mux_class_init), (gst_matroska_pad_free),
(gst_matroska_mux_reset), (gst_matroska_mux_handle_sink_event),
(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/matroska-mux.h:
Add basic tag writing support; implement releasing pads (#374658).
2006-11-15 12:08:20 +00:00
Stefan Kost 1def669c0e Fix more gobject macros: obj<->klass, GstXXX<->GstXXXClass
Original commit message from CVS:
* ext/aalib/gstaasink.h:
* ext/annodex/gstcmmldec.h:
* ext/cairo/gsttimeoverlay.h:
* ext/dv/gstdvdec.h:
* ext/dv/gstdvdemux.h:
* ext/esd/esdmon.h:
* ext/esd/esdsink.h:
* ext/flac/gstflacenc.h:
* ext/gconf/gstgconfaudiosink.h:
* ext/gconf/gstgconfaudiosrc.h:
* ext/gconf/gstgconfvideosink.h:
* ext/gconf/gstgconfvideosrc.h:
* ext/gdk_pixbuf/gstgdkanimation.h:
* ext/gdk_pixbuf/pixbufscale.h:
* ext/hal/gsthalaudiosink.h:
* ext/hal/gsthalaudiosrc.h:
* ext/jpeg/gstjpegenc.h:
* ext/jpeg/gstsmokedec.h:
* ext/jpeg/gstsmokeenc.h:
* ext/libcaca/gstcacasink.h:
* ext/libmng/gstmngdec.h:
* ext/libmng/gstmngenc.h:
* ext/libpng/gstpngdec.h:
* ext/libpng/gstpngenc.h:
* ext/raw1394/gstdv1394src.h:
* ext/speex/gstspeexenc.h:
* gst/autodetect/gstautoaudiosink.h:
* gst/autodetect/gstautovideosink.h:
* gst/avi/gstavidemux.h:
* gst/cutter/gstcutter.h:
* gst/debug/efence.h:
* gst/debug/gstnavigationtest.h:
* gst/debug/gstnavseek.h:
* gst/flx/gstflxdec.h:
* gst/goom/gstgoom.h:
* gst/icydemux/gsticydemux.h:
* gst/id3demux/gstid3demux.h:
* gst/law/alaw-decode.h:
* gst/law/alaw-encode.h:
* gst/law/mulaw-decode.h:
* gst/law/mulaw-encode.h:
* gst/matroska/matroska-mux.h:
* gst/median/gstmedian.h:
* gst/oldcore/gstaggregator.h:
* gst/oldcore/gstfdsink.h:
* gst/oldcore/gstmd5sink.h:
* gst/oldcore/gstmultifilesrc.h:
* gst/oldcore/gstpipefilter.h:
* gst/oldcore/gstshaper.h:
* gst/oldcore/gststatistics.h:
* gst/rtp/gstasteriskh263.h:
* gst/rtp/gstrtpL16depay.h:
* gst/rtp/gstrtpL16pay.h:
* gst/rtp/gstrtpamrdepay.h:
* gst/rtp/gstrtpamrpay.h:
* gst/rtp/gstrtpdepay.h:
* gst/rtp/gstrtpgsmdepay.h:
* gst/rtp/gstrtpgsmpay.h:
* gst/rtp/gstrtph263pay.h:
* gst/rtp/gstrtph263pdepay.h:
* gst/rtp/gstrtph263ppay.h:
* gst/rtp/gstrtpmp4gpay.h:
* gst/rtp/gstrtpmp4vdepay.h:
* gst/rtp/gstrtpmp4vpay.h:
* gst/rtp/gstrtpmpadepay.h:
* gst/rtp/gstrtpmpapay.h:
* gst/rtp/gstrtppcmadepay.h:
* gst/rtp/gstrtppcmapay.h:
* gst/rtp/gstrtppcmudepay.h:
* gst/rtp/gstrtppcmupay.h:
* gst/rtp/gstrtpspeexdepay.h:
* gst/rtp/gstrtpspeexpay.h:
* gst/rtsp/gstrtpdec.h:
* gst/rtsp/gstrtspsrc.h:
* gst/smpte/gstsmpte.h:
* gst/udp/gstdynudpsink.h:
* gst/udp/gstmultiudpsink.h:
* gst/udp/gstudpsink.h:
* gst/udp/gstudpsrc.h:
* gst/videofilter/gstvideobalance.h:
* gst/videofilter/gstvideoflip.h:
* sys/oss/gstossdmabuffer.h:
* sys/oss/gstossmixerelement.h:
* sys/oss/gstosssink.h:
* sys/oss/gstosssrc.h:
* sys/osxvideo/osxvideosink.h:
* sys/sunaudio/gstsunaudiomixer.h:
* sys/sunaudio/gstsunaudiosink.h:
* sys/ximage/gstximagesrc.h:
Fix more gobject macros: obj<->klass, GstXXX<->GstXXXClass
2006-06-01 21:07:26 +00:00
Thomas Vander Stichele 3ecf433432 expand tabs
Original commit message from CVS:
expand tabs
2005-12-06 19:44:58 +00:00
Tim-Philipp Müller 0166570e09 gst/matroska/: Add SimpleBlock support to matroska demuxer and muxer (part of
Original commit message from CVS:
Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>
* gst/matroska/matroska-demux.c: (gst_matroska_demux_init_stream),
(gst_matroska_demux_parse_info),
(gst_matroska_demux_parse_blockgroup_or_simpleblock),
(gst_matroska_demux_parse_cluster):
* gst/matroska/matroska-ids.h:
* gst/matroska/matroska-mux.c: (gst_matroska_mux_class_init),
(gst_matroska_mux_init), (gst_matroska_mux_start),
(gst_matroska_mux_create_buffer_header),
(gst_matroska_mux_write_data), (gst_matroska_mux_set_property),
(gst_matroska_mux_get_property):
* gst/matroska/matroska-mux.h:
Add SimpleBlock support to matroska demuxer and muxer (part of
Matroska v2). (#319731)
2005-10-28 15:32:48 +00:00
Tim-Philipp Müller 22b9a5cd43 Port matroska muxer to 0.9 (#318847).
Original commit message from CVS:
Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>
* configure.ac:
* gst/matroska/Makefile.am:
* gst/matroska/ebml-ids.h:
* gst/matroska/ebml-write.c:
* gst/matroska/ebml-write.h:
* gst/matroska/matroska-ids.h:
* gst/matroska/matroska-mux.c:
* gst/matroska/matroska-mux.h:
* gst/matroska/matroska.c: (plugin_init):
Port matroska muxer to 0.9 (#318847).
2005-10-14 12:43:30 +00:00
Arwed v. Merkatz 814b3d25be Write meta-seek information (seek heads).
Original commit message from CVS:
Write meta-seek information (seek heads).
2004-09-09 17:54:26 +00:00
Arwed v. Merkatz 56a8d7c680 Write multiple blocks/frames per cluster.
Original commit message from CVS:
Write multiple blocks/frames per cluster.
2004-09-09 15:40:06 +00:00
Arwed v. Merkatz ece91164c8 Mux video/x-divx and video/x-xvid in VFW compatibility mode so it actually works
Original commit message from CVS:
Mux video/x-divx and video/x-xvid in VFW compatibility mode so it actually works
2004-08-27 17:01:12 +00:00
Arwed v. Merkatz 356279a65b Fix byte order reversion for writing ebml floats.
Original commit message from CVS:
Fix byte order reversion for writing ebml floats.
Write segment duration and muxing application in matroska.
Added TTA codec to the list of supported codecs to mux into matroska.
2004-08-26 11:10:16 +00:00
Johan Dahlin 5acffea623 *.h: Revert indenting
Original commit message from CVS:
* *.h: Revert indenting
2004-03-15 16:32:54 +00:00
Thomas Vander Stichele 5d25c00e4b gst-indent
Original commit message from CVS:
gst-indent
2004-03-14 22:34:33 +00:00
David Schleef ce51f6173c Merge CAPS branch
Original commit message from CVS:
Merge CAPS branch
2003-12-22 01:47:09 +00:00