RDKTV-23013: Hisense v2 SetPlayback rate failing to play at 2X speed Reason for change: disable instant rate change in cobalt. Test Procedure: refer ticket. Risks: None Priority: P1 Signed-off-by: sramul630 <sunil_ramulu@comcast.com> Change-Id: Icae7b8014600d2791f4cc01f7e306f48014723b9
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 d5ce9a6..d3b9b5f 100644 --- a/src/third_party/starboard/rdk/shared/player/player_internal.cc +++ b/src/third_party/starboard/rdk/shared/player/player_internal.cc
@@ -470,7 +470,8 @@ return GST_PAD_PROBE_OK; }, msg, [](gpointer data) { gst_message_unref(GST_MESSAGE(data)); }); -#if GST_CHECK_VERSION(1,18,0) +//#if GST_CHECK_VERSION(1,18,0) +#if 0 gst_pad_add_probe ( pad, GST_PAD_PROBE_TYPE_EVENT_BOTH, [](GstPad * pad, GstPadProbeInfo * info, gpointer data) -> GstPadProbeReturn { @@ -2383,7 +2384,22 @@ need_instant_rate_change_ = ( rate != 1. ); mutex_.Release(); -#if GST_CHECK_VERSION(1,18,0) + // TODO: remove special handling of amlhalasink + GstElement* sink = nullptr; + g_object_get(pipeline_, "audio-sink", &sink, nullptr); + if (sink && g_str_has_prefix(GST_ELEMENT_NAME(sink), "amlhalasink")) { + GstSegment* segment = gst_segment_new(); + gst_segment_init(segment, GST_FORMAT_TIME); + segment->rate = rate; + segment->start = GST_CLOCK_TIME_NONE; + segment->position = GST_CLOCK_TIME_NONE; + GST_DEBUG_OBJECT(pipeline_, "===> Sending new segment %" GST_SEGMENT_FORMAT, segment); + success = gst_pad_send_event (GST_BASE_SINK_PAD(sink), gst_event_new_segment(segment)); + GST_DEBUG_OBJECT(pipeline_, "===> Sent new segment, success = %s", success ? "true" : "false"); + gst_segment_free(segment); + } +//#if GST_CHECK_VERSION(1,18,0) +#if 0 static const bool kEnableInstantRateChangeSeek = ([]()->bool { if( !!getenv("COBALT_DISABLE_INSTANT_RATE_CHANGE_SEEK") ) return false; @@ -2405,6 +2421,7 @@ } else #endif + else { GstStructure* s = gst_structure_new( kCustomInstantRateChangeEventName, "rate", G_TYPE_DOUBLE, rate, NULL); @@ -2412,6 +2429,9 @@ pipeline_, gst_event_new_custom(GST_EVENT_CUSTOM_DOWNSTREAM_OOB, s)); } + if (sink) + g_object_unref(sink); + mutex_.Acquire(); }