av: Put declarations in header files and rename audio codec files
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 19 Nov 2012 09:29:00 +0000 (10:29 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 19 Nov 2012 09:30:37 +0000 (10:30 +0100)
ext/libav/Makefile.am
ext/libav/gstavauddec.c [moved from ext/libav/gstavdec.c with 95% similarity]
ext/libav/gstavauddec.h [new file with mode: 0644]
ext/libav/gstavaudenc.c [moved from ext/libav/gstavenc.c with 99% similarity]
ext/libav/gstavaudenc.h [moved from ext/libav/gstavenc.h with 97% similarity]
ext/libav/gstavviddec.c
ext/libav/gstavviddec.h [new file with mode: 0644]
ext/libav/gstavvidenc.h

index a5928ac..52f197e 100644 (file)
@@ -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
similarity index 95%
rename from ext/libav/gstavdec.c
rename to ext/libav/gstavauddec.c
index 93a7808..66e59dc 100644 (file)
 #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 (file)
index 0000000..1b38430
--- /dev/null
@@ -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
similarity index 99%
rename from ext/libav/gstavenc.c
rename to ext/libav/gstavaudenc.c
index 26a7a30..ccffbb9 100644 (file)
@@ -35,7 +35,7 @@
 #include "gstav.h"
 #include "gstavcodecmap.h"
 #include "gstavutils.h"
-#include "gstavenc.h"
+#include "gstavaudenc.h"
 
 #define DEFAULT_AUDIO_BITRATE 128000
 
similarity index 97%
rename from ext/libav/gstavenc.h
rename to ext/libav/gstavaudenc.h
index 4665303..370ac13 100644 (file)
@@ -26,7 +26,9 @@
 
 G_BEGIN_DECLS
 
+#include <gst/gst.h>
 #include <gst/base/gstadapter.h>
+#include <libavcodec/avcodec.h>
 
 typedef struct _GstFFMpegAudEnc GstFFMpegAudEnc;
 
index 6b7d6ce..852f133 100644 (file)
 #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 (file)
index 0000000..47db3b9
--- /dev/null
@@ -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
index 98a980a..857f9e4 100644 (file)
@@ -26,7 +26,9 @@
 
 G_BEGIN_DECLS
 
+#include <gst/gst.h>
 #include <gst/video/gstvideoencoder.h>
+#include <libavcodec/avcodec.h>
 
 typedef struct _GstFFMpegVidEnc GstFFMpegVidEnc;