dtsdec: use base class tag handling helper
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Tue, 6 Mar 2012 15:11:30 +0000 (16:11 +0100)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Tue, 6 Mar 2012 17:33:09 +0000 (18:33 +0100)
... so as to ensure these to be handled and sent at proper time.

ext/dts/gstdtsdec.c
ext/dts/gstdtsdec.h

index 4a304f8..d589901 100644 (file)
@@ -137,8 +137,6 @@ static gboolean gst_dtsdec_parse (GstAudioDecoder * dec, GstAdapter * adapter,
     gint * offset, gint * length);
 static GstFlowReturn gst_dtsdec_handle_frame (GstAudioDecoder * dec,
     GstBuffer * buffer);
-static GstFlowReturn gst_dtsdec_pre_push (GstAudioDecoder * bdec,
-    GstBuffer ** buffer);
 
 static GstFlowReturn gst_dtsdec_chain (GstPad * pad, GstBuffer * buf);
 
@@ -182,7 +180,6 @@ gst_dtsdec_class_init (GstDtsDecClass * klass)
   gstbase_class->set_format = GST_DEBUG_FUNCPTR (gst_dtsdec_set_format);
   gstbase_class->parse = GST_DEBUG_FUNCPTR (gst_dtsdec_parse);
   gstbase_class->handle_frame = GST_DEBUG_FUNCPTR (gst_dtsdec_handle_frame);
-  gstbase_class->pre_push = GST_DEBUG_FUNCPTR (gst_dtsdec_pre_push);
 
   /**
    * GstDtsDec::drc
@@ -266,10 +263,6 @@ gst_dtsdec_stop (GstAudioDecoder * dec)
     dca_free (dts->state);
     dts->state = NULL;
   }
-  if (dts->pending_tags) {
-    gst_tag_list_free (dts->pending_tags);
-    dts->pending_tags = NULL;
-  }
 
   return TRUE;
 }
@@ -459,28 +452,9 @@ gst_dtsdec_update_streaminfo (GstDtsDec * dts)
     /* 1 => open bitrate, 2 => variable bitrate, 3 => lossless */
     gst_tag_list_add (taglist, GST_TAG_MERGE_APPEND, GST_TAG_BITRATE,
         (guint) dts->bit_rate, NULL);
-
-    if (dts->pending_tags) {
-      gst_tag_list_free (dts->pending_tags);
-      dts->pending_tags = NULL;
-    }
-
-    dts->pending_tags = taglist;
-  }
-}
-
-static GstFlowReturn
-gst_dtsdec_pre_push (GstAudioDecoder * bdec, GstBuffer ** buffer)
-{
-  GstDtsDec *dts = GST_DTSDEC (bdec);
-
-  if (G_UNLIKELY (dts->pending_tags)) {
-    gst_element_found_tags_for_pad (GST_ELEMENT (dts),
-        GST_AUDIO_DECODER_SRC_PAD (dts), dts->pending_tags);
-    dts->pending_tags = NULL;
+    gst_audio_decoder_merge_tags (GST_AUDIO_DECODER (dts), taglist,
+        GST_TAG_MERGE_REPLACE);
   }
-
-  return GST_FLOW_OK;
 }
 
 static GstFlowReturn
index be6005a..172473a 100644 (file)
@@ -66,8 +66,6 @@ struct _GstDtsDec {
 #else
   dts_state_t  *state;
 #endif
-
-  GstTagList    *pending_tags;
 };
 
 struct _GstDtsDecClass {