From 70a7708a8b1a81e6a6496434a77fc86e793c4331 Mon Sep 17 00:00:00 2001 From: Thomas Vander Stichele Date: Thu, 15 Sep 2005 15:28:36 +0000 Subject: [PATCH] pick up signals and args for vorbis; add some docs for vorbis Original commit message from CVS: * common/gtk-doc-plugins.mak: * docs/plugins/Makefile.am: * docs/plugins/gst-plugins-base-plugins-sections.txt: * ext/theora/Makefile.am: * ext/theora/gsttheoraenc.h: * ext/theora/theoraenc.c: * ext/vorbis/vorbisenc.c: pick up signals and args for vorbis; add some docs for vorbis --- ChangeLog | 11 +++ common | 2 +- docs/plugins/Makefile.am | 3 + .../gst-plugins-base-plugins-sections.txt | 7 +- ext/theora/Makefile.am | 2 + ext/theora/gsttheoraenc.h | 95 +++++++++++++++++++ ext/theora/theoraenc.c | 75 +-------------- ext/vorbis/vorbisenc.c | 28 ++++++ 8 files changed, 149 insertions(+), 74 deletions(-) create mode 100644 ext/theora/gsttheoraenc.h diff --git a/ChangeLog b/ChangeLog index 25ade21a8..5b1357e21 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2005-09-15 Thomas Vander Stichele + + * common/gtk-doc-plugins.mak: + * docs/plugins/Makefile.am: + * docs/plugins/gst-plugins-base-plugins-sections.txt: + * ext/theora/Makefile.am: + * ext/theora/gsttheoraenc.h: + * ext/theora/theoraenc.c: + * ext/vorbis/vorbisenc.c: + pick up signals and args for vorbis; add some docs for vorbis + 2005-09-15 Thomas Vander Stichele * common/gstdoc-scangobj: diff --git a/common b/common index 161ba917f..c491c6117 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 161ba917f65c0961ef173061bf44d4e746feaba3 +Subproject commit c491c61170e77dcd4fb5ffc656ac2b721c5c2641 diff --git a/docs/plugins/Makefile.am b/docs/plugins/Makefile.am index 3b65defaf..4b366e38e 100644 --- a/docs/plugins/Makefile.am +++ b/docs/plugins/Makefile.am @@ -79,6 +79,9 @@ IGNORE_CFILES = utils.c mem.c imgconvert.c EXTRA_HFILES = \ $(top_srcdir)/gst/tcp/gstmultifdsink.h \ $(top_srcdir)/gst/tcp/gsttcpserversink.h \ + $(top_srcdir)/gst/videotestsrc/gstvideotestsrc.h \ + $(top_srcdir)/ext/theora/gsttheoraenc.h \ + $(top_srcdir)/gst/volume/gstvolume.h \ $(top_srcdir)/ext/vorbis/vorbisenc.h # Images to copy into HTML directory. diff --git a/docs/plugins/gst-plugins-base-plugins-sections.txt b/docs/plugins/gst-plugins-base-plugins-sections.txt index f28c4343a..1bbf6dfb5 100644 --- a/docs/plugins/gst-plugins-base-plugins-sections.txt +++ b/docs/plugins/gst-plugins-base-plugins-sections.txt @@ -37,23 +37,24 @@ GstTCPServerSinkClass
element-theoraenc GstTheoraEnc +GstTheoraEncClass theoraenc -GstTheoraEncClass
element-videotestsrc videotestsrc +GstVideoTestSrc GstVideoTestSrcClass
- +
element-volume -GstVolume volume +GstVolume GstVolumeClass
diff --git a/ext/theora/Makefile.am b/ext/theora/Makefile.am index e42c86ed3..c49a4297c 100644 --- a/ext/theora/Makefile.am +++ b/ext/theora/Makefile.am @@ -1,5 +1,7 @@ plugin_LTLIBRARIES = libgsttheora.la +noinst_HEADERS = gsttheoraenc.h + libgsttheora_la_SOURCES = theora.c theoraenc.c theoradec.c libgsttheora_la_CFLAGS = $(GST_CFLAGS) $(THEORA_CFLAGS) libgsttheora_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) diff --git a/ext/theora/gsttheoraenc.h b/ext/theora/gsttheoraenc.h new file mode 100644 index 000000000..2dd113ad5 --- /dev/null +++ b/ext/theora/gsttheoraenc.h @@ -0,0 +1,95 @@ +/* GStreamer + * Copyright (C) 2004 Wim Taymans + * + * 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_THEORAENC_H__ +#define __GST_THEORAENC_H__ + +#include +#include + +G_BEGIN_DECLS + +#define GST_TYPE_THEORA_ENC \ + (gst_theora_enc_get_type()) +#define GST_THEORA_ENC(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_THEORA_ENC,GstTheoraEnc)) +#define GST_THEORA_ENC_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_THEORA_ENC,GstTheoraEnc)) +#define GST_IS_THEORA_ENC(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_THEORA_ENC)) +#define GST_IS_THEORA_ENC_CLASS(obj) \ + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_THEORA_ENC)) + +typedef struct _GstTheoraEnc GstTheoraEnc; +typedef struct _GstTheoraEncClass GstTheoraEncClass; + +typedef enum +{ + BORDER_NONE, + BORDER_BLACK, + BORDER_MIRROR +} +GstTheoraEncBorderMode; + +struct _GstTheoraEnc +{ + GstElement element; + + GstPad *sinkpad; + GstPad *srcpad; + + ogg_stream_state to; + + theora_state state; + theora_info info; + theora_comment comment; + + gboolean center; + GstTheoraEncBorderMode border; + + gint video_bitrate; /* bitrate target for Theora video */ + gint video_quality; /* Theora quality selector 0 = low, 63 = high */ + gboolean quick; + gboolean keyframe_auto; + gint keyframe_freq; + gint keyframe_force; + gint keyframe_threshold; + gint keyframe_mindistance; + gint noise_sensitivity; + gint sharpness; + + gint info_width, info_height; + gint width, height; + gint offset_x, offset_y; + gdouble fps; + + guint packetno; + guint64 bytes_out; + guint64 initial_delay; +}; + +struct _GstTheoraEncClass +{ + GstElementClass parent_class; +}; + +G_END_DECLS + +#endif /* __GST_THEORAENC_H__ */ + diff --git a/ext/theora/theoraenc.c b/ext/theora/theoraenc.c index 3ff12d637..b86da72f2 100644 --- a/ext/theora/theoraenc.c +++ b/ext/theora/theoraenc.c @@ -39,36 +39,13 @@ # include "config.h" #endif -#include -#include +#include "gsttheoraenc.h" #include #include GST_DEBUG_CATEGORY (theoraenc_debug); #define GST_CAT_DEFAULT theoraenc_debug -#define GST_TYPE_THEORA_ENC \ - (gst_theora_enc_get_type()) -#define GST_THEORA_ENC(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_THEORA_ENC,GstTheoraEnc)) -#define GST_THEORA_ENC_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_THEORA_ENC,GstTheoraEnc)) -#define GST_IS_THEORA_ENC(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_THEORA_ENC)) -#define GST_IS_THEORA_ENC_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_THEORA_ENC)) - -typedef struct _GstTheoraEnc GstTheoraEnc; -typedef struct _GstTheoraEncClass GstTheoraEncClass; - -typedef enum -{ - BORDER_NONE, - BORDER_BLACK, - BORDER_MIRROR -} -GstTheoraEncBorderMode; - #define GST_TYPE_BORDER_MODE (gst_border_mode_get_type()) static GType gst_border_mode_get_type (void) @@ -88,56 +65,14 @@ gst_border_mode_get_type (void) return border_mode_type; } -struct _GstTheoraEnc -{ - GstElement element; - - GstPad *sinkpad; - GstPad *srcpad; - - ogg_stream_state to; - - theora_state state; - theora_info info; - theora_comment comment; - - gboolean center; - GstTheoraEncBorderMode border; - - gint video_bitrate; /* bitrate target for Theora video */ - gint video_quality; /* Theora quality selector 0 = low, 63 = high */ - gboolean quick; - gboolean keyframe_auto; - gint keyframe_freq; - gint keyframe_force; - gint keyframe_threshold; - gint keyframe_mindistance; - gint noise_sensitivity; - gint sharpness; - - gint info_width, info_height; - gint width, height; - gint offset_x, offset_y; - gdouble fps; - - guint packetno; - guint64 bytes_out; - guint64 initial_delay; -}; - -struct _GstTheoraEncClass -{ - GstElementClass parent_class; -}; - #define ROUND_UP_2(x) (((x) + 1) & ~1) #define ROUND_UP_4(x) (((x) + 3) & ~3) #define ROUND_UP_8(x) (((x) + 7) & ~7) -#define THEORA_DEF_CENTER TRUE -#define THEORA_DEF_BORDER BORDER_BLACK -#define THEORA_DEF_BITRATE 0 -#define THEORA_DEF_QUALITY 16 +#define THEORA_DEF_CENTER TRUE +#define THEORA_DEF_BORDER BORDER_BLACK +#define THEORA_DEF_BITRATE 0 +#define THEORA_DEF_QUALITY 16 #define THEORA_DEF_QUICK TRUE #define THEORA_DEF_KEYFRAME_AUTO TRUE #define THEORA_DEF_KEYFRAME_FREQ 64 diff --git a/ext/vorbis/vorbisenc.c b/ext/vorbis/vorbisenc.c index 75d8177f9..a4eb94dfc 100644 --- a/ext/vorbis/vorbisenc.c +++ b/ext/vorbis/vorbisenc.c @@ -17,6 +17,34 @@ * Boston, MA 02111-1307, USA. */ +/** + * SECTION:element-vorbisenc + * @see_also: vorbisdec, oggmux + * + * + * + * This element encodes raw float audio into a Vorbis stream. + * Vorbis is a royalty-free + * audio codec maintained by the Xiph.org + * Foundation. + * + * Example pipelines + * + * Encode a test sine signal to Ogg/Vorbis. Note that the resulting file + * will be really small because a sine signal compresses very well. + * + * + * gst-launch -v sinesrc num-buffers=100 ! audioconvert ! vorbisenc ! oggmux ! filesink location=sinesrc.ogg + * + * + * Record from a sound card using ALSA and encode to Ogg/Vorbis. + * + * + * gst-launch -v alsasrc ! audioconvert ! vorbisenc ! oggmux ! filesink location=alsasrc.ogg + * + * + */ + /** * SECTION:vorbisenc * @short_description: an encoder that encodes to Ogg/Vorbis -- 2.34.1