Commit 8ced1b35 authored by Jonathan Matthew's avatar Jonathan Matthew Committed by Sebastian Dröge

ext/flac/: Port flactag to 0.10, add documentation for it and clean it up a bit.

Original commit message from CVS:
Based on a patch by: Jonathan Matthew <notverysmart at gmail dot com>
* ext/flac/Makefile.am:
* ext/flac/gstflac.c: (plugin_init):
* ext/flac/gstflactag.c: (gst_flac_tag_setup_interfaces),
(gst_flac_tag_base_init), (gst_flac_tag_class_init),
(gst_flac_tag_dispose), (gst_flac_tag_init),
(gst_flac_tag_sink_setcaps), (gst_flac_tag_chain),
(gst_flac_tag_change_state):
* ext/flac/gstflactag.h:
Port flactag to 0.10, add documentation for it and clean it up a bit.
Fixes bug #413841.
* 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.hierarchy:
* docs/plugins/gst-plugins-good-plugins.interfaces:
* docs/plugins/gst-plugins-good-plugins.prerequisites:
* docs/plugins/inspect/plugin-flac.xml:
* ext/flac/gstflacdec.c: (gst_flac_dec_base_init):
* ext/flac/gstflacdec.h:
* ext/flac/gstflacenc.c: (gst_flac_enc_base_init):
* ext/flac/gstflacenc.h:
Add flactag and flacenc to the documentation and mark
the private parts of the flacdec instance structure as private.
Also use gst_element_class_set_details_simple() in flacdec and
flacenc.
parent dfd580b2
2008-08-06 Sebastian Dröge <sebastian.droege@collabora.co.uk>
Based on a patch by: Jonathan Matthew <notverysmart at gmail dot com>
* ext/flac/Makefile.am:
* ext/flac/gstflac.c: (plugin_init):
* ext/flac/gstflactag.c: (gst_flac_tag_setup_interfaces),
(gst_flac_tag_base_init), (gst_flac_tag_class_init),
(gst_flac_tag_dispose), (gst_flac_tag_init),
(gst_flac_tag_sink_setcaps), (gst_flac_tag_chain),
(gst_flac_tag_change_state):
* ext/flac/gstflactag.h:
Port flactag to 0.10, add documentation for it and clean it up a bit.
Fixes bug #413841.
* 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.hierarchy:
* docs/plugins/gst-plugins-good-plugins.interfaces:
* docs/plugins/gst-plugins-good-plugins.prerequisites:
* docs/plugins/inspect/plugin-flac.xml:
* ext/flac/gstflacdec.c: (gst_flac_dec_base_init):
* ext/flac/gstflacdec.h:
* ext/flac/gstflacenc.c: (gst_flac_enc_base_init):
* ext/flac/gstflacenc.h:
Add flactag and flacenc to the documentation and mark
the private parts of the flacdec instance structure as private.
Also use gst_element_class_set_details_simple() in flacdec and
flacenc.
2008-08-06 Stefan Kost <ensonic@users.sf.net>
* gst/qtdemux/qtdemux.c:
......
......@@ -84,6 +84,8 @@ EXTRA_HFILES = \
$(top_srcdir)/ext/dv/gstdvdemux.h \
$(top_srcdir)/ext/esd/esdsink.h \
$(top_srcdir)/ext/flac/gstflacdec.h \
$(top_srcdir)/ext/flac/gstflacenc.h \
$(top_srcdir)/ext/flac/gstflactag.h \
$(top_srcdir)/ext/gdk_pixbuf/gstgdkpixbufsink.h \
$(top_srcdir)/ext/hal/gsthalaudiosink.h \
$(top_srcdir)/ext/hal/gsthalaudiosrc.h \
......
......@@ -46,6 +46,8 @@
<xi:include href="xml/element-equalizer-nbands.xml" />
<xi:include href="xml/element-esdsink.xml" />
<xi:include href="xml/element-flacdec.xml" />
<xi:include href="xml/element-flacenc.xml" />
<xi:include href="xml/element-flactag.xml" />
<xi:include href="xml/element-gamma.xml" />
<xi:include href="xml/element-gdkpixbufsink.xml" />
<xi:include href="xml/element-goom.xml" />
......
......@@ -538,6 +538,34 @@ gst_flac_dec_get_type
LEGACY_FLAC
</SECTION>
<SECTION>
<FILE>element-flacenc</FILE>
<TITLE>flacenc</TITLE>
GstFlacEnc
<SUBSECTION Standard>
GstFlacEncClass
GST_TYPE_FLAC_ENC
GST_FLAC_ENC
GST_FLAC_ENC_CLASS
GST_IS_FLAC_ENC
GST_IS_FLAC_ENC_CLASS
gst_flac_enc_get_type
</SECTION>
<SECTION>
<FILE>element-flactag</FILE>
<TITLE>flactag</TITLE>
GstFlacTag
<SUBSECTION Standard>
GstFlacTagClass
GST_TYPE_FLAC_TAG
GST_FLAC_TAG
GST_FLAC_TAG_CLASS
GST_IS_FLAC_TAG
GST_IS_FLAC_TAG_CLASS
gst_flac_tag_get_type
</SECTION>
<SECTION>
<FILE>element-gamma</FILE>
<TITLE>gamma</TITLE>
......
......@@ -11,34 +11,89 @@ GObject
GstElement
GstBin
GstPipeline
GstRTSPSrc
GstRgVolume
GstAutoVideoSink
GstAutoAudioSink
GstHalAudioSink
GstHalAudioSrc
GstGConfVideoSink
GstGConfVideoSrc
GstSwitchSink
GstGConfAudioSink
GstGConfAudioSrc
GstHalAudioSink
GstHalAudioSrc
GstAviDemux
GstAviMux
GstAviSubtitle
GstGoom2k1
GstEbmlRead
GstMatroskaDemux
GstMatroskaMux
GstFlxDec
GstAutoVideoSink
GstAutoAudioSink
GstRgVolume
GstRTSPSrc
GstPngDec
GstPngEnc
GstJpegEnc
GstJpegDec
GstSmokeEnc
GstSmokeDec
GstBaseSink
GstBaseAudioSink
GstAudioSink
GstEsdSink
GstPulseSink
GstOssSink
GstAASink
GstCACASink
GstVideoSink
GstGdkPixbufSink
GstShout2send
GstTest
GstMultiUDPSink
GstUDPSink
GstDynUDPSink
GstMultiFileSink
GstCmmlEnc
GstCmmlDec
GstWavpackParse
GstWavpackDec
GstWavpackEnc
GstBaseSrc
GstPushSrc
GstDV1394Src
GstSoupHTTPSrc
GstBaseAudioSrc
GstAudioSrc
GstPulseSrc
GstOssSrc
GstCddaBaseSrc
GstCdioCddaSrc
GstV4l2Src
GstXImageSrc
GstUDPSrc
GstMultiFileSrc
GstPulseMixer
GstFlacEnc
GstFlacDec
GstFlacTag
GstCairoTextOverlay
GstBaseTransform
GstCairoTimeOverlay
GstPixbufScale
GstVideoCrop
GstAudioFilter
GstSpectrum
GstIirEqualizer
GstIirEqualizerNBands
GstIirEqualizer3Bands
GstIirEqualizer10Bands
GstAudioInvert
GstAudioKaraoke
GstAudioAmplify
GstAudioDynamic
GstAudioChebLimit
GstAudioChebBand
GstAudioWSincLimit
GstAudioWSincBand
GstVideoBox
GstLevel
GstVideoFilter
GstSMPTEAlpha
GstNavigationtest
GstGamma
GstVideoFlip
GstVideoBalance
GstVideoFlip
GstSMPTEAlpha
GstEdgeTV
GstAgingTV
GstDiceTV
......@@ -52,77 +107,46 @@ GObject
GstProgressReport
GstTagInject
GstAudioPanorama
GstAudioFilter
GstAudioInvert
GstAudioKaraoke
GstAudioAmplify
GstAudioDynamic
GstAudioChebLimit
GstAudioChebBand
GstAudioWSincLimit
GstAudioWSincBand
GstIirEqualizer
GstIirEqualizerNBands
GstIirEqualizer3Bands
GstIirEqualizer10Bands
GstSpectrum
GstAlphaColor
GstAlpha
GstRgAnalysis
GstRgLimiter
GstLevel
GstPixbufScale
GstCairoTimeOverlay
GstMonoscope
GstAuParse
GstAlphaColor
GstAlpha
GstDVDemux
GstDVDec
GstGdkPixbuf
GstSpeexEnc
GstSpeexDec
GstTagLibMux
GstId3v2Mux
GstApev2Mux
GstOssMixerElement
GstCutter
GstAviDemux
GstAviMux
GstAviSubtitle
GstGoom2k1
GstALawEnc
GstALawDec
GstMuLawEnc
GstMuLawDec
GstWavEnc
GstWavParse
GstICYDemux
GstVideoMixer
GstBaseSrc
GstPushSrc
GstMultiFileSrc
GstUDPSrc
GstXImageSrc
GstV4l2Src
GstBaseAudioSrc
GstAudioSrc
GstOssSrc
GstPulseSrc
GstDV1394Src
GstSoupHTTPSrc
GstCddaBaseSrc
GstCdioCddaSrc
GstBaseSink
GstMultiFileSink
GstMultiUDPSink
GstUDPSink
GstDynUDPSink
GstTest
GstBaseAudioSink
GstAudioSink
GstOssSink
GstPulseSink
GstEsdSink
GstAASink
GstVideoSink
GstGdkPixbufSink
GstCACASink
GstShout2send
GstInterleave
GstDeinterleave
GstRTPDec
GstSMPTE
GstRndBufferSize
GstEFence
GstFlxDec
GstTagDemux
GstApeDemux
GstID3Demux
GstGoom
GstAuParse
GstSMPTE
GstMultipartDemux
GstMultipartMux
GstCutter
GstWavParse
GstQTDemux
GstInterleave
GstDeinterleave
GstRTPDepay
GstBaseRTPDepayload
GstRtpXQTDepay
GstRtpAC3Depay
GstRTPDVDepay
GstRTPiLBCDepay
......@@ -147,12 +171,7 @@ GObject
GstRtpTheoraDepay
GstRtpVorbisDepay
GstRtpVRawDepay
GstMuLawEnc
GstMuLawDec
GstALawEnc
GstALawDec
GstICYDemux
GstRTPDepay
GstRtpXQTDepay
GstBaseRTPPayload
GstRTPDVPay
GstBaseRTPAudioPayload
......@@ -177,31 +196,13 @@ GObject
GstRtpVorbisPay
GstRtpVRawPay
GstAsteriskh263
GstWavEnc
GstOssMixerElement
GstDVDemux
GstDVDec
GstSpeexEnc
GstSpeexDec
GstCmmlEnc
GstCmmlDec
GstGdkPixbuf
GstWavpackParse
GstWavpackDec
GstWavpackEnc
GstPngDec
GstPngEnc
GstCairoTextOverlay
GstTagLibMux
GstId3v2Mux
GstApev2Mux
GstFlacEnc
GstFlacDec
GstPulseMixer
GstJpegEnc
GstJpegDec
GstSmokeEnc
GstSmokeDec
GstRTPDec
GstEbmlRead
GstMatroskaDemux
GstMatroskaMux
GstMonoscope
GstGoom
GstQTDemux
GstBus
GstTask
GstClock
......@@ -211,23 +212,21 @@ GObject
GstRegistry
GstRingBuffer
GstSignalObject
GstColorBalanceChannel
GstTunerNorm
GstTunerChannel
GstMixerTrack
GstMixerOptions
GstCmmlTagStream
GstCmmlTagHead
GstCmmlTagClip
GdkPixbuf
GstTunerNorm
GstTunerChannel
GstColorBalanceChannel
GInterface
GTypePlugin
GstChildProxy
GstURIHandler
GstTagSetter
GstPropertyProbe
GstImplementsInterface
GstColorBalance
GstMixer
GstTagSetter
GstTuner
GstColorBalance
GstVideoOrientation
GstPropertyProbe
GstMixer
GstBin GstChildProxy
GstPipeline GstChildProxy
GstRTSPSrc GstChildProxy GstURIHandler
GstRgVolume GstChildProxy
GstAutoVideoSink GstChildProxy
GstAutoAudioSink GstChildProxy
GstHalAudioSink GstChildProxy
GstHalAudioSrc GstChildProxy
GstGConfVideoSink GstChildProxy
GstGConfVideoSrc GstChildProxy
GstSwitchSink GstChildProxy
GstGConfAudioSink GstChildProxy
GstGConfAudioSrc GstChildProxy
GstHalAudioSink GstChildProxy
GstHalAudioSrc GstChildProxy
GstAviMux GstTagSetter
GstMatroskaMux GstTagSetter
GstVideoBalance GstImplementsInterface GstColorBalance
GstIirEqualizer GstChildProxy
GstIirEqualizerNBands GstChildProxy
GstIirEqualizer3Bands GstChildProxy
GstIirEqualizer10Bands GstChildProxy
GstVideoMixer GstChildProxy
GstUDPSrc GstURIHandler
GstV4l2Src GstImplementsInterface GstColorBalance GstTuner GstVideoOrientation GstPropertyProbe
GstOssSrc GstImplementsInterface GstMixer
GstPulseSrc GstImplementsInterface GstMixer
GstAutoVideoSink GstChildProxy
GstAutoAudioSink GstChildProxy
GstRgVolume GstChildProxy
GstRTSPSrc GstChildProxy GstURIHandler
GstShout2send GstTagSetter
GstUDPSink GstURIHandler
GstDV1394Src GstURIHandler GstPropertyProbe
GstSoupHTTPSrc GstURIHandler
GstPulseSrc GstImplementsInterface GstMixer
GstOssSrc GstImplementsInterface GstMixer
GstCddaBaseSrc GstURIHandler
GstCdioCddaSrc GstURIHandler
GstUDPSink GstURIHandler
GstShout2send GstTagSetter
GstOssMixerElement GstImplementsInterface GstMixer
GstV4l2Src GstPropertyProbe GstImplementsInterface GstTuner GstColorBalance GstVideoOrientation
GstUDPSrc GstURIHandler
GstPulseMixer GstPropertyProbe GstImplementsInterface GstMixer
GstFlacEnc GstTagSetter
GstFlacTag GstTagSetter
GstIirEqualizer GstChildProxy
GstIirEqualizerNBands GstChildProxy
GstIirEqualizer3Bands GstChildProxy
GstIirEqualizer10Bands GstChildProxy
GstVideoBalance GstImplementsInterface GstColorBalance
GstSpeexEnc GstTagSetter
GstTagLibMux GstTagSetter
GstId3v2Mux GstTagSetter
GstApev2Mux GstTagSetter
GstFlacEnc GstTagSetter
GstPulseMixer GstImplementsInterface GstMixer GstPropertyProbe
GstOssMixerElement GstImplementsInterface GstMixer
GstAviMux GstTagSetter
GstVideoMixer GstChildProxy
GstMatroskaMux GstTagSetter
GstChildProxy GstObject
GstTagSetter GstObject GstElement
GstImplementsInterface GstObject GstElement
GstColorBalance GstObject GstImplementsInterface GstElement
GstMixer GstObject GstImplementsInterface GstElement
GstTagSetter GstObject GstElement
GstTuner GstObject GstImplementsInterface GstElement
GstColorBalance GstObject GstImplementsInterface GstElement
GstVideoOrientation GstObject GstImplementsInterface GstElement
GstMixer GstObject GstImplementsInterface GstElement
......@@ -3,10 +3,10 @@
<description>The FLAC Lossless compressor Codec</description>
<filename>../../ext/flac/.libs/libgstflac.so</filename>
<basename>libgstflac.so</basename>
<version>0.10.9</version>
<version>0.10.9.1</version>
<license>LGPL</license>
<source>gst-plugins-good</source>
<package>GStreamer Good Plug-ins source release</package>
<package>GStreamer Good Plug-ins CVS/prerelease</package>
<origin>Unknown package origin</origin>
<elements>
<element>
......@@ -17,16 +17,16 @@
<author>Wim Taymans &lt;wim@fluendo.com&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>audio/x-flac</details>
<details>audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int){ 8, 16, 32 }, depth=(int)[ 4, 32 ], rate=(int)[ 1, 655350 ], channels=(int)[ 1, 8 ]</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int){ 8, 16, 32 }, depth=(int){ 8, 12, 16, 20, 24, 32 }, rate=(int)[ 8000, 96000 ], channels=(int)[ 1, 8 ]</details>
<details>audio/x-flac</details>
</caps>
</pads>
</element>
......@@ -36,6 +36,27 @@
<class>Codec/Encoder/Audio</class>
<description>Encodes audio with the FLAC lossless audio encoder</description>
<author>Wim Taymans &lt;wim.taymans@chello.be&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)8, depth=(int)8, rate=(int)[ 1, 655350 ], channels=(int)[ 1, 8 ]; audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int){ 12, 16 }, rate=(int)[ 1, 655350 ], channels=(int)[ 1, 8 ]; audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int){ 20, 24 }, rate=(int)[ 1, 655350 ], channels=(int)[ 1, 8 ]</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>audio/x-flac</details>
</caps>
</pads>
</element>
<element>
<name>flactag</name>
<longname>FLAC tagger</longname>
<class>Formatter/Metadata</class>
<description>Rewrite tags in a FLAC file</description>
<author>Christophe Fergeau &lt;teuf@gnome.org&gt;</author>
<pads>
<caps>
<name>src</name>
......@@ -47,7 +68,7 @@
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)[ 8000, 96000 ], channels=(int)[ 1, 2 ]</details>
<details>audio/x-flac</details>
</caps>
</pads>
</element>
......
plugin_LTLIBRARIES = libgstflac.la
libgstflac_la_SOURCES = gstflac.c gstflacdec.c gstflacenc.c
libgstflac_la_SOURCES = gstflac.c gstflacdec.c gstflacenc.c gstflactag.c
libgstflac_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
libgstflac_la_LIBADD = \
$(GST_PLUGINS_BASE_LIBS) -lgsttag-$(GST_MAJORMINOR) \
......@@ -8,4 +8,4 @@ libgstflac_la_LIBADD = \
$(GST_BASE_LIBS) $(GST_LIBS) $(FLAC_LIBS)
libgstflac_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
noinst_HEADERS = gstflacenc.h gstflacdec.h
noinst_HEADERS = gstflacenc.h gstflacdec.h gstflactag.h
......@@ -23,7 +23,7 @@
#include "gstflacenc.h"
#include "gstflacdec.h"
/* #include "gstflactag.h" */
#include "gstflactag.h"
#include <gst/tag/tag.h>
#include <gst/gst-i18n-plugin.h>
......@@ -43,11 +43,9 @@ plugin_init (GstPlugin * plugin)
if (!gst_element_register (plugin, "flacdec", GST_RANK_PRIMARY,
GST_TYPE_FLAC_DEC))
return FALSE;
#if 0
if (!gst_element_register (plugin, "flactag", GST_RANK_PRIMARY,
gst_flac_tag_get_type ()))
return FALSE;
#endif
gst_tag_register_musicbrainz_tags ();
......
......@@ -105,15 +105,7 @@ GST_DEBUG_CATEGORY_STATIC (flacdec_debug);
static GstPadTemplate *src_template, *sink_template;
static const GstElementDetails flacdec_details =
GST_ELEMENT_DETAILS ("FLAC audio decoder",
"Codec/Decoder/Audio",
"Decodes FLAC lossless audio streams",
"Wim Taymans <wim@fluendo.com>");
static void gst_flac_dec_finalize (GObject * object);
static void gst_flac_dec_loop (GstPad * pad);
static GstStateChangeReturn gst_flac_dec_change_state (GstElement * element,
......@@ -237,7 +229,9 @@ gst_flac_dec_base_init (gpointer g_class)
GST_PAD_ALWAYS, raw_caps);
gst_element_class_add_pad_template (element_class, sink_template);
gst_element_class_add_pad_template (element_class, src_template);
gst_element_class_set_details (element_class, &flacdec_details);
gst_element_class_set_details_simple (element_class, "FLAC audio decoder",
"Codec/Decoder/Audio",
"Decodes FLAC lossless audio streams", "Wim Taymans <wim@fluendo.com>");
GST_DEBUG_CATEGORY_INIT (flacdec_debug, "flacdec", 0, "flac decoder");
}
......
......@@ -47,6 +47,8 @@ typedef struct _GstFlacDecClass GstFlacDecClass;
struct _GstFlacDec {
GstElement element;
/* < private > */
#if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT < 8
FLAC__SeekableStreamDecoder *seekable_decoder; /* for pull-based operation */
#else
......
......@@ -77,12 +77,6 @@ static const GstAudioChannelPosition channel_positions[8][8] = {
GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT}
};
static const GstElementDetails flacenc_details =
GST_ELEMENT_DETAILS ("FLAC audio encoder",
"Codec/Encoder/Audio",
"Encodes audio with the FLAC lossless audio encoder",
"Wim Taymans <wim.taymans@chello.be>");
#define FLAC_SINK_CAPS \
"audio/x-raw-int, " \
"endianness = (int) BYTE_ORDER, " \
......@@ -261,7 +255,10 @@ gst_flac_enc_base_init (gpointer g_class)
gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&sink_factory));
gst_element_class_set_details (element_class, &flacenc_details);
gst_element_class_set_details_simple (element_class, "FLAC audio encoder",
"Codec/Encoder/Audio",
"Encodes audio with the FLAC lossless audio encoder",
"Wim Taymans <wim.taymans@chello.be>");
GST_DEBUG_CATEGORY_INIT (flacenc_debug, "flacenc", 0,
"Flac encoding element");
......
......@@ -45,6 +45,8 @@ typedef struct _GstFlacEncClass GstFlacEncClass;
struct _GstFlacEnc {
GstElement element;
/* < private > */
GstPad *sinkpad;
GstPad *srcpad;
......
This diff is collapsed.
/* GStreamer
* Copyright (C) 2003 Christophe Fergeau <teuf@gnome.org>
* Copyright (C) 2008 Jonathan Matthew <jonathan@d14n.org>
* Copyright (C) 2008 Sebastian Dröge <sebastian.droege@collabora.co.uk>
*
* gstflactag.c: plug-in for reading/modifying vorbis comments in flac files
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef GST_FLAC_TAG_H
#define GST_FLAC_TAG_H
#include <gst/gst.h>
#include <gst/base/gstadapter.h>
#define GST_TYPE_FLAC_TAG (gst_flac_tag_get_type())
#define GST_FLAC_TAG(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_FLAC_TAG, GstFlacTag))
#define GST_FLAC_TAG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_FLAC_TAG, GstFlacTag))
#define GST_IS_FLAC_TAG(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_FLAC_TAG))
#define GST_IS_FLAC_TAG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_FLAC_TAG))
typedef struct _GstFlacTag GstFlacTag;
typedef struct _GstFlacTagClass GstFlacTagClass;
typedef enum
{
GST_FLAC_TAG_STATE_INIT,
GST_FLAC_TAG_STATE_METADATA_BLOCKS,
GST_FLAC_TAG_STATE_METADATA_NEXT_BLOCK,
GST_FLAC_TAG_STATE_WRITING_METADATA_BLOCK,
GST_FLAC_TAG_STATE_VC_METADATA_BLOCK,
GST_FLAC_TAG_STATE_ADD_VORBIS_COMMENT,
GST_FLAC_TAG_STATE_AUDIO_DATA
}
GstFlacTagState;
struct _GstFlacTag
{
GstElement element;
/* < private > */
/* pads */
GstPad *sinkpad;
GstPad *srcpad;
GstFlacTagState state;
GstAdapter *adapter;
GstBuffer *vorbiscomment;
GstTagList *tags;
guint metadata_block_size;
gboolean metadata_last_block;
};
struct _GstFlacTagClass
{
GstElementClass parent_class;
};
GType gst_flac_tag_get_type (void);
#endif /* GST_FLAC_TAG_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment