audioparsers: port to new GstBaseParse in core
authorTim-Philipp Müller <tim.muller@collabora.co.uk>
Thu, 7 Apr 2011 12:26:41 +0000 (13:26 +0100)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Fri, 8 Apr 2011 17:07:17 +0000 (18:07 +0100)
13 files changed:
gst/audioparsers/Makefile.am
gst/audioparsers/gstaacparse.c
gst/audioparsers/gstaacparse.h
gst/audioparsers/gstac3parse.c
gst/audioparsers/gstac3parse.h
gst/audioparsers/gstamrparse.c
gst/audioparsers/gstamrparse.h
gst/audioparsers/gstdcaparse.c
gst/audioparsers/gstdcaparse.h
gst/audioparsers/gstflacparse.c
gst/audioparsers/gstflacparse.h
gst/audioparsers/gstmpegaudioparse.c
gst/audioparsers/gstmpegaudioparse.h

index 77039c7..13a9c83 100644 (file)
@@ -6,10 +6,8 @@ libgstaudioparsersbad_la_SOURCES = \
        plugin.c
 
 libgstaudioparsersbad_la_CFLAGS = \
-       -I$(top_srcdir)/gst-libs \
        $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
 libgstaudioparsersbad_la_LIBADD = \
-       $(top_builddir)/gst-libs/gst/baseparse/libgstbaseparse-$(GST_MAJORMINOR).la \
        $(GST_PLUGINS_BASE_LIBS) -lgsttag-$(GST_MAJORMINOR) \
        -lgstaudio-$(GST_MAJORMINOR) \
        $(GST_BASE_LIBS) $(GST_LIBS)
index 09e3e71..7b9c505 100644 (file)
@@ -267,14 +267,15 @@ gst_aacparse_sink_setcaps (GstBaseParse * parse, GstCaps * caps)
 
       /* arrange for metadata and get out of the way */
       gst_aacparse_set_src_caps (aacparse, caps);
-      gst_base_parse_set_format (parse,
-          GST_BASE_PARSE_FORMAT_PASSTHROUGH, TRUE);
+      gst_base_parse_set_passthrough (parse, TRUE);
     } else
       return FALSE;
 
     /* caps info overrides */
     gst_structure_get_int (structure, "rate", &aacparse->sample_rate);
     gst_structure_get_int (structure, "channels", &aacparse->channels);
+  } else {
+    gst_base_parse_set_passthrough (parse, FALSE);
   }
 
   return TRUE;
@@ -460,6 +461,8 @@ gst_aacparse_detect_stream (GstAacParse * aacparse,
     GST_DEBUG ("ADTS: samplerate %d, channels %d, objtype %d, version %d",
         rate, channels, aacparse->object_type, aacparse->mpegversion);
 
+    gst_base_parse_set_syncable (GST_BASE_PARSE (aacparse), TRUE);
+
     return TRUE;
   } else if (need_data) {
     /* This tells the parent class not to skip any data */
@@ -479,10 +482,6 @@ gst_aacparse_detect_stream (GstAacParse * aacparse,
     aacparse->header_type = DSPAAC_HEADER_ADIF;
     aacparse->mpegversion = 4;
 
-    /* no way to seek this */
-    gst_base_parse_set_seek (GST_BASE_PARSE (aacparse),
-        GST_BASE_PARSE_SEEK_NONE, 0);
-
     /* Skip the "ADIF" bytes */
     adif = data + i + 4;
 
@@ -543,8 +542,11 @@ gst_aacparse_detect_stream (GstAacParse * aacparse,
     /* arrange for metadata and get out of the way */
     gst_aacparse_set_src_caps (aacparse,
         GST_PAD_CAPS (GST_BASE_PARSE_SINK_PAD (aacparse)));
-    gst_base_parse_set_format (GST_BASE_PARSE (aacparse),
-        GST_BASE_PARSE_FORMAT_PASSTHROUGH, TRUE);
+
+    /* not syncable, not easily seekable (unless we push data from start */
+    gst_base_parse_set_syncable (GST_BASE_PARSE_CAST (aacparse), FALSE);
+    gst_base_parse_set_passthrough (GST_BASE_PARSE_CAST (aacparse), TRUE);
+    gst_base_parse_set_average_bitrate (GST_BASE_PARSE_CAST (aacparse), 0);
 
     *framesize = avail;
     return TRUE;
@@ -574,14 +576,14 @@ gst_aacparse_check_valid_frame (GstBaseParse * parse,
   const guint8 *data;
   GstAacParse *aacparse;
   gboolean ret = FALSE;
-  gboolean sync;
+  gboolean lost_sync;
   GstBuffer *buffer;
 
   aacparse = GST_AACPARSE (parse);
   buffer = frame->buffer;
   data = GST_BUFFER_DATA (buffer);
 
-  sync = GST_BASE_PARSE_FRAME_SYNC (frame);
+  lost_sync = GST_BASE_PARSE_LOST_SYNC (parse);
 
   if (aacparse->header_type == DSPAAC_HEADER_ADIF ||
       aacparse->header_type == DSPAAC_HEADER_NONE) {
@@ -589,16 +591,16 @@ gst_aacparse_check_valid_frame (GstBaseParse * parse,
     *framesize = GST_BUFFER_SIZE (buffer);
     ret = TRUE;
 
-  } else if (aacparse->header_type == DSPAAC_HEADER_NOT_PARSED || sync == FALSE) {
+  } else if (aacparse->header_type == DSPAAC_HEADER_NOT_PARSED || lost_sync) {
 
     ret = gst_aacparse_detect_stream (aacparse, data, GST_BUFFER_SIZE (buffer),
-        GST_BASE_PARSE_FRAME_DRAIN (frame), framesize, skipsize);
+        GST_BASE_PARSE_DRAINING (parse), framesize, skipsize);
 
   } else if (aacparse->header_type == DSPAAC_HEADER_ADTS) {
     guint needed_data = 1024;
 
     ret = gst_aacparse_check_adts_frame (aacparse, data,
-        GST_BUFFER_SIZE (buffer), GST_BASE_PARSE_FRAME_DRAIN (frame),
+        GST_BUFFER_SIZE (buffer), GST_BASE_PARSE_DRAINING (parse),
         framesize, &needed_data);
 
     if (!ret) {
index e62bf65..6b781d4 100644 (file)
@@ -23,7 +23,7 @@
 #define __GST_AACPARSE_H__
 
 #include <gst/gst.h>
-#include <gst/baseparse/gstbaseparse.h>
+#include <gst/base/gstbaseparse.h>
 
 G_BEGIN_DECLS
 
index e001bc3..986b28b 100644 (file)
@@ -391,7 +391,7 @@ gst_ac3_parse_check_valid_frame (GstBaseParse * parse,
   GstBuffer *buf = frame->buffer;
   GstByteReader reader = GST_BYTE_READER_INIT_FROM_BUFFER (buf);
   gint off;
-  gboolean sync, drain;
+  gboolean lost_sync, draining;
 
   if (G_UNLIKELY (GST_BUFFER_SIZE (buf) < 6))
     return FALSE;
@@ -422,10 +422,10 @@ gst_ac3_parse_check_valid_frame (GstBaseParse * parse,
 
   GST_LOG_OBJECT (parse, "got frame");
 
-  sync = GST_BASE_PARSE_FRAME_SYNC (frame);
-  drain = GST_BASE_PARSE_FRAME_DRAIN (frame);
+  lost_sync = GST_BASE_PARSE_LOST_SYNC (parse);
+  draining = GST_BASE_PARSE_DRAINING (parse);
 
-  if (!sync && !drain) {
+  if (lost_sync && !draining) {
     guint16 word = 0;
 
     GST_DEBUG_OBJECT (ac3parse, "resyncing; checking next frame syncword");
index 781554b..6ed01dd 100644 (file)
@@ -24,7 +24,7 @@
 #define __GST_AC3_PARSE_H__
 
 #include <gst/gst.h>
-#include <gst/baseparse/gstbaseparse.h>
+#include <gst/base/gstbaseparse.h>
 
 G_BEGIN_DECLS
 
index 42481a2..8d55335 100644 (file)
@@ -308,7 +308,7 @@ gst_amrparse_check_valid_frame (GstBaseParse * parse,
      *       perform this check)
      */
     if (fsize &&
-        (GST_BASE_PARSE_FRAME_SYNC (frame) || GST_BASE_PARSE_FRAME_DRAIN (frame)
+        (!GST_BASE_PARSE_LOST_SYNC (parse) || GST_BASE_PARSE_DRAINING (parse)
             || (dsize > fsize && (data[fsize] & 0x83) == 0))) {
       *framesize = fsize;
       return TRUE;
index 04cd6e7..01fbb8b 100644 (file)
@@ -24,7 +24,7 @@
 #define __GST_AMRPARSE_H__
 
 #include <gst/gst.h>
-#include <gst/baseparse/gstbaseparse.h>
+#include <gst/base/gstbaseparse.h>
 
 G_BEGIN_DECLS
 
index 7e478e4..bc52233 100644 (file)
@@ -322,7 +322,7 @@ gst_dca_parse_check_valid_frame (GstBaseParse * parse,
   if (G_UNLIKELY (GST_BUFFER_SIZE (buf) < 16))
     return FALSE;
 
-  parser_in_sync = GST_BASE_PARSE_FRAME_SYNC (frame);
+  parser_in_sync = !GST_BASE_PARSE_LOST_SYNC (parse);
 
   if (G_LIKELY (parser_in_sync && dcaparse->last_sync != 0)) {
     off = gst_byte_reader_masked_scan_uint32 (&r, 0xffffffff,
@@ -362,7 +362,7 @@ gst_dca_parse_check_valid_frame (GstBaseParse * parse,
 
   dcaparse->last_sync = sync;
 
-  parser_draining = GST_BASE_PARSE_FRAME_DRAIN (frame);
+  parser_draining = GST_BASE_PARSE_DRAINING (parse);
 
   if (!parser_in_sync && !parser_draining) {
     /* check for second frame to be sure */
index eefc252..b3e066b 100644 (file)
@@ -21,7 +21,7 @@
 #define __GST_DCA_PARSE_H__
 
 #include <gst/gst.h>
-#include <gst/baseparse/gstbaseparse.h>
+#include <gst/base/gstbaseparse.h>
 
 G_BEGIN_DECLS
 
index 8306e8e..376ab30 100644 (file)
@@ -326,9 +326,10 @@ gst_flac_parse_start (GstBaseParse * parse)
 
   /* "fLaC" marker */
   gst_base_parse_set_min_frame_size (GST_BASE_PARSE (flacparse), 4);
+
   /* inform baseclass we can come up with ts, based on counters in packets */
-  gst_base_parse_set_format (GST_BASE_PARSE (flacparse),
-      GST_BASE_PARSE_FORMAT_HAS_TIME, TRUE);
+  gst_base_parse_set_has_timing_info (GST_BASE_PARSE_CAST (flacparse), TRUE);
+  gst_base_parse_set_syncable (GST_BASE_PARSE_CAST (flacparse), TRUE);
 
   return TRUE;
 }
@@ -622,7 +623,7 @@ gst_flac_parse_frame_is_valid (GstFlacParse * flacparse,
   }
 
   /* For the last frame output everything to the end */
-  if (G_UNLIKELY (GST_BASE_PARSE_FRAME_DRAIN (frame))) {
+  if (G_UNLIKELY (GST_BASE_PARSE_DRAINING (flacparse))) {
     if (flacparse->check_frame_checksums) {
       guint16 actual_crc = gst_flac_calculate_crc16 (data, size - 2);
       guint16 expected_crc = GST_READ_UINT16_BE (data + size - 2);
@@ -697,7 +698,7 @@ gst_flac_parse_check_valid_frame (GstBaseParse * parse,
         return TRUE;
       } else {
         /* If we're at EOS and the frame was not valid, drop it! */
-        if (G_UNLIKELY (GST_BASE_PARSE_FRAME_DRAIN (frame))) {
+        if (G_UNLIKELY (GST_BASE_PARSE_DRAINING (flacparse))) {
           GST_WARNING_OBJECT (flacparse, "EOS");
           return FALSE;
         }
index 664b2a6..1c6db0e 100644 (file)
@@ -25,7 +25,7 @@
 #define __GST_FLAC_PARSE_H__
 
 #include <gst/gst.h>
-#include <gst/baseparse/gstbaseparse.h>
+#include <gst/base/gstbaseparse.h>
 
 G_BEGIN_DECLS
 
index 5d1ec4c..9452e57 100644 (file)
@@ -489,7 +489,7 @@ gst_mpeg_audio_parse_check_valid_frame (GstBaseParse * parse,
   GstBuffer *buf = frame->buffer;
   GstByteReader reader = GST_BYTE_READER_INIT_FROM_BUFFER (buf);
   gint off, bpf;
-  gboolean sync, drain, valid, caps_change;
+  gboolean lost_sync, draining, valid, caps_change;
   guint32 header;
   guint bitrate, layer, rate, channels, version, mode, crc;
 
@@ -532,11 +532,11 @@ gst_mpeg_audio_parse_check_valid_frame (GstBaseParse * parse,
   else
     caps_change = FALSE;
 
-  sync = GST_BASE_PARSE_FRAME_SYNC (frame);
-  drain = GST_BASE_PARSE_FRAME_DRAIN (frame);
+  lost_sync = GST_BASE_PARSE_LOST_SYNC (parse);
+  draining = GST_BASE_PARSE_DRAINING (parse);
 
-  if (!drain && (!sync || caps_change)) {
-    if (!gst_mp3parse_validate_extended (mp3parse, buf, header, bpf, drain,
+  if (!draining && (lost_sync || caps_change)) {
+    if (!gst_mp3parse_validate_extended (mp3parse, buf, header, bpf, draining,
             &valid)) {
       /* not enough data */
       gst_base_parse_set_min_frame_size (parse, valid);
@@ -548,7 +548,7 @@ gst_mpeg_audio_parse_check_valid_frame (GstBaseParse * parse,
         return FALSE;
       }
     }
-  } else if (drain && !sync && caps_change) {
+  } else if (draining && lost_sync && caps_change) {
     /* avoid caps jitter that we can't be sure of */
     *skipsize = off + 2;
     return FALSE;
@@ -572,7 +572,6 @@ gst_mpeg_audio_parse_handle_first_frame (GstMpegAudioParse * mp3parse,
   GstFormat fmt = GST_FORMAT_BYTES;
   guint32 read_id;
   const guint8 *data;
-  GstBaseParseSeekable seekable;
   guint bitrate;
 
   if (mp3parse->sent_codec_tag)
@@ -926,6 +925,8 @@ gst_mpeg_audio_parse_handle_first_frame (GstMpegAudioParse * mp3parse,
   }
 
   /* tell baseclass how nicely we can seek, and a bitrate if one found */
+  /* FIXME: fill index with seek table */
+#if 0
   seekable = GST_BASE_PARSE_SEEK_DEFAULT;
   if ((mp3parse->xing_flags & XING_TOC_FLAG) && mp3parse->xing_bytes &&
       mp3parse->xing_total_time)
@@ -934,6 +935,7 @@ gst_mpeg_audio_parse_handle_first_frame (GstMpegAudioParse * mp3parse,
   if (mp3parse->vbri_seek_table && mp3parse->vbri_bytes &&
       mp3parse->vbri_total_time)
     seekable = GST_BASE_PARSE_SEEK_TABLE;
+#endif
 
   if (mp3parse->xing_bitrate)
     bitrate = mp3parse->xing_bitrate;
@@ -942,7 +944,7 @@ gst_mpeg_audio_parse_handle_first_frame (GstMpegAudioParse * mp3parse,
   else
     bitrate = 0;
 
-  gst_base_parse_set_seek (GST_BASE_PARSE (mp3parse), seekable, bitrate);
+  gst_base_parse_set_average_bitrate (GST_BASE_PARSE (mp3parse), bitrate);
 }
 
 static GstFlowReturn
index 68b2597..7580001 100644 (file)
@@ -24,7 +24,7 @@
 #define __GST_MPEG_AUDIO_PARSE_H__
 
 #include <gst/gst.h>
-#include <gst/baseparse/gstbaseparse.h>
+#include <gst/base/gstbaseparse.h>
 
 G_BEGIN_DECLS