Gst player backend: don't show the first frame when resuming playback.
It's necessary to temporarily disable show-preroll-frame of video sink, load pipeline to paused state, seek to requested position, and after seeking is finished (position updated) playback is started with show-preroll-frame restored. Task-number: MOBILITY-3030 Reviewed-by: Jonas Rabbe Change-Id: Ide1e6d909dd53f670229c293bc6be496a54e8626 (cherry picked from commit 625cce87e28fc7b5ec8785824affb3129fd3607b) Reviewed-on: http://codereview.qt-project.org/5500 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
This commit is contained in:
committed by
Qt by Nokia
parent
a328dab2e3
commit
7941413f3f
@@ -103,6 +103,7 @@ QGstreamerPlayerSession::QGstreamerPlayerSession(QObject *parent)
|
||||
m_lastPosition(0),
|
||||
m_duration(-1),
|
||||
m_durationQueries(0),
|
||||
m_displayPrerolledFrame(true),
|
||||
m_sourceType(UnknownSrc),
|
||||
m_everPlayed(false),
|
||||
m_isLiveSource(false)
|
||||
@@ -536,6 +537,11 @@ void QGstreamerPlayerSession::setVideoRenderer(QObject *videoOutput)
|
||||
linked = gst_element_link_many(m_videoIdentity, m_colorSpace, m_videoSink, NULL);
|
||||
}
|
||||
|
||||
if (g_object_class_find_property(G_OBJECT_GET_CLASS(m_videoSink), "show-preroll-frame") != 0) {
|
||||
gboolean value = m_displayPrerolledFrame;
|
||||
g_object_set(G_OBJECT(m_videoSink), "show-preroll-frame", value, NULL);
|
||||
}
|
||||
|
||||
switch (m_pendingState) {
|
||||
case QMediaPlayer::PausedState:
|
||||
gst_element_set_state(m_playbin, GST_STATE_PAUSED);
|
||||
@@ -1596,3 +1602,17 @@ void QGstreamerPlayerSession::processInvalidMedia(QMediaPlayer::Error errorCode,
|
||||
stop();
|
||||
emit error(int(errorCode), errorString);
|
||||
}
|
||||
|
||||
void QGstreamerPlayerSession::showPrerollFrames(bool enabled)
|
||||
{
|
||||
#ifdef DEBUG_PLAYBIN
|
||||
qDebug() << Q_FUNC_INFO << enabled;
|
||||
#endif
|
||||
if (enabled != m_displayPrerolledFrame && m_videoSink &&
|
||||
g_object_class_find_property(G_OBJECT_GET_CLASS(m_videoSink), "show-preroll-frame") != 0) {
|
||||
|
||||
gboolean value = enabled;
|
||||
g_object_set(G_OBJECT(m_videoSink), "show-preroll-frame", value, NULL);
|
||||
m_displayPrerolledFrame = enabled;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user