GStreamer player session: remove code for old playbin.
We only support 'playbin2'. Change-Id: Ibe35f71377862cb83742c2f9b606c5e2fdd5199d Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
This commit is contained in:
committed by
Qt by Nokia
parent
db9a6de400
commit
8ce488249e
@@ -60,10 +60,6 @@
|
||||
#include <QtCore/qdir.h>
|
||||
#include <QtCore/qstandardpaths.h>
|
||||
|
||||
#if defined(Q_WS_MAEMO_6) || (GST_VERSION_MICRO > 20)
|
||||
#define USE_PLAYBIN2
|
||||
#endif
|
||||
|
||||
//#define DEBUG_PLAYBIN
|
||||
//#define DEBUG_VO_BIN_DUMP
|
||||
|
||||
@@ -87,7 +83,6 @@ QGstreamerPlayerSession::QGstreamerPlayerSession(QObject *parent)
|
||||
m_pendingState(QMediaPlayer::StoppedState),
|
||||
m_busHelper(0),
|
||||
m_playbin(0),
|
||||
m_usePlaybin2(false),
|
||||
m_usingColorspaceElement(false),
|
||||
m_videoSink(0),
|
||||
m_pendingVideoSink(0),
|
||||
@@ -120,13 +115,9 @@ QGstreamerPlayerSession::QGstreamerPlayerSession(QObject *parent)
|
||||
gboolean result = gst_type_find_register(0, "playlist", GST_RANK_MARGINAL, playlistTypeFindFunction, 0, 0, this, 0);
|
||||
Q_ASSERT(result == TRUE);
|
||||
|
||||
#ifdef USE_PLAYBIN2
|
||||
m_playbin = gst_element_factory_make("playbin2", NULL);
|
||||
#endif
|
||||
|
||||
if (m_playbin) {
|
||||
m_usePlaybin2 = true;
|
||||
|
||||
//GST_PLAY_FLAG_NATIVE_VIDEO omits configuration of ffmpegcolorspace and videoscale,
|
||||
//since those elements are included in the video output bin when necessary.
|
||||
#ifdef Q_WS_MAEMO_6
|
||||
@@ -144,9 +135,6 @@ QGstreamerPlayerSession::QGstreamerPlayerSession(QObject *parent)
|
||||
g_object_set(G_OBJECT(m_playbin), "audio-sink", m_audioSink, NULL);
|
||||
addAudioBufferProbe();
|
||||
}
|
||||
} else {
|
||||
m_usePlaybin2 = false;
|
||||
m_playbin = gst_element_factory_make("playbin", NULL);
|
||||
}
|
||||
|
||||
m_videoOutputBin = gst_bin_new("video-output-bin");
|
||||
@@ -186,7 +174,6 @@ QGstreamerPlayerSession::QGstreamerPlayerSession(QObject *parent)
|
||||
g_object_set(G_OBJECT(m_playbin), "mute", FALSE, NULL);
|
||||
|
||||
g_signal_connect(G_OBJECT(m_playbin), "notify::volume", G_CALLBACK(handleVolumeChange), this);
|
||||
if (m_usePlaybin2)
|
||||
g_signal_connect(G_OBJECT(m_playbin), "notify::mute", G_CALLBACK(handleMutedChange), this);
|
||||
|
||||
g_signal_connect(G_OBJECT(m_playbin), "video-changed", G_CALLBACK(handleStreamsChange), this);
|
||||
@@ -386,7 +373,7 @@ int QGstreamerPlayerSession::activeStream(QMediaStreamsControl::StreamType strea
|
||||
}
|
||||
}
|
||||
|
||||
if (m_usePlaybin2 && streamNumber >= 0)
|
||||
if (streamNumber >= 0)
|
||||
streamNumber += m_playbin2StreamOffset.value(streamType,0);
|
||||
|
||||
return streamNumber;
|
||||
@@ -398,7 +385,7 @@ void QGstreamerPlayerSession::setActiveStream(QMediaStreamsControl::StreamType s
|
||||
qDebug() << Q_FUNC_INFO << streamType << streamNumber;
|
||||
#endif
|
||||
|
||||
if (m_usePlaybin2 && streamNumber >= 0)
|
||||
if (streamNumber >= 0)
|
||||
streamNumber -= m_playbin2StreamOffset.value(streamType,0);
|
||||
|
||||
if (m_playbin) {
|
||||
@@ -911,8 +898,6 @@ void QGstreamerPlayerSession::setVolume(int volume)
|
||||
|
||||
if (m_playbin) {
|
||||
//playbin2 allows to set volume and muted independently,
|
||||
//with playbin1 it's necessary to keep volume at 0 while muted
|
||||
if (!m_muted || m_usePlaybin2)
|
||||
g_object_set(G_OBJECT(m_playbin), "volume", m_volume/100.0, NULL);
|
||||
}
|
||||
|
||||
@@ -928,11 +913,7 @@ void QGstreamerPlayerSession::setMuted(bool muted)
|
||||
if (m_muted != muted) {
|
||||
m_muted = muted;
|
||||
|
||||
if (m_usePlaybin2)
|
||||
g_object_set(G_OBJECT(m_playbin), "mute", m_muted ? TRUE : FALSE, NULL);
|
||||
else
|
||||
g_object_set(G_OBJECT(m_playbin), "volume", (m_muted ? 0 : m_volume/100.0), NULL);
|
||||
|
||||
emit mutedStateChanged(m_muted);
|
||||
}
|
||||
}
|
||||
@@ -1199,7 +1180,7 @@ bool QGstreamerPlayerSession::processBusMessage(const QGstreamerMessage &message
|
||||
&& (err->code == GST_STREAM_ERROR_DECRYPT || err->code == GST_STREAM_ERROR_DECRYPT_NOKEY)) {
|
||||
processInvalidMedia(QMediaPlayer::AccessDeniedError, QString::fromUtf8(err->message));
|
||||
} else {
|
||||
handlePlaybin2 = m_usePlaybin2;
|
||||
handlePlaybin2 = true;
|
||||
}
|
||||
if (!handlePlaybin2)
|
||||
qWarning() << "Error:" << QString::fromUtf8(err->message);
|
||||
@@ -1214,7 +1195,7 @@ bool QGstreamerPlayerSession::processBusMessage(const QGstreamerMessage &message
|
||||
processInvalidMedia(m_everPlayed ? QMediaPlayer::NetworkError : QMediaPlayer::ResourceError,
|
||||
tr("UDP source timeout"));
|
||||
} else {
|
||||
handlePlaybin2 = m_usePlaybin2;
|
||||
handlePlaybin2 = true;
|
||||
}
|
||||
|
||||
if (handlePlaybin2) {
|
||||
@@ -1271,7 +1252,6 @@ void QGstreamerPlayerSession::getStreamsInfo()
|
||||
m_streamTypes.clear();
|
||||
m_playbin2StreamOffset.clear();
|
||||
|
||||
if (m_usePlaybin2) {
|
||||
gint audioStreamsCount = 0;
|
||||
gint videoStreamsCount = 0;
|
||||
gint textStreamsCount = 0;
|
||||
@@ -1329,68 +1309,6 @@ void QGstreamerPlayerSession::getStreamsInfo()
|
||||
|
||||
m_streamProperties.append(streamProperties);
|
||||
}
|
||||
} else { // PlayBin 1
|
||||
enum {
|
||||
GST_STREAM_TYPE_UNKNOWN,
|
||||
GST_STREAM_TYPE_AUDIO,
|
||||
GST_STREAM_TYPE_VIDEO,
|
||||
GST_STREAM_TYPE_TEXT,
|
||||
GST_STREAM_TYPE_SUBPICTURE,
|
||||
GST_STREAM_TYPE_ELEMENT
|
||||
};
|
||||
|
||||
GList* streamInfoList;
|
||||
g_object_get(G_OBJECT(m_playbin), "stream-info", &streamInfoList, NULL);
|
||||
|
||||
for (; streamInfoList != 0; streamInfoList = g_list_next(streamInfoList)) {
|
||||
gint type;
|
||||
gchar *languageCode = 0;
|
||||
|
||||
GObject* streamInfo = G_OBJECT(streamInfoList->data);
|
||||
|
||||
g_object_get(streamInfo, "type", &type, NULL);
|
||||
g_object_get(streamInfo, "language-code", &languageCode, NULL);
|
||||
|
||||
QMediaStreamsControl::StreamType streamType = QMediaStreamsControl::UnknownStream;
|
||||
|
||||
switch (type) {
|
||||
case GST_STREAM_TYPE_VIDEO:
|
||||
streamType = QMediaStreamsControl::VideoStream;
|
||||
haveVideo = true;
|
||||
break;
|
||||
case GST_STREAM_TYPE_AUDIO:
|
||||
streamType = QMediaStreamsControl::AudioStream;
|
||||
haveAudio = true;
|
||||
break;
|
||||
case GST_STREAM_TYPE_SUBPICTURE:
|
||||
streamType = QMediaStreamsControl::SubPictureStream;
|
||||
break;
|
||||
case GST_STREAM_TYPE_UNKNOWN: {
|
||||
GstCaps *caps = 0;
|
||||
g_object_get(streamInfo, "caps", &caps, NULL);
|
||||
const GstStructure *structure = gst_caps_get_structure(caps, 0);
|
||||
const gchar *media_type = gst_structure_get_name(structure);
|
||||
emit error(int(QMediaPlayer::FormatError), QString::fromLatin1("Cannot play stream of type: %1").arg(QString::fromUtf8(media_type)));
|
||||
#ifdef DEBUG_PLAYBIN
|
||||
qDebug() << "Encountered unknown stream type";
|
||||
#endif
|
||||
gst_caps_unref(caps);
|
||||
streamType = QMediaStreamsControl::UnknownStream;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
streamType = QMediaStreamsControl::UnknownStream;
|
||||
break;
|
||||
}
|
||||
|
||||
QMap<QString, QVariant> streamProperties;
|
||||
streamProperties[QtMultimedia::MetaData::Language] = QString::fromUtf8(languageCode);
|
||||
|
||||
m_streamProperties.append(streamProperties);
|
||||
m_streamTypes.append(streamType);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool emitAudioChanged = (haveAudio != m_audioAvailable);
|
||||
bool emitVideoChanged = (haveVideo != m_videoAvailable);
|
||||
@@ -1600,21 +1518,6 @@ void QGstreamerPlayerSession::updateVolume()
|
||||
double volume = 1.0;
|
||||
g_object_get(m_playbin, "volume", &volume, NULL);
|
||||
|
||||
//special case for playbin1 volume changes in muted state
|
||||
//playbin1 has no separate muted state,
|
||||
//it's emulated with volume value saved and set to 0
|
||||
//this change should not be reported to user
|
||||
if (!m_usePlaybin2 && m_muted) {
|
||||
if (volume > 0.001) {
|
||||
//volume is changed, player in not muted any more
|
||||
m_muted = false;
|
||||
emit mutedStateChanged(m_muted = false);
|
||||
} else {
|
||||
//don't emit volume changed to 0 when player is muted
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (m_volume != int(volume*100 + 0.5)) {
|
||||
m_volume = int(volume*100 + 0.5);
|
||||
#ifdef DEBUG_PLAYBIN
|
||||
|
||||
@@ -199,7 +199,6 @@ private:
|
||||
QMediaPlayer::State m_pendingState;
|
||||
QGstreamerBusHelper* m_busHelper;
|
||||
GstElement* m_playbin;
|
||||
bool m_usePlaybin2;
|
||||
|
||||
GstElement* m_videoOutputBin;
|
||||
GstElement* m_videoIdentity;
|
||||
|
||||
Reference in New Issue
Block a user