source clean-up and read the result of decoding audio.
authorKitae Kim <kt920.kim@samsung.com>
Mon, 16 Sep 2013 06:08:00 +0000 (15:08 +0900)
committerKitae Kim <kt920.kim@samsung.com>
Mon, 16 Sep 2013 10:48:13 +0000 (19:48 +0900)
Those sample_rate, channels and etc. values are required to
negotiate with caps.

Change-Id: I21780bf4c9303f239b48ea8de6b465f0d48f2013
Signed-off-by: Kitae Kim <kt920.kim@samsung.com>
src/gstmaru.c
src/gstmarudec.c
src/gstmaruenc.c
src/gstmaruinterface.h
src/gstmarumem.c
src/gstmaruutils.c

index 0407765..32c80a1 100644 (file)
 
 GST_DEBUG_CATEGORY (maru_debug);
 
-#define GST_TYPE_EMULDEC \
+#define GST_TYPE_MARUDEC \
   (gst_maru_dec_get_type())
-#define GST_EMULDEC(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_EMULDEC,GstEmulDec))
-#define GST_EMULDEC_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_EMULDEC,GstEmulDecClass))
-#define GST_IS_EMULDEC(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_EMULDEC))
-#define GST_IS_EMULDEC_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_EMULDEC))
+#define GST_MARUDEC(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_MARUDEC,GstMaruDec))
+#define GST_MARUDEC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_MARUDEC,GstMaruDecClass))
+#define GST_IS_MARUDEC(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_MARUDEC))
+#define GST_IS_MARUDEC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_MARUDEC))
 
 gboolean gst_marudec_register (GstPlugin *plugin, GList *element);
 gboolean gst_maruenc_register (GstPlugin *plugin, GList *element);
index 70bd6b6..026fa39 100644 (file)
@@ -49,7 +49,7 @@ static const GstTSInfo ts_info_none = { -1, -1, -1, -1 };
 
 #define MAX_TS_MASK 0xff
 
-typedef struct _GstEmulDec
+typedef struct _GstMaruDec
 {
   GstElement element;
 
@@ -103,23 +103,23 @@ typedef struct _GstEmulDec
   /* reverse playback queue */
   GList *queued;
 
-} GstEmulDec;
+} GstMaruDec;
 
-typedef struct _GstEmulDecClass
+typedef struct _GstMaruDecClass
 {
   GstElementClass parent_class;
 
   CodecElement *codec;
   GstPadTemplate *sinktempl;
   GstPadTemplate *srctempl;
-} GstEmulDecClass;
+} GstMaruDecClass;
 
 
 static GstElementClass *parent_class = NULL;
 
-static void gst_marudec_base_init (GstEmulDecClass *klass);
-static void gst_marudec_class_init (GstEmulDecClass *klass);
-static void gst_marudec_init (GstEmulDec *marudec);
+static void gst_marudec_base_init (GstMaruDecClass *klass);
+static void gst_marudec_class_init (GstMaruDecClass *klass);
+static void gst_marudec_init (GstMaruDec *marudec);
 static void gst_marudec_finalize (GObject *object);
 
 static gboolean gst_marudec_setcaps (GstPad *pad, GstCaps *caps);
@@ -133,18 +133,18 @@ static gboolean gst_marudec_src_event (GstPad *pad, GstEvent *event);
 static GstStateChangeReturn gst_marudec_change_state (GstElement *element,
                                                 GstStateChange transition);
 
-static gboolean gst_marudec_negotiate (GstEmulDec *dec, gboolean force);
+static gboolean gst_marudec_negotiate (GstMaruDec *dec, gboolean force);
 
-static gint gst_marudec_frame (GstEmulDec *marudec, guint8 *data,
+static gint gst_marudec_frame (GstMaruDec *marudec, guint8 *data,
                               guint size, gint *got_data,
                               const GstTSInfo *dec_info, gint64 in_offset, GstFlowReturn *ret);
 
-static gboolean gst_marudec_open (GstEmulDec *marudec);
-static int gst_marudec_close (GstEmulDec *marudec);
+static gboolean gst_marudec_open (GstMaruDec *marudec);
+static int gst_marudec_close (GstMaruDec *marudec);
 
 
 static const GstTSInfo *
-gst_ts_info_store (GstEmulDec *dec, GstClockTime timestamp,
+gst_ts_info_store (GstMaruDec *dec, GstClockTime timestamp,
     GstClockTime duration, gint64 offset)
 {
   gint idx = dec->ts_idx;
@@ -158,7 +158,7 @@ gst_ts_info_store (GstEmulDec *dec, GstClockTime timestamp,
 }
 
 static const GstTSInfo *
-gst_ts_info_get (GstEmulDec *dec, gint idx)
+gst_ts_info_get (GstMaruDec *dec, gint idx)
 {
   if (G_UNLIKELY (idx < 0 || idx > MAX_TS_MASK))
     return GST_TS_INFO_NONE;
@@ -167,13 +167,13 @@ gst_ts_info_get (GstEmulDec *dec, gint idx)
 }
 
 static void
-gst_marudec_reset_ts (GstEmulDec *marudec)
+gst_marudec_reset_ts (GstMaruDec *marudec)
 {
   marudec->next_out = GST_CLOCK_TIME_NONE;
 }
 
 static void
-gst_marudec_update_qos (GstEmulDec *marudec, gdouble proportion,
+gst_marudec_update_qos (GstMaruDec *marudec, gdouble proportion,
   GstClockTime timestamp)
 {
   GST_LOG_OBJECT (marudec, "update QOS: %f, %" GST_TIME_FORMAT,
@@ -186,7 +186,7 @@ gst_marudec_update_qos (GstEmulDec *marudec, gdouble proportion,
 }
 
 static void
-gst_marudec_reset_qos (GstEmulDec *marudec)
+gst_marudec_reset_qos (GstMaruDec *marudec)
 {
   gst_marudec_update_qos (marudec, 0.5, GST_CLOCK_TIME_NONE);
   marudec->processed = 0;
@@ -194,7 +194,7 @@ gst_marudec_reset_qos (GstEmulDec *marudec)
 }
 
 static gboolean
-gst_marudec_do_qos (GstEmulDec *marudec, GstClockTime timestamp,
+gst_marudec_do_qos (GstMaruDec *marudec, GstClockTime timestamp,
   gboolean *mode_switch)
 {
   GstClockTimeDiff diff;
@@ -258,7 +258,7 @@ gst_marudec_do_qos (GstEmulDec *marudec, GstClockTime timestamp,
 }
 
 static void
-clear_queued (GstEmulDec *marudec)
+clear_queued (GstMaruDec *marudec)
 {
   g_list_foreach (marudec->queued, (GFunc) gst_mini_object_unref, NULL);
   g_list_free (marudec->queued);
@@ -266,7 +266,7 @@ clear_queued (GstEmulDec *marudec)
 }
 
 static GstFlowReturn
-flush_queued (GstEmulDec *marudec)
+flush_queued (GstMaruDec *marudec)
 {
   GstFlowReturn res = GST_FLOW_OK;
 
@@ -292,11 +292,11 @@ flush_queued (GstEmulDec *marudec)
 }
 
 static void
-gst_marudec_drain (GstEmulDec *marudec)
+gst_marudec_drain (GstMaruDec *marudec)
 {
-  GstEmulDecClass *oclass;
+  GstMaruDecClass *oclass;
 
-  oclass = (GstEmulDecClass *) (G_OBJECT_GET_CLASS (marudec));
+  oclass = (GstMaruDecClass *) (G_OBJECT_GET_CLASS (marudec));
 
   // TODO: drain
 #if 1
@@ -326,7 +326,7 @@ gst_marudec_drain (GstEmulDec *marudec)
  * Implementation
  */
 static void
-gst_marudec_base_init (GstEmulDecClass *klass)
+gst_marudec_base_init (GstMaruDecClass *klass)
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
   GstCaps *sinkcaps = NULL, *srccaps = NULL;
@@ -389,7 +389,7 @@ gst_marudec_base_init (GstEmulDecClass *klass)
 }
 
 static void
-gst_marudec_class_init (GstEmulDecClass *klass)
+gst_marudec_class_init (GstMaruDecClass *klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
   GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
@@ -406,11 +406,11 @@ gst_marudec_class_init (GstEmulDecClass *klass)
 }
 
 static void
-gst_marudec_init (GstEmulDec *marudec)
+gst_marudec_init (GstMaruDec *marudec)
 {
-  GstEmulDecClass *oclass;
+  GstMaruDecClass *oclass;
 
-  oclass = (GstEmulDecClass*) (G_OBJECT_GET_CLASS(marudec));
+  oclass = (GstMaruDecClass*) (G_OBJECT_GET_CLASS(marudec));
 
   marudec->sinkpad = gst_pad_new_from_template (oclass->sinktempl, "sink");
   gst_pad_set_setcaps_function (marudec->sinkpad,
@@ -449,7 +449,7 @@ gst_marudec_init (GstEmulDec *marudec)
 static void
 gst_marudec_finalize (GObject *object)
 {
-  GstEmulDec *marudec = (GstEmulDec *) object;
+  GstMaruDec *marudec = (GstMaruDec *) object;
 
   if (marudec->context) {
     g_free (marudec->context);
@@ -462,10 +462,10 @@ gst_marudec_finalize (GObject *object)
 static gboolean
 gst_marudec_src_event (GstPad *pad, GstEvent *event)
 {
-  GstEmulDec *marudec;
+  GstMaruDec *marudec;
   gboolean res;
 
-  marudec = (GstEmulDec *) gst_pad_get_parent (pad);
+  marudec = (GstMaruDec *) gst_pad_get_parent (pad);
 
   switch (GST_EVENT_TYPE (event)) {
     /* Quality Of Service (QOS) event contains a report
@@ -497,10 +497,10 @@ gst_marudec_src_event (GstPad *pad, GstEvent *event)
 static gboolean
 gst_marudec_sink_event (GstPad *pad, GstEvent *event)
 {
-  GstEmulDec *marudec;
+  GstMaruDec *marudec;
   gboolean ret = FALSE;
 
-  marudec = (GstEmulDec *) gst_pad_get_parent (pad);
+  marudec = (GstMaruDec *) gst_pad_get_parent (pad);
 
   GST_DEBUG_OBJECT (marudec, "Handling %s event",
     GST_EVENT_TYPE_NAME (event));
@@ -608,8 +608,8 @@ gst_marudec_sink_event (GstPad *pad, GstEvent *event)
 static gboolean
 gst_marudec_setcaps (GstPad *pad, GstCaps *caps)
 {
-  GstEmulDec *marudec;
-  GstEmulDecClass *oclass;
+  GstMaruDec *marudec;
+  GstMaruDecClass *oclass;
   GstStructure *structure;
   const GValue *par;
   const GValue *fps;
@@ -617,8 +617,8 @@ gst_marudec_setcaps (GstPad *pad, GstCaps *caps)
 
   GST_DEBUG_OBJECT (pad, "setcaps called.");
 
-  marudec = (GstEmulDec *) (gst_pad_get_parent (pad));
-  oclass = (GstEmulDecClass *) (G_OBJECT_GET_CLASS (marudec));
+  marudec = (GstMaruDec *) (gst_pad_get_parent (pad));
+  oclass = (GstMaruDecClass *) (G_OBJECT_GET_CLASS (marudec));
 
   GST_OBJECT_LOCK (marudec);
 
@@ -715,11 +715,11 @@ gst_marudec_setcaps (GstPad *pad, GstCaps *caps)
 }
 
 static gboolean
-gst_marudec_open (GstEmulDec *marudec)
+gst_marudec_open (GstMaruDec *marudec)
 {
-  GstEmulDecClass *oclass;
+  GstMaruDecClass *oclass;
 
-  oclass = (GstEmulDecClass *) (G_OBJECT_GET_CLASS (marudec));
+  oclass = (GstMaruDecClass *) (G_OBJECT_GET_CLASS (marudec));
 
   if (!marudec->dev) {
     return FALSE;
@@ -763,7 +763,7 @@ gst_marudec_open (GstEmulDec *marudec)
 }
 
 static int
-gst_marudec_close (GstEmulDec *marudec)
+gst_marudec_close (GstMaruDec *marudec)
 {
   int ret = 0;
 
@@ -788,12 +788,12 @@ gst_marudec_close (GstEmulDec *marudec)
 
 
 static gboolean
-gst_marudec_negotiate (GstEmulDec *marudec, gboolean force)
+gst_marudec_negotiate (GstMaruDec *marudec, gboolean force)
 {
-  GstEmulDecClass *oclass;
+  GstMaruDecClass *oclass;
   GstCaps *caps;
 
-  oclass = (GstEmulDecClass *) (G_OBJECT_GET_CLASS (marudec));
+  oclass = (GstMaruDecClass *) (G_OBJECT_GET_CLASS (marudec));
 
   switch (oclass->codec->media_type) {
   case AVMEDIA_TYPE_VIDEO:
@@ -912,7 +912,7 @@ new_aligned_buffer (gint size, GstCaps *caps)
 }
 
 static GstFlowReturn
-get_output_buffer (GstEmulDec *marudec, GstBuffer **outbuf)
+get_output_buffer (GstMaruDec *marudec, GstBuffer **outbuf)
 {
   gint pict_size;
   GstFlowReturn ret;
@@ -972,7 +972,7 @@ get_output_buffer (GstEmulDec *marudec, GstBuffer **outbuf)
 }
 
 static gboolean
-clip_video_buffer (GstEmulDec *dec, GstBuffer *buf,
+clip_video_buffer (GstMaruDec *dec, GstBuffer *buf,
     GstClockTime in_ts, GstClockTime in_dur)
 {
   gboolean res = TRUE;
@@ -981,7 +981,7 @@ clip_video_buffer (GstEmulDec *dec, GstBuffer *buf,
 }
 
 static gboolean
-clip_audio_buffer (GstEmulDec *dec, GstBuffer *buf,
+clip_audio_buffer (GstMaruDec *dec, GstBuffer *buf,
     GstClockTime in_ts, GstClockTime in_dur)
 {
   GstClockTime stop;
@@ -1042,7 +1042,7 @@ clip_audio_buffer (GstEmulDec *dec, GstBuffer *buf,
 }
 
 static gint
-gst_marudec_video_frame (GstEmulDec *marudec, guint8 *data, guint size,
+gst_marudec_video_frame (GstMaruDec *marudec, guint8 *data, guint size,
     const GstTSInfo *dec_info, gint64 in_offset, GstBuffer **outbuf,
     GstFlowReturn *ret)
 {
@@ -1200,7 +1200,7 @@ gst_marudec_video_frame (GstEmulDec *marudec, guint8 *data, guint size,
 }
 
 static gint
-gst_marudec_audio_frame (GstEmulDec *marudec, CodecElement *codec,
+gst_marudec_audio_frame (GstMaruDec *marudec, CodecElement *codec,
                           guint8 *data, guint size,
                           const GstTSInfo *dec_info, GstBuffer **outbuf,
                           GstFlowReturn *ret)
@@ -1288,10 +1288,10 @@ gst_marudec_audio_frame (GstEmulDec *marudec, CodecElement *codec,
 }
 
 static gint
-gst_marudec_frame (GstEmulDec *marudec, guint8 *data, guint size,
+gst_marudec_frame (GstMaruDec *marudec, guint8 *data, guint size,
     gint *got_data, const GstTSInfo *dec_info, gint64 in_offset, GstFlowReturn *ret)
 {
-  GstEmulDecClass *oclass;
+  GstMaruDecClass *oclass;
   GstBuffer *outbuf = NULL;
   gint have_data = 0, len = 0;
 
@@ -1301,7 +1301,7 @@ gst_marudec_frame (GstEmulDec *marudec, guint8 *data, guint size,
   }
 
   *ret = GST_FLOW_OK;
-  oclass = (GstEmulDecClass *) (G_OBJECT_GET_CLASS (marudec));
+  oclass = (GstMaruDecClass *) (G_OBJECT_GET_CLASS (marudec));
 
   switch (oclass->codec->media_type) {
   case AVMEDIA_TYPE_VIDEO:
@@ -1375,8 +1375,8 @@ gst_marudec_frame (GstEmulDec *marudec, guint8 *data, guint size,
 static GstFlowReturn
 gst_marudec_chain (GstPad *pad, GstBuffer *buffer)
 {
-  GstEmulDec *marudec;
-  GstEmulDecClass *oclass;
+  GstMaruDec *marudec;
+  GstMaruDecClass *oclass;
   guint8 *in_buf;
   gint in_size, len, have_data;
   GstFlowReturn ret = GST_FLOW_OK;
@@ -1387,11 +1387,11 @@ gst_marudec_chain (GstPad *pad, GstBuffer *buffer)
   const GstTSInfo *in_info;
   const GstTSInfo *dec_info;
 
-  marudec = (GstEmulDec *) (GST_PAD_PARENT (pad));
+  marudec = (GstMaruDec *) (GST_PAD_PARENT (pad));
 
   if (G_UNLIKELY (!marudec->opened)) {
     // not_negotiated
-    oclass = (GstEmulDecClass *) (G_OBJECT_GET_CLASS (marudec));
+    oclass = (GstMaruDecClass *) (G_OBJECT_GET_CLASS (marudec));
     GST_ELEMENT_ERROR (marudec, CORE, NEGOTIATION, (NULL),
       ("maru_%sdec: input format was not set before data start",
         oclass->codec->name));
@@ -1412,7 +1412,7 @@ gst_marudec_chain (GstPad *pad, GstBuffer *buffer)
   }
 //  marudec->clear_ts = TRUE;
 
-  oclass = (GstEmulDecClass *) (G_OBJECT_GET_CLASS (marudec));
+  oclass = (GstMaruDecClass *) (G_OBJECT_GET_CLASS (marudec));
 #if 0
   if (G_UNLIKELY (marudec->waiting_for_key)) {
     if (GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DELTA_UNIT) &&
@@ -1493,7 +1493,7 @@ gst_marudec_chain (GstPad *pad, GstBuffer *buffer)
 static GstStateChangeReturn
 gst_marudec_change_state (GstElement *element, GstStateChange transition)
 {
-  GstEmulDec *marudec = (GstEmulDec *) element;
+  GstMaruDec *marudec = (GstMaruDec *) element;
   GstStateChangeReturn ret;
 
   ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
@@ -1518,20 +1518,20 @@ gboolean
 gst_marudec_register (GstPlugin *plugin, GList *element)
 {
   GTypeInfo typeinfo = {
-      sizeof (GstEmulDecClass),
+      sizeof (GstMaruDecClass),
       (GBaseInitFunc) gst_marudec_base_init,
       NULL,
       (GClassInitFunc) gst_marudec_class_init,
       NULL,
       NULL,
-      sizeof (GstEmulDec),
+      sizeof (GstMaruDec),
       0,
       (GInstanceInitFunc) gst_marudec_init,
   };
 
   GType type;
   gchar *type_name;
-  gint rank = GST_RANK_PRIMARY;
+  gint rank = GST_RANK_NONE;
   GList *elem = element;
   CodecElement *codec = NULL;
 
index 1af5a9f..8ce4fff 100644 (file)
@@ -35,7 +35,7 @@
 
 #define GST_MARUENC_PARAMS_QDATA g_quark_from_static_string("maruenc-params")
 
-typedef struct _GstEmulEnc
+typedef struct _GstMaruEnc
 {
   GstElement element;
 
@@ -60,9 +60,9 @@ typedef struct _GstEmulEnc
 
   GQueue *delay;
 
-} GstEmulEnc;
+} GstMaruEnc;
 
-typedef struct _GstEmulEncClass
+typedef struct _GstMaruEncClass
 {
   GstElementClass parent_class;
 
@@ -70,19 +70,19 @@ typedef struct _GstEmulEncClass
   GstPadTemplate *sinktempl;
   GstPadTemplate *srctempl;
   GstCaps *sinkcaps;
-} GstEmulEncClass;
+} GstMaruEncClass;
 
 static GstElementClass *parent_class = NULL;
 
-static void gst_maruenc_base_init (GstEmulEncClass *klass);
-static void gst_maruenc_class_init (GstEmulEncClass *klass);
-static void gst_maruenc_init (GstEmulEnc *maruenc);
+static void gst_maruenc_base_init (GstMaruEncClass *klass);
+static void gst_maruenc_class_init (GstMaruEncClass *klass);
+static void gst_maruenc_init (GstMaruEnc *maruenc);
 static void gst_maruenc_finalize (GObject *object);
 
 static gboolean gst_maruenc_setcaps (GstPad *pad, GstCaps *caps);
 static GstCaps *gst_maruenc_getcaps (GstPad *pad);
 
-static GstCaps *gst_maruenc_get_possible_sizes (GstEmulEnc *maruenc,
+static GstCaps *gst_maruenc_get_possible_sizes (GstMaruEnc *maruenc,
   GstPad *pad, const GstCaps *caps);
 
 static GstFlowReturn gst_maruenc_chain_video (GstPad *pad, GstBuffer *buffer);
@@ -104,7 +104,7 @@ GstStateChangeReturn gst_maruenc_change_state (GstElement *element, GstStateChan
  * Implementation
  */
 static void
-gst_maruenc_base_init (GstEmulEncClass *klass)
+gst_maruenc_base_init (GstMaruEncClass *klass)
 {
     GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
     GstPadTemplate *sinktempl = NULL, *srctempl = NULL;
@@ -169,7 +169,7 @@ gst_maruenc_base_init (GstEmulEncClass *klass)
 }
 
 static void
-gst_maruenc_class_init (GstEmulEncClass *klass)
+gst_maruenc_class_init (GstMaruEncClass *klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
   GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
@@ -187,10 +187,10 @@ gst_maruenc_class_init (GstEmulEncClass *klass)
 }
 
 static void
-gst_maruenc_init (GstEmulEnc *maruenc)
+gst_maruenc_init (GstMaruEnc *maruenc)
 {
-  GstEmulEncClass *oclass;
-  oclass = (GstEmulEncClass*) (G_OBJECT_GET_CLASS(maruenc));
+  GstMaruEncClass *oclass;
+  oclass = (GstMaruEncClass*) (G_OBJECT_GET_CLASS(maruenc));
 
   maruenc->sinkpad = gst_pad_new_from_template (oclass->sinktempl, "sink");
   gst_pad_set_setcaps_function (maruenc->sinkpad,
@@ -245,7 +245,7 @@ static void
 gst_maruenc_finalize (GObject *object)
 {
   // Deinit Decoder
-  GstEmulEnc *maruenc = (GstEmulEnc *) object;
+  GstMaruEnc *maruenc = (GstMaruEnc *) object;
 
   if (maruenc->opened) {
     gst_maru_avcodec_close (maruenc->context, maruenc->dev);
@@ -268,7 +268,7 @@ gst_maruenc_finalize (GObject *object)
 }
 
 static GstCaps *
-gst_maruenc_get_possible_sizes (GstEmulEnc *maruenc, GstPad *pad,
+gst_maruenc_get_possible_sizes (GstMaruEnc *maruenc, GstPad *pad,
   const GstCaps *caps)
 {
   GstCaps *othercaps = NULL;
@@ -336,9 +336,9 @@ gst_maruenc_get_possible_sizes (GstEmulEnc *maruenc, GstPad *pad,
 static GstCaps *
 gst_maruenc_getcaps (GstPad *pad)
 {
-  GstEmulEnc *maruenc = (GstEmulEnc *) GST_PAD_PARENT (pad);
-  GstEmulEncClass *oclass =
-    (GstEmulEncClass *) G_OBJECT_GET_CLASS (maruenc);
+  GstMaruEnc *maruenc = (GstMaruEnc *) GST_PAD_PARENT (pad);
+  GstMaruEncClass *oclass =
+    (GstMaruEncClass *) G_OBJECT_GET_CLASS (maruenc);
   CodecContext *ctx = NULL;
   enum PixelFormat pixfmt;
   GstCaps *caps = NULL;
@@ -465,16 +465,16 @@ gst_maruenc_getcaps (GstPad *pad)
 static gboolean
 gst_maruenc_setcaps (GstPad *pad, GstCaps *caps)
 {
-  GstEmulEnc *maruenc;
-  GstEmulEncClass *oclass;
+  GstMaruEnc *maruenc;
+  GstMaruEncClass *oclass;
   GstCaps *other_caps;
   GstCaps *allowed_caps;
   GstCaps *icaps;
   enum PixelFormat pix_fmt;
   int32_t buf_size;
 
-  maruenc = (GstEmulEnc *) (gst_pad_get_parent (pad));
-  oclass = (GstEmulEncClass *) (G_OBJECT_GET_CLASS (maruenc));
+  maruenc = (GstMaruEnc *) (gst_pad_get_parent (pad));
+  oclass = (GstMaruEncClass *) (G_OBJECT_GET_CLASS (maruenc));
 
   if (maruenc->opened) {
     gst_maru_avcodec_close (maruenc->context, maruenc->dev);
@@ -623,7 +623,7 @@ gst_maruenc_setcaps (GstPad *pad, GstCaps *caps)
 }
 
 static void
-gst_maruenc_setup_working_buf (GstEmulEnc *maruenc)
+gst_maruenc_setup_working_buf (GstMaruEnc *maruenc)
 {
   guint wanted_size =
       maruenc->context->video.width * maruenc->context->video.height * 6 +
@@ -643,7 +643,7 @@ gst_maruenc_setup_working_buf (GstEmulEnc *maruenc)
 GstFlowReturn
 gst_maruenc_chain_video (GstPad *pad, GstBuffer *buffer)
 {
-  GstEmulEnc *maruenc = (GstEmulEnc *) (GST_PAD_PARENT (pad));
+  GstMaruEnc *maruenc = (GstMaruEnc *) (GST_PAD_PARENT (pad));
   GstBuffer *outbuf;
   gint ret_size = 0, frame_size;
 
@@ -683,8 +683,8 @@ gst_maruenc_chain_video (GstPad *pad, GstBuffer *buffer)
                 maruenc->dev);
 
   if (ret_size < 0) {
-    GstEmulEncClass *oclass =
-      (GstEmulEncClass *) (G_OBJECT_GET_CLASS (maruenc));
+    GstMaruEncClass *oclass =
+      (GstMaruEncClass *) (G_OBJECT_GET_CLASS (maruenc));
     GST_ERROR_OBJECT (maruenc,
         "maru_%senc: failed to encode buffer", oclass->codec->name);
     gst_buffer_unref (buffer);
@@ -761,7 +761,7 @@ gst_maruenc_chain_video (GstPad *pad, GstBuffer *buffer)
 }
 
 GstFlowReturn
-gst_maruenc_encode_audio (GstEmulEnc *maruenc, guint8 *audio_in,
+gst_maruenc_encode_audio (GstMaruEnc *maruenc, guint8 *audio_in,
   guint in_size, guint max_size, GstClockTime timestamp,
   GstClockTime duration, gboolean discont)
 {
@@ -807,8 +807,8 @@ gst_maruenc_encode_audio (GstEmulEnc *maruenc, guint8 *audio_in,
 static GstFlowReturn
 gst_maruenc_chain_audio (GstPad *pad, GstBuffer *buffer)
 {
-  GstEmulEnc *maruenc;
-  GstEmulEncClass *oclass;
+  GstMaruEnc *maruenc;
+  GstMaruEncClass *oclass;
   GstClockTime timestamp, duration;
   guint in_size, frame_size;
   gint osize;
@@ -818,8 +818,8 @@ gst_maruenc_chain_audio (GstPad *pad, GstBuffer *buffer)
   guint8 *in_data;
   CodecContext *ctx;
 
-  maruenc = (GstEmulEnc *) (GST_OBJECT_PARENT (pad));
-  oclass = (GstEmulEncClass *) G_OBJECT_GET_CLASS (maruenc);
+  maruenc = (GstMaruEnc *) (GST_OBJECT_PARENT (pad));
+  oclass = (GstMaruEncClass *) G_OBJECT_GET_CLASS (maruenc);
 
   ctx = maruenc->context;
 
@@ -948,7 +948,7 @@ gst_maruenc_chain_audio (GstPad *pad, GstBuffer *buffer)
 }
 
 static void
-gst_maruenc_flush_buffers (GstEmulEnc *maruenc, gboolean send)
+gst_maruenc_flush_buffers (GstMaruEnc *maruenc, gboolean send)
 {
   GstBuffer *outbuf, *inbuf;
   gint ret_size = 0;
@@ -970,8 +970,8 @@ gst_maruenc_flush_buffers (GstEmulEnc *maruenc, gboolean send)
       maruenc->dev);
 
     if (ret_size < 0) {
-      GstEmulEncClass *oclass =
-        (GstEmulEncClass *) (G_OBJECT_GET_CLASS (maruenc));
+      GstMaruEncClass *oclass =
+        (GstMaruEncClass *) (G_OBJECT_GET_CLASS (maruenc));
       GST_WARNING_OBJECT (maruenc,
         "maru_%senc: failed to flush buffer", oclass->codec->name);
       break;
@@ -1015,8 +1015,8 @@ gst_maruenc_flush_buffers (GstEmulEnc *maruenc, gboolean send)
 static gboolean
 gst_maruenc_event_video (GstPad *pad, GstEvent *event)
 {
-  GstEmulEnc *maruenc;
-  maruenc = (GstEmulEnc *) gst_pad_get_parent (pad);
+  GstMaruEnc *maruenc;
+  maruenc = (GstMaruEnc *) gst_pad_get_parent (pad);
 
   switch (GST_EVENT_TYPE (event)) {
   case GST_EVENT_EOS:
@@ -1044,7 +1044,7 @@ gst_maruenc_event_video (GstPad *pad, GstEvent *event)
 static gboolean
 gst_maruenc_event_src (GstPad *pad, GstEvent *event)
 {
-  GstEmulEnc *maruenc = (GstEmulEnc *) (GST_PAD_PARENT (pad));
+  GstMaruEnc *maruenc = (GstMaruEnc *) (GST_PAD_PARENT (pad));
   gboolean forward = TRUE;
 
   switch (GST_EVENT_TYPE (event)) {
@@ -1078,7 +1078,7 @@ gst_maruenc_event_src (GstPad *pad, GstEvent *event)
 GstStateChangeReturn
 gst_maruenc_change_state (GstElement *element, GstStateChange transition)
 {
-  GstEmulEnc *maruenc = (GstEmulEnc*)element;
+  GstMaruEnc *maruenc = (GstMaruEnc*)element;
   GstStateChangeReturn ret;
 
   switch (transition) {
@@ -1120,13 +1120,13 @@ gboolean
 gst_maruenc_register (GstPlugin *plugin, GList *element)
 {
   GTypeInfo typeinfo = {
-      sizeof (GstEmulEncClass),
+      sizeof (GstMaruEncClass),
       (GBaseInitFunc) gst_maruenc_base_init,
       NULL,
       (GClassInitFunc) gst_maruenc_class_init,
       NULL,
       NULL,
-      sizeof (GstEmulEnc),
+      sizeof (GstMaruEnc),
       0,
       (GInstanceInitFunc) gst_maruenc_init,
   };
index 72b4b8a..522bf50 100644 (file)
@@ -69,4 +69,4 @@ GstFlowReturn
 codec_buffer_alloc (GstPad *pad, guint64 offset,
                     guint size, GstCaps *caps, GstBuffer **buf);
 
-#endif /* __GST_EMUL_API_H__ */
+#endif /* __GST_MARU_INTERFACE_H__ */
index 42df415..e09a862 100644 (file)
@@ -198,9 +198,15 @@ _codec_decode_audio_meta_from (AudioData *audio, int *frame_size_ptr,
 
   CODEC_LOG (DEBUG, "decode_audio. read data from device.\n");
 
+  memcpy (&audio->sample_rate,
+    device_buf, sizeof(audio->sample_rate));
+  size = sizeof(audio->sample_rate);
+  memcpy (&audio->channels,
+    device_buf + size, sizeof(audio->channels));
+  size += sizeof(audio->channels);
   memcpy (&audio->channel_layout,
-    device_buf, sizeof(audio->channel_layout));
-  size = sizeof(audio->channel_layout);
+    device_buf + size, sizeof(audio->channel_layout));
+  size += sizeof(audio->channel_layout);
   memcpy (&len, device_buf + size, sizeof(len));
   size += sizeof(len);
   memcpy (frame_size_ptr, device_buf + size, sizeof(*frame_size_ptr));
index 91d929e..5fb3640 100644 (file)
@@ -204,7 +204,6 @@ gst_maru_codectype_to_audio_caps (CodecContext *ctx, const char *name,
 
   if (ctx) {
     caps = gst_maru_smpfmt_to_caps (ctx->audio.sample_fmt, ctx, name);
-#if 1
   } else if (codec && codec->sample_fmts[0] != -1){
     GstCaps *temp;
     int i;
@@ -217,7 +216,6 @@ gst_maru_codectype_to_audio_caps (CodecContext *ctx, const char *name,
         gst_caps_append (caps, temp);
       }
     }
-#endif
   } else {
     GstCaps *temp;
     int i;