alexaSDKVersion:1.5.0
in MediaPlayer.cpp, gst_element_query_position() called while do get offset.
but i found the position value get from gst_element_query_position() is not accurate.
My test codes shows as following:(log with tag Maliang is added by me)
=====================================
void MediaPlayer::handleGetOffset(SourceId id, std::promise<std::chrono::milliseconds>* promise) {
//skip...
else if (!gst_element_query_position(m_pipeline.pipeline, GST_FORMAT_TIME, &position))
{
// Query Failed. ACSDK_ERROR(LX("handleGetOffsetInMillisecondsFailed").d("reason", "gstElementQueryPositionError")); } else { // Query succeeded. std::chrono::milliseconds startStreamingPoint = std::chrono::milliseconds::zero(); if (m_urlConverter) { startStreamingPoint = m_urlConverter->getStartStreamingPoint(); } ACSDK_ERROR(LX("Maliang").d("startStreamingPoint", static_cast<int64_t>(std::chrono::duration_cast<std::chrono::milliseconds>(startStreamingPoint).count()))); ACSDK_ERROR(LX("Maliang").d("position", static_cast<int64_t>(std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::nanoseconds(position)).count()))); promise->set_value( startStreamingPoint + std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::nanoseconds(position))); for(int i = 0; i < 20; i++) { gst_element_query_position(m_pipeline.pipeline, GST_FORMAT_TIME, &position ACSDK_ERROR(LX("Maliang").d("position", static_cast<int64_t>(std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::nanoseconds(position)).count()))); }
}
=====================================
test result:
2018-06-01 01:17:44.414 [ 2] E MediaPlayer:Maliang:position=55620 2018-06-01 01:17:44.414 [ 2] E MediaPlayer:Maliang:position=55620 2018-06-01 01:17:44.414 [ 2] E MediaPlayer:Maliang:position=55620 2018-06-01 01:17:44.414 [ 2] E MediaPlayer:Maliang:position=55620 2018-06-01 01:17:44.415 [ 2] E MediaPlayer:Maliang:position=55620 2018-06-01 01:17:44.415 [ 2] E MediaPlayer:Maliang:position=55620 2018-06-01 01:17:44.415 [ 2] E MediaPlayer:Maliang:position=55620 2018-06-01 01:17:44.419 [ 2] E MediaPlayer:Maliang:startStreamingPoint=0 2018-06-01 01:17:44.419 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.421 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.421 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.422 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.423 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.424 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.425 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.425 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.425 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.426 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.426 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.426 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.426 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.426 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.426 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.426 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.427 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.427 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.427 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.427 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.428 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.428 [ 2] E MediaPlayer:Maliang:startStreamingPoint=0 2018-06-01 01:17:44.428 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.428 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.429 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.429 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.429 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.429 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.429 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.430 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.430 [ 2] E MediaPlayer:Maliang:position=56241 2018-06-01 01:17:44.430 [ 2] E MediaPlayer:Maliang:position=56241 2018-06-01 01:17:44.430 [ 2] E MediaPlayer:Maliang:position=56241 2018-06-01 01:17:44.432 [ 2] E MediaPlayer:Maliang:position=56267 2018-06-01 01:17:44.433 [ 2] E MediaPlayer:Maliang:position=56267 2018-06-01 01:17:44.434 [ 2] E MediaPlayer:Maliang:position=56267 2018-06-01 01:17:44.435 [ 2] E MediaPlayer:Maliang:position=56267 2018-06-01 01:17:44.435 [ 2] E MediaPlayer:Maliang:position=56267 2018-06-01 01:17:44.436 [ 2] E MediaPlayer:Maliang:position=56267 2018-06-01 01:17:44.437 [ 2] E MediaPlayer:Maliang:position=56267 2018-06-01 01:17:44.438 [ 2] E MediaPlayer:Maliang:position=56267 2018-06-01 01:17:44.438 [ 2] E MediaPlayer:Maliang:position=56267 2018-06-01 01:17:44.439 [ 2] E MediaPlayer:Maliang:position=56267
Error or inaccurate position value like:
2018-06-01 01:17:44.430 [ 2] E MediaPlayer:Maliang:position=56215 2018-06-01 01:17:44.430 [ 2] E MediaPlayer:Maliang:position=56241 2018-06-01 01:17:44.430 [ 2] E MediaPlayer:Maliang:position=56241 2018-06-01 01:17:44.430 [ 2] E MediaPlayer:Maliang:position=56241 2018-06-01 01:17:44.432 [ 2] E MediaPlayer:Maliang:position=56267 2018-06-01 01:17:44.433 [ 2] E MediaPlayer:Maliang:position=56267
we compare position value with log print time. In the period of 3 millisenconds, the postion changed from 56215 to 56267, increased 52ms.
is it normal? why??
Another question, we found the position value increaded 26ms in each change. why is 26ms?
if it associate with the feed in buffer 4096?
Note:
the above test has run with source from url and stream, they have same result.