Disable PTS interpolation in base parsers And dispatch decoder status immediately. Change-Id: I99d6ad2a09dbf50fe79b1e5ef7bef3d74ff736c5 Signed-off-by: Eugene Mutavchi <Ievgen_Mutavchi@comcast.com>
diff --git a/src/third_party/starboard/rdk/shared/player/player_internal.cc b/src/third_party/starboard/rdk/shared/player/player_internal.cc index 755f0d1..2300156 100644 --- a/src/third_party/starboard/rdk/shared/player/player_internal.cc +++ b/src/third_party/starboard/rdk/shared/player/player_internal.cc
@@ -29,6 +29,7 @@ #include <gst/base/gstflowcombiner.h> #include <gst/video/video.h> #include <gst/base/gstbasetransform.h> +#include <gst/base/gstbaseparse.h> #include <map> #include <string> @@ -1266,9 +1267,17 @@ } decoder_state_data_ |= need_data; + +#if 1 + if ((need_data & static_cast<int>(MediaType::kAudio)) != 0) + decoder_status_func_(player_, context_, kSbMediaTypeAudio, kSbPlayerDecoderStateNeedsData, ticket_); + if ((need_data & static_cast<int>(MediaType::kVideo)) != 0) + decoder_status_func_(player_, context_, kSbMediaTypeVideo, kSbPlayerDecoderStateNeedsData, ticket_); +#else DispatchOnWorkerThread(new DecoderStatusTask( decoder_status_func_, player_, ticket_, context_, kSbPlayerDecoderStateNeedsData, static_cast<MediaType>(need_data))); +#endif } gboolean HandleBusMessage(GstBus* bus, GstMessage* message); @@ -1968,6 +1977,10 @@ } } + if (GST_IS_BASE_PARSE(element)) { + gst_base_parse_set_pts_interpolation(GST_BASE_PARSE(element), FALSE); + } + const gchar *klass_str = gst_element_class_get_metadata(GST_ELEMENT_GET_CLASS(element), "klass"); if (strstr(klass_str, "Sink")) { GObjectClass *oclass = G_OBJECT_GET_CLASS(element);