summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/libav/Makefile.am8
-rw-r--r--ext/libav/gstavauddec.c (renamed from ext/libav/gstavdec.c)80
-rw-r--r--ext/libav/gstavauddec.h107
-rw-r--r--ext/libav/gstavaudenc.c (renamed from ext/libav/gstavenc.c)2
-rw-r--r--ext/libav/gstavaudenc.h (renamed from ext/libav/gstavenc.h)2
-rw-r--r--ext/libav/gstavviddec.c63
-rw-r--r--ext/libav/gstavviddec.h92
-rw-r--r--ext/libav/gstavvidenc.h2
8 files changed, 211 insertions, 145 deletions
diff --git a/ext/libav/Makefile.am b/ext/libav/Makefile.am
index a5928ac..52f197e 100644
--- a/ext/libav/Makefile.am
+++ b/ext/libav/Makefile.am
@@ -10,9 +10,9 @@ libgstlibav_la_SOURCES = gstav.c \
gstavprotocol.c \
gstavcodecmap.c \
gstavutils.c \
- gstavenc.c \
+ gstavaudenc.c \
gstavvidenc.c \
- gstavdec.c \
+ gstavauddec.c \
gstavviddec.c \
gstavcfg.c \
gstavdemux.c \
@@ -40,7 +40,9 @@ noinst_HEADERS = \
gstav.h \
gstavcodecmap.h \
gstavutils.h \
- gstavenc.h \
+ gstavauddec.h \
+ gstavviddec.h \
+ gstavaudenc.h \
gstavvidenc.h \
gstavcfg.h \
gstavpipe.h
diff --git a/ext/libav/gstavdec.c b/ext/libav/gstavauddec.c
index 93a7808..66e59dc 100644
--- a/ext/libav/gstavdec.c
+++ b/ext/libav/gstavauddec.c
@@ -31,77 +31,10 @@
#include "gstav.h"
#include "gstavcodecmap.h"
#include "gstavutils.h"
+#include "gstavauddec.h"
GST_DEBUG_CATEGORY_EXTERN (GST_CAT_PERFORMANCE);
-typedef struct _GstFFMpegAudDec GstFFMpegAudDec;
-
-#define MAX_TS_MASK 0xff
-
-/* for each incomming buffer we keep all timing info in a structure like this.
- * We keep a circular array of these structures around to store the timing info.
- * The index in the array is what we pass as opaque data (to pictures) and
- * pts (to parsers) so that ffmpeg can remember them for us. */
-typedef struct
-{
- gint idx;
- GstClockTime dts;
- GstClockTime pts;
- GstClockTime duration;
- gint64 offset;
-} GstTSInfo;
-
-struct _GstFFMpegAudDec
-{
- GstElement element;
-
- /* We need to keep track of our pads, so we do so here. */
- GstPad *srcpad;
- GstPad *sinkpad;
-
- /* decoding */
- AVCodecContext *context;
- gboolean opened;
-
- /* current output format */
- gint channels, samplerate, depth;
- GstAudioChannelPosition ffmpeg_layout[64], gst_layout[64];
-
- gboolean discont;
- gboolean clear_ts;
-
- /* for tracking DTS/PTS */
- GstClockTime next_out;
-
- /* parsing */
- gboolean turnoff_parser; /* used for turning off aac raw parsing
- * See bug #566250 */
- AVCodecParserContext *pctx;
- GstBuffer *pcache;
-
- /* clipping segment */
- GstSegment segment;
-
- GstTSInfo ts_info[MAX_TS_MASK + 1];
- gint ts_idx;
-
- /* reverse playback queue */
- GList *queued;
-
- /* prevent reopening the decoder on GST_EVENT_CAPS when caps are same as last time. */
- GstCaps *last_caps;
-};
-
-typedef struct _GstFFMpegAudDecClass GstFFMpegAudDecClass;
-
-struct _GstFFMpegAudDecClass
-{
- GstElementClass parent_class;
-
- AVCodec *in_plugin;
- GstPadTemplate *srctempl, *sinktempl;
-};
-
#define GST_TS_INFO_NONE &ts_info_none
static const GstTSInfo ts_info_none = { -1, -1, -1, -1 };
@@ -129,17 +62,6 @@ gst_ts_info_get (GstFFMpegAudDec * dec, gint idx)
return &dec->ts_info[idx];
}
-#define GST_TYPE_FFMPEGDEC \
- (gst_ffmpegauddec_get_type())
-#define GST_FFMPEGDEC(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_FFMPEGDEC,GstFFMpegAudDec))
-#define GST_FFMPEGAUDDEC_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_FFMPEGDEC,GstFFMpegAudDecClass))
-#define GST_IS_FFMPEGDEC(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_FFMPEGDEC))
-#define GST_IS_FFMPEGAUDDEC_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_FFMPEGDEC))
-
/* A number of function prototypes are given so we can refer to them later. */
static void gst_ffmpegauddec_base_init (GstFFMpegAudDecClass * klass);
static void gst_ffmpegauddec_class_init (GstFFMpegAudDecClass * klass);
diff --git a/ext/libav/gstavauddec.h b/ext/libav/gstavauddec.h
new file mode 100644
index 0000000..1b38430
--- /dev/null
+++ b/ext/libav/gstavauddec.h
@@ -0,0 +1,107 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+#ifndef __GST_FFMPEGAUDDEC_H__
+#define __GST_FFMPEGAUDDEC_H__
+
+G_BEGIN_DECLS
+
+#include <gst/gst.h>
+#include <libavcodec/avcodec.h>
+
+#define MAX_TS_MASK 0xff
+
+/* for each incomming buffer we keep all timing info in a structure like this.
+ * We keep a circular array of these structures around to store the timing info.
+ * The index in the array is what we pass as opaque data (to pictures) and
+ * pts (to parsers) so that ffmpeg can remember them for us. */
+typedef struct
+{
+ gint idx;
+ GstClockTime dts;
+ GstClockTime pts;
+ GstClockTime duration;
+ gint64 offset;
+} GstTSInfo;
+
+typedef struct _GstFFMpegAudDec GstFFMpegAudDec;
+struct _GstFFMpegAudDec
+{
+ GstElement element;
+
+ /* We need to keep track of our pads, so we do so here. */
+ GstPad *srcpad;
+ GstPad *sinkpad;
+
+ /* decoding */
+ AVCodecContext *context;
+ gboolean opened;
+
+ /* current output format */
+ gint channels, samplerate, depth;
+ GstAudioChannelPosition ffmpeg_layout[64], gst_layout[64];
+
+ gboolean discont;
+ gboolean clear_ts;
+
+ /* for tracking DTS/PTS */
+ GstClockTime next_out;
+
+ /* parsing */
+ gboolean turnoff_parser; /* used for turning off aac raw parsing
+ * See bug #566250 */
+ AVCodecParserContext *pctx;
+ GstBuffer *pcache;
+
+ /* clipping segment */
+ GstSegment segment;
+
+ GstTSInfo ts_info[MAX_TS_MASK + 1];
+ gint ts_idx;
+
+ /* reverse playback queue */
+ GList *queued;
+
+ /* prevent reopening the decoder on GST_EVENT_CAPS when caps are same as last time. */
+ GstCaps *last_caps;
+};
+
+typedef struct _GstFFMpegAudDecClass GstFFMpegAudDecClass;
+
+struct _GstFFMpegAudDecClass
+{
+ GstElementClass parent_class;
+
+ AVCodec *in_plugin;
+ GstPadTemplate *srctempl, *sinktempl;
+};
+
+#define GST_TYPE_FFMPEGDEC \
+ (gst_ffmpegauddec_get_type())
+#define GST_FFMPEGDEC(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_FFMPEGDEC,GstFFMpegAudDec))
+#define GST_FFMPEGAUDDEC_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_FFMPEGDEC,GstFFMpegAudDecClass))
+#define GST_IS_FFMPEGDEC(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_FFMPEGDEC))
+#define GST_IS_FFMPEGAUDDEC_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_FFMPEGDEC))
+
+G_END_DECLS
+
+#endif
diff --git a/ext/libav/gstavenc.c b/ext/libav/gstavaudenc.c
index 26a7a30..ccffbb9 100644
--- a/ext/libav/gstavenc.c
+++ b/ext/libav/gstavaudenc.c
@@ -35,7 +35,7 @@
#include "gstav.h"
#include "gstavcodecmap.h"
#include "gstavutils.h"
-#include "gstavenc.h"
+#include "gstavaudenc.h"
#define DEFAULT_AUDIO_BITRATE 128000
diff --git a/ext/libav/gstavenc.h b/ext/libav/gstavaudenc.h
index 4665303..370ac13 100644
--- a/ext/libav/gstavenc.h
+++ b/ext/libav/gstavaudenc.h
@@ -26,7 +26,9 @@
G_BEGIN_DECLS
+#include <gst/gst.h>
#include <gst/base/gstadapter.h>
+#include <libavcodec/avcodec.h>
typedef struct _GstFFMpegAudEnc GstFFMpegAudEnc;
diff --git a/ext/libav/gstavviddec.c b/ext/libav/gstavviddec.c
index 6b7d6ce..852f133 100644
--- a/ext/libav/gstavviddec.c
+++ b/ext/libav/gstavviddec.c
@@ -35,73 +35,12 @@
#include "gstav.h"
#include "gstavcodecmap.h"
#include "gstavutils.h"
+#include "gstavviddec.h"
GST_DEBUG_CATEGORY_EXTERN (GST_CAT_PERFORMANCE);
-typedef struct _GstFFMpegVidDec GstFFMpegVidDec;
-
#define MAX_TS_MASK 0xff
-struct _GstFFMpegVidDec
-{
- GstVideoDecoder parent;
-
- GstVideoCodecState *input_state;
- GstVideoCodecState *output_state;
-
- /* decoding */
- AVCodecContext *context;
- AVFrame *picture;
- gboolean opened;
-
- /* current context */
- enum PixelFormat ctx_pix_fmt;
- gint ctx_width;
- gint ctx_height;
- gint ctx_par_n;
- gint ctx_par_d;
- gint ctx_ticks;
- gint ctx_time_d;
- gint ctx_time_n;
- gint ctx_interlaced;
-
- guint8 *padded;
- guint padded_size;
-
- gboolean current_dr; /* if direct rendering is enabled */
-
- /* some properties */
- enum AVDiscard skip_frame;
- gint lowres;
- gboolean direct_rendering;
- gboolean debug_mv;
- int max_threads;
-
- gboolean is_realvideo;
-
- GstCaps *last_caps;
-};
-
-typedef struct _GstFFMpegVidDecClass GstFFMpegVidDecClass;
-
-struct _GstFFMpegVidDecClass
-{
- GstVideoDecoderClass parent_class;
-
- AVCodec *in_plugin;
-};
-
-#define GST_TYPE_FFMPEGDEC \
- (gst_ffmpegviddec_get_type())
-#define GST_FFMPEGDEC(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_FFMPEGDEC,GstFFMpegVidDec))
-#define GST_FFMPEGVIDDEC_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_FFMPEGDEC,GstFFMpegVidDecClass))
-#define GST_IS_FFMPEGDEC(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_FFMPEGDEC))
-#define GST_IS_FFMPEGVIDDEC_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_FFMPEGDEC))
-
#define DEFAULT_LOWRES 0
#define DEFAULT_SKIPFRAME 0
#define DEFAULT_DIRECT_RENDERING TRUE
diff --git a/ext/libav/gstavviddec.h b/ext/libav/gstavviddec.h
new file mode 100644
index 0000000..47db3b9
--- /dev/null
+++ b/ext/libav/gstavviddec.h
@@ -0,0 +1,92 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+#ifndef __GST_FFMPEGVIDDEC_H__
+#define __GST_FFMPEGVIDDEC_H__
+
+G_BEGIN_DECLS
+
+#include <gst/gst.h>
+#include <gst/video/video.h>
+#include <gst/video/gstvideodecoder.h>
+#include <libavcodec/avcodec.h>
+
+typedef struct _GstFFMpegVidDec GstFFMpegVidDec;
+struct _GstFFMpegVidDec
+{
+ GstVideoDecoder parent;
+
+ GstVideoCodecState *input_state;
+ GstVideoCodecState *output_state;
+
+ /* decoding */
+ AVCodecContext *context;
+ AVFrame *picture;
+ gboolean opened;
+
+ /* current context */
+ enum PixelFormat ctx_pix_fmt;
+ gint ctx_width;
+ gint ctx_height;
+ gint ctx_par_n;
+ gint ctx_par_d;
+ gint ctx_ticks;
+ gint ctx_time_d;
+ gint ctx_time_n;
+ gint ctx_interlaced;
+
+ guint8 *padded;
+ guint padded_size;
+
+ gboolean current_dr; /* if direct rendering is enabled */
+
+ /* some properties */
+ enum AVDiscard skip_frame;
+ gint lowres;
+ gboolean direct_rendering;
+ gboolean debug_mv;
+ int max_threads;
+
+ gboolean is_realvideo;
+
+ GstCaps *last_caps;
+};
+
+typedef struct _GstFFMpegVidDecClass GstFFMpegVidDecClass;
+
+struct _GstFFMpegVidDecClass
+{
+ GstVideoDecoderClass parent_class;
+
+ AVCodec *in_plugin;
+};
+
+#define GST_TYPE_FFMPEGDEC \
+ (gst_ffmpegviddec_get_type())
+#define GST_FFMPEGDEC(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_FFMPEGDEC,GstFFMpegVidDec))
+#define GST_FFMPEGVIDDEC_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_FFMPEGDEC,GstFFMpegVidDecClass))
+#define GST_IS_FFMPEGDEC(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_FFMPEGDEC))
+#define GST_IS_FFMPEGVIDDEC_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_FFMPEGDEC))
+
+G_END_DECLS
+
+#endif
diff --git a/ext/libav/gstavvidenc.h b/ext/libav/gstavvidenc.h
index 98a980a..857f9e4 100644
--- a/ext/libav/gstavvidenc.h
+++ b/ext/libav/gstavvidenc.h
@@ -26,7 +26,9 @@
G_BEGIN_DECLS
+#include <gst/gst.h>
#include <gst/video/gstvideoencoder.h>
+#include <libavcodec/avcodec.h>
typedef struct _GstFFMpegVidEnc GstFFMpegVidEnc;