X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=libs%2Fgst%2Fbase%2Fgstbaseparse.h;h=24fd9079c0cb6a32a1a5f99527f6969b44b06d74;hb=76c9b0689dce5e3c56887863576b573b50043760;hp=5bef570a926a6d3d2b24094a87886a1413e85067;hpb=bfa4bb7150ae84a0948b5f568c4214359226efd0;p=platform%2Fupstream%2Fgstreamer.git diff --git a/libs/gst/base/gstbaseparse.h b/libs/gst/base/gstbaseparse.h index 5bef570..24fd907 100644 --- a/libs/gst/base/gstbaseparse.h +++ b/libs/gst/base/gstbaseparse.h @@ -15,14 +15,15 @@ * * 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., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_BASE_PARSE_H__ #define __GST_BASE_PARSE_H__ #include +#include G_BEGIN_DECLS @@ -39,8 +40,6 @@ G_BEGIN_DECLS * @obj: base parse instance * * Gives the pointer to the source #GstPad object of the element. - * - * Since: 0.10.33 */ #define GST_BASE_PARSE_SRC_PAD(obj) (GST_BASE_PARSE_CAST (obj)->srcpad) @@ -49,19 +48,16 @@ G_BEGIN_DECLS * @obj: base parse instance * * Gives the pointer to the sink #GstPad object of the element. - * - * Since: 0.10.33 */ #define GST_BASE_PARSE_SINK_PAD(obj) (GST_BASE_PARSE_CAST (obj)->sinkpad) /** * GST_BASE_PARSE_FLOW_DROPPED: * - * A #GstFlowReturn that can be returned from parse_frame to - * indicate that no output buffer was generated, or from pre_push_frame to - * to forego pushing buffer. - * - * Since: 0.10.33 + * A #GstFlowReturn that can be returned from + * #GstBaseParseClass.handle_frame() to indicate that no output buffer was + * generated, or from #GstBaseParseClass.pre_push_frame() to to forego + * pushing buffer. */ #define GST_BASE_PARSE_FLOW_DROPPED GST_FLOW_CUSTOM_SUCCESS @@ -74,8 +70,6 @@ G_BEGIN_DECLS * @parse: base parse instance * * Obtains current sync status. - * - * Since: 0.10.33 */ #define GST_BASE_PARSE_LOST_SYNC(parse) (!!(GST_BASE_PARSE_CAST(parse)->flags & GST_BASE_PARSE_FLAG_LOST_SYNC)) @@ -85,8 +79,6 @@ G_BEGIN_DECLS * * Obtains current drain status (ie. whether EOS has been received and * the parser is now processing the frames at the end of the stream) - * - * Since: 0.10.33 */ #define GST_BASE_PARSE_DRAINING(parse) (!!(GST_BASE_PARSE_CAST(parse)->flags & GST_BASE_PARSE_FLAG_DRAINING)) @@ -104,28 +96,26 @@ G_BEGIN_DECLS * that regular segment clipping can still be performed (as opposed to * any custom one having been done). * @GST_BASE_PARSE_FRAME_FLAG_DROP: indicates to @finish_frame that the - * the frame should be dropped (and might be handled internall by subclass) + * the frame should be dropped (and might be handled internally by subclass) * @GST_BASE_PARSE_FRAME_FLAG_QUEUE: indicates to @finish_frame that the * the frame should be queued for now and processed fully later * when the first non-queued frame is finished * * Flags to be used in a #GstBaseParseFrame. - * - * Since: 0.10.33 */ typedef enum { GST_BASE_PARSE_FRAME_FLAG_NONE = 0, GST_BASE_PARSE_FRAME_FLAG_NEW_FRAME = (1 << 0), - GST_BASE_PARSE_FRAME_FLAG_NO_FRAME = (1 << 0), - GST_BASE_PARSE_FRAME_FLAG_CLIP = (1 << 1), - GST_BASE_PARSE_FRAME_FLAG_DROP = (1 << 2), - GST_BASE_PARSE_FRAME_FLAG_QUEUE = (1 << 3) + GST_BASE_PARSE_FRAME_FLAG_NO_FRAME = (1 << 1), + GST_BASE_PARSE_FRAME_FLAG_CLIP = (1 << 2), + GST_BASE_PARSE_FRAME_FLAG_DROP = (1 << 3), + GST_BASE_PARSE_FRAME_FLAG_QUEUE = (1 << 4) } GstBaseParseFrameFlags; /** * GstBaseParseFrame: * @buffer: input data to be parsed for frames. - * @out_buffer: (optional) (replacement) output data. + * @out_buffer: output data. * @offset: media specific offset of input frame * Note that a converter may have a different one on the frame's buffer. * @overhead: subclass can set this to indicates the metadata overhead @@ -143,8 +133,6 @@ typedef enum { * than global parameters). Some of these may apply to each parsing stage, others * only to some a particular one. These parameters are effectively zeroed at start * of each frame's processing, i.e. parsing virtual method invocation sequence. - * - * Since: 0.10.33 */ typedef struct { GstBuffer * buffer; @@ -170,6 +158,7 @@ typedef struct _GstBaseParsePrivate GstBaseParsePrivate; * The opaque #GstBaseParse data structure. */ struct _GstBaseParse { + /*< public >*/ GstElement element; /*< protected >*/ @@ -196,22 +185,23 @@ struct _GstBaseParse { * @stop: Optional. * Called when the element stops processing. * Allows closing external resources. - * @set_sink_caps: allows the subclass to be notified of the actual caps set. - * @get_sink_caps: allows the subclass to do its own sink get caps if needed. + * @set_sink_caps: Optional. + * Allows the subclass to be notified of the actual caps set. + * @get_sink_caps: Optional. + * Allows the subclass to do its own sink get caps if needed. * @handle_frame: Parses the input data into valid frames as defined by subclass * which should be passed to gst_base_parse_finish_frame(). * The frame's input buffer is guaranteed writable, * whereas the input frame ownership is held by caller * (so subclass should make a copy if it needs to hang on). - * Input buffer (data) is equally managed by baseclass and should also be - * copied (e.g. gst_buffer_copy_region()) when needed. - * Time metadata will already be set as much as possible by baseclass - * according to upstream information and/or subclass settings, + * Input buffer (data) is provided by baseclass with as much + * metadata set as possible by baseclass according to upstream + * information and/or subclass settings, * though subclass may still set buffer timestamp and duration * if desired. * @convert: Optional. * Convert between formats. - * @event: Optional. + * @sink_event: Optional. * Event handler on the sink pad. This function should chain * up to the parent implementation to let the default handler * run. @@ -227,11 +217,17 @@ struct _GstBaseParse { * @detect: Optional. * Called until it doesn't return GST_FLOW_OK anymore for * the first buffers. Can be used by the subclass to detect - * the stream format. Since: 0.10.36 + * the stream format. + * @sink_query: Optional. + * Query handler on the sink pad. This function should chain + * up to the parent implementation to let the default handler + * run (Since: 1.2) + * @src_query: Optional. + * Query handler on the source pad. Should chain up to the + * parent to let the default handler run (Since: 1.2) * * Subclasses can override any of the available virtual methods or not, as - * needed. At minimum @check_valid_frame and @parse_frame needs to be - * overridden. + * needed. At minimum @handle_frame needs to be overridden. */ struct _GstBaseParseClass { GstElementClass parent_class; @@ -259,7 +255,7 @@ struct _GstBaseParseClass { GstFormat dest_format, gint64 * dest_value); - gboolean (*event) (GstBaseParse * parse, + gboolean (*sink_event) (GstBaseParse * parse, GstEvent * event); gboolean (*src_event) (GstBaseParse * parse, @@ -271,71 +267,129 @@ struct _GstBaseParseClass { GstFlowReturn (*detect) (GstBaseParse * parse, GstBuffer * buffer); + gboolean (*sink_query) (GstBaseParse * parse, + GstQuery * query); + + gboolean (*src_query) (GstBaseParse * parse, + GstQuery * query); + /*< private >*/ - gpointer _gst_reserved[GST_PADDING_LARGE]; + gpointer _gst_reserved[GST_PADDING_LARGE - 2]; }; +GST_BASE_API GType gst_base_parse_get_type (void); +GST_BASE_API GType gst_base_parse_frame_get_type (void); +GST_BASE_API GstBaseParseFrame * gst_base_parse_frame_new (GstBuffer * buffer, GstBaseParseFrameFlags flags, gint overhead); - +GST_BASE_API void gst_base_parse_frame_init (GstBaseParseFrame * frame); +GST_BASE_API +GstBaseParseFrame * gst_base_parse_frame_copy (GstBaseParseFrame * frame); +GST_BASE_API void gst_base_parse_frame_free (GstBaseParseFrame * frame); +GST_BASE_API GstFlowReturn gst_base_parse_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame); - +GST_BASE_API GstFlowReturn gst_base_parse_finish_frame (GstBaseParse * parse, GstBaseParseFrame * frame, gint size); - +GST_BASE_API void gst_base_parse_set_duration (GstBaseParse * parse, GstFormat fmt, gint64 duration, gint interval); - +GST_BASE_API void gst_base_parse_set_average_bitrate (GstBaseParse * parse, guint bitrate); - +GST_BASE_API void gst_base_parse_set_min_frame_size (GstBaseParse * parse, guint min_size); - +GST_BASE_API void gst_base_parse_set_has_timing_info (GstBaseParse * parse, gboolean has_timing); +GST_BASE_API +void gst_base_parse_drain (GstBaseParse * parse); +GST_BASE_API void gst_base_parse_set_syncable (GstBaseParse * parse, gboolean syncable); - +GST_BASE_API void gst_base_parse_set_passthrough (GstBaseParse * parse, gboolean passthrough); - +GST_BASE_API +void gst_base_parse_set_pts_interpolation (GstBaseParse * parse, + gboolean pts_interpolate); +GST_BASE_API +void gst_base_parse_set_infer_ts (GstBaseParse * parse, + gboolean infer_ts); +GST_BASE_API void gst_base_parse_set_frame_rate (GstBaseParse * parse, guint fps_num, guint fps_den, guint lead_in, guint lead_out); - +GST_BASE_API void gst_base_parse_set_latency (GstBaseParse * parse, GstClockTime min_latency, GstClockTime max_latency); - +GST_BASE_API gboolean gst_base_parse_convert_default (GstBaseParse * parse, GstFormat src_format, gint64 src_value, GstFormat dest_format, gint64 * dest_value); - +GST_BASE_API gboolean gst_base_parse_add_index_entry (GstBaseParse * parse, guint64 offset, GstClockTime ts, gboolean key, gboolean force); - +GST_BASE_API +void gst_base_parse_set_ts_at_offset (GstBaseParse *parse, + gsize offset); +GST_BASE_API +void gst_base_parse_merge_tags (GstBaseParse * parse, + GstTagList * tags, + GstTagMergeMode mode); + +#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstBaseParseFrame, gst_base_parse_frame_free) +#endif + +#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstBaseParse, gst_object_unref) +#endif + +#ifdef TIZEN_FEATURE_BASEPARSE_MODIFICATION +GST_BASE_API +void gst_base_parse_get_upstream_size (GstBaseParse * parse, + gint64 * upstream_size); + +GST_BASE_API +void gst_base_parse_get_index_last_offset (GstBaseParse * parse, + gint64 * index_last_offset); + +GST_BASE_API +void gst_base_parse_get_index_last_ts (GstBaseParse * parse, + GstClockTime * index_last_ts); + +GST_BASE_API +void gst_base_parse_get_pad_mode (GstBaseParse * parse, + GstPadMode * pad_mode); + +GST_BASE_API +void gst_base_parse_set_seek_mode (GstBaseParse * parse, + gboolean seek_mode); +#endif G_END_DECLS #endif /* __GST_BASE_PARSE_H__ */