2005-09-15 Thomas Vander Stichele <thomas at apestaart dot org>
+ * 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 <thomas at apestaart dot org>
+
* common/gstdoc-scangobj:
* common/gtk-doc-plugins.mak:
* docs/libs/Makefile.am:
-Subproject commit 161ba917f65c0961ef173061bf44d4e746feaba3
+Subproject commit c491c61170e77dcd4fb5ffc656ac2b721c5c2641
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.
<SECTION>
<FILE>element-theoraenc</FILE>
GstTheoraEnc
+GstTheoraEncClass
<TITLE>theoraenc</TITLE>
<SUBSECTION Standard>
-GstTheoraEncClass
</SECTION>
<SECTION>
<FILE>element-videotestsrc</FILE>
<TITLE>videotestsrc</TITLE>
+GstVideoTestSrc
<SUBSECTION Standard>
GstVideoTestSrcClass
</SECTION>
-
+<SECTION>
<FILE>element-volume</FILE>
-GstVolume
<TITLE>volume</TITLE>
+GstVolume
<SUBSECTION Standard>
GstVolumeClass
</SECTION>
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)
--- /dev/null
+/* GStreamer
+ * Copyright (C) 2004 Wim Taymans <wim@fluendo.com>
+ *
+ * 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 <gst/gst.h>
+#include <theora/theora.h>
+
+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__ */
+
# include "config.h"
#endif
-#include <gst/gst.h>
-#include <theora/theora.h>
+#include "gsttheoraenc.h"
#include <string.h>
#include <gst/tag/tag.h>
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)
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
*/
/**
+ * SECTION:element-vorbisenc
+ * @see_also: vorbisdec, oggmux
+ *
+ * <refsect2>
+ * <para>
+ * This element encodes raw float audio into a Vorbis stream.
+ * <ulink url="http://www.vorbis.com/">Vorbis</ulink> is a royalty-free
+ * audio codec maintained by the <ulink url="http://www.xiph.org/">Xiph.org
+ * Foundation</ulink>.
+ * </para>
+ * <title>Example pipelines</title>
+ * <para>
+ * Encode a test sine signal to Ogg/Vorbis. Note that the resulting file
+ * will be really small because a sine signal compresses very well.
+ * </para>
+ * <programlisting>
+ * gst-launch -v sinesrc num-buffers=100 ! audioconvert ! vorbisenc ! oggmux ! filesink location=sinesrc.ogg
+ * </programlisting>
+ * <para>
+ * Record from a sound card using ALSA and encode to Ogg/Vorbis.
+ * </para>
+ * <programlisting>
+ * gst-launch -v alsasrc ! audioconvert ! vorbisenc ! oggmux ! filesink location=alsasrc.ogg
+ * </programlisting>
+ * </refsect2>
+ */
+
+/**
* SECTION:vorbisenc
* @short_description: an encoder that encodes to Ogg/Vorbis
* @see_also: oggdemux