baseparse: refactor passthrough into format flags
[platform/upstream/gstreamer.git] / gst / audioparsers / gstbaseparse.h
index d5d4415..0438c42 100644 (file)
@@ -163,12 +163,33 @@ typedef struct {
  */
 #define GST_BASE_PARSE_FRAME_DRAIN(frame)    (!!(frame->flags & GST_BASE_PARSE_FRAME_FLAG_DRAIN))
 
+/**
+ * GstBaseParseFormat:
+ * @GST_BASE_PARSE_FORMAT_NONE: default setting
+ * @GST_BASE_PARSE_FORMAT_PASSTHROUGH: nature of format or configuration
+ *   does not allow (much) parsing, so parser should operate in passthrough mode
+ *   (which only applies operating in pull mode).  That is, incoming buffers
+ *   are pushed through unmodified, i.e. no @check_valid_frame or @parse_frame
+ *   callbacks will be invoked.  On the other hand, @pre_push_buffer is still invoked,
+ *   where subclass can perform as much or as little is appropriate for
+ *   "passthrough" semantics.
+ * @GST_BASE_PARSE_FORMAT_HAS_TIME: frames carry timing info which subclass
+ *   can (generally) parse and provide.  In particular, intrinsic time
+ *   (rather than estimated) can be obtained following seek.
+ *
+ * Since: 0.10.x
+ */
+typedef enum _GstBaseParseFormat {
+  GST_BASE_PARSE_FORMAT_NONE               = 0,
+  GST_BASE_PARSE_FORMAT_PASSTHROUGH        = (1 << 0),
+  GST_BASE_PARSE_FORMAT_HAS_TIME           = (1 << 1),
+} GstBaseParseFormat;
 
 /**
  * GstBaseParseSeekable:
  * @GST_BASE_PARSE_SEEK_NONE: No seeking possible.
- * GST_BASE_PARSE_SEEK_DEFAULT: Default seeking possible using estimated bitrate.
- * GST_BASE_PARSE_SEEK_TABLE: Additional metadata provides more accurate seeking.
+ * @GST_BASE_PARSE_SEEK_DEFAULT: Default seeking possible using estimated bitrate.
+ * @GST_BASE_PARSE_SEEK_TABLE: Additional metadata provides more accurate seeking.
  *
  * Indicates what level (of quality) of seeking is possible.
  *
@@ -317,7 +338,8 @@ void gst_base_parse_set_seek (GstBaseParse * parse,
 
 void gst_base_parse_set_min_frame_size (GstBaseParse *parse, guint min_size);
 
-void gst_base_parse_set_passthrough (GstBaseParse * parse, gboolean passthrough);
+void gst_base_parse_set_format (GstBaseParse * parse, GstBaseParseFormat flag,
+                                gboolean on);
 
 void gst_base_parse_set_frame_props (GstBaseParse * parse, guint fps_num,
                                      guint fps_den, guint lead_in, guint lead_out);