From 9bdd0267b1652165a899269c8b8a2bed4077667c Mon Sep 17 00:00:00 2001 From: Joungkook Seo Date: Thu, 21 Mar 2013 15:01:04 +0900 Subject: [PATCH] [gstreamer] N_SE-28026 (mp3 seek) defect resolve Change-Id: I81082226837298b9b8fe7e41886bad61f239ea1a --- libs/gst/base/gstbaseparse.c | 21 +++++++++++++++++++++ libs/gst/base/gstbaseparse.h | 3 +++ packaging/gstreamer.spec | 2 +- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/libs/gst/base/gstbaseparse.c b/libs/gst/base/gstbaseparse.c index 25f88a1..54d675a 100644 --- a/libs/gst/base/gstbaseparse.c +++ b/libs/gst/base/gstbaseparse.c @@ -335,6 +335,8 @@ struct _GstBaseParsePrivate gboolean first_frame; /* check first frame in base parser */ gint64 remove_from_total; /* remove zero padding */ #endif + + gint64 encoded_size; /*endcoded size = total size - id3*/ }; typedef struct _GstBaseParseSeek @@ -769,6 +771,8 @@ gst_base_parse_reset (GstBaseParse * parse) parse->priv->remove_from_total = 0; #endif + parse->priv->encoded_size = 0; + if (parse->priv->pending_segment) { gst_event_unref (parse->priv->pending_segment); parse->priv->pending_segment = NULL; @@ -1302,6 +1306,13 @@ gst_base_parse_update_duration (GstBaseParse * baseparse) gint64 ptot, dest_value; qres = gst_pad_query_duration (peer, &pformat, &ptot); + + if (ptot > 0) { + parse->priv->encoded_size = ptot; + GST_INFO_OBJECT (parse, "[ID3] (ptot) parse->priv->encoded_size :( %" G_GINT64_FORMAT ")",parse->priv->encoded_size); + } + + gst_object_unref (GST_OBJECT (peer)); if (qres) { if (gst_base_parse_convert (parse, pformat, ptot, @@ -4160,6 +4171,16 @@ gst_base_parse_get_upstream_size (GstBaseParse * parse, gint64 * upstream_size) } void +gst_base_parse_get_encoded_size (GstBaseParse * parse, gint64 * encoded_size) +{ + GST_INFO_OBJECT (parse, "get encoded_size param for child parser"); + + GST_BASE_PARSE_INDEX_LOCK (parse); + *encoded_size = parse->priv->encoded_size; + GST_BASE_PARSE_INDEX_UNLOCK (parse); +} + +void gst_base_parse_get_index_last_offset (GstBaseParse * parse, gint64 * index_last_offset) { GST_INFO_OBJECT (parse, "get index_last_offset param for child parser"); diff --git a/libs/gst/base/gstbaseparse.h b/libs/gst/base/gstbaseparse.h index c7544b5..e916992 100644 --- a/libs/gst/base/gstbaseparse.h +++ b/libs/gst/base/gstbaseparse.h @@ -328,6 +328,9 @@ gboolean gst_base_parse_add_index_entry (GstBaseParse * parse, void gst_base_parse_get_upstream_size (GstBaseParse * parse, gint64 * upstream_size); +void gst_base_parse_get_encoded_size (GstBaseParse * parse, + gint64 * encoded_size); + void gst_base_parse_get_index_last_offset (GstBaseParse * parse, gint64 * index_last_offset); diff --git a/packaging/gstreamer.spec b/packaging/gstreamer.spec index df2b620..80d35f3 100644 --- a/packaging/gstreamer.spec +++ b/packaging/gstreamer.spec @@ -1,7 +1,7 @@ Name: gstreamer Summary: GStreamer streaming media framework runtime Version: 0.10.36 -Release: 5 +Release: 6 Group: Applications/Multimedia License: LGPLv2+ Source0: %{name}-%{version}.tar.gz -- 2.7.4