void MFPlayerControl::handleVideoAvailable() { if (m_videoAvailable) return; m_videoAvailable = true; emit videoAvailableChanged(m_videoAvailable); }
void DirectShowPlayerControl::emitPropertyChanges() { int properties = m_updateProperties; m_updateProperties = 0; if ((properties & ErrorProperty) && m_error != QMediaPlayer::NoError) emit error(m_error, m_errorString); if (properties & PlaybackRateProperty) emit playbackRateChanged(m_playbackRate); if (properties & StreamTypesProperty) { emit audioAvailableChanged(m_streamTypes & DirectShowPlayerService::AudioStream); emit videoAvailableChanged(m_streamTypes & DirectShowPlayerService::VideoStream); } if (properties & PositionProperty) emit positionChanged(m_position); if (properties & DurationProperty) emit durationChanged(m_duration); if (properties & SeekableProperty) emit seekableChanged(m_seekable); if (properties & StatusProperty) emit mediaStatusChanged(m_status); if (properties & StateProperty) emit stateChanged(m_state); }
void QAndroidMediaPlayerControl::setVideoAvailable(bool available) { if (mVideoAvailable == available) return; mVideoAvailable = available; Q_EMIT videoAvailableChanged(mVideoAvailable); }
void MFPlayerControl::resetAudioVideoAvailable() { bool videoDirty = false; if (m_videoAvailable) { m_videoAvailable = false; videoDirty = true; } if (m_audioAvailable) { m_audioAvailable = false; emit audioAvailableChanged(m_audioAvailable); } if (videoDirty) emit videoAvailableChanged(m_videoAvailable); }
void BbMediaPlayerControl::updateMetaData() { if (m_mediaStatus == QMediaPlayer::LoadedMedia) m_metaData.parse(m_contextName); else m_metaData.clear(); if (m_videoControl) m_videoControl->setMetaData(m_metaData); emit durationChanged(m_metaData.duration()); emit audioAvailableChanged(m_metaData.hasAudio()); emit videoAvailableChanged(m_metaData.hasVideo()); emit availablePlaybackRangesChanged(availablePlaybackRanges()); }
void QGstreamerPlayerSession::getStreamsInfo() { GstFormat format = GST_FORMAT_TIME; gint64 duration = 0; if (gst_element_query_duration(m_playbin, &format, &duration)) { int newDuration = duration / 1000000; if (m_duration != newDuration) { m_duration = newDuration; emit durationChanged(m_duration); } } //check if video is available: bool haveAudio = false; bool haveVideo = false; m_streamProperties.clear(); m_streamTypes.clear(); if (m_usePlaybin2) { gint audioStreamsCount = 0; gint videoStreamsCount = 0; gint textStreamsCount = 0; g_object_get(G_OBJECT(m_playbin), "n-audio", &audioStreamsCount, NULL); g_object_get(G_OBJECT(m_playbin), "n-video", &videoStreamsCount, NULL); g_object_get(G_OBJECT(m_playbin), "n-text", &textStreamsCount, NULL); haveAudio = audioStreamsCount > 0; haveVideo = videoStreamsCount > 0; m_playbin2StreamOffset[QMediaStreamsControl::AudioStream] = 0; m_playbin2StreamOffset[QMediaStreamsControl::VideoStream] = audioStreamsCount; m_playbin2StreamOffset[QMediaStreamsControl::SubPictureStream] = audioStreamsCount+videoStreamsCount; for (int i=0; i<audioStreamsCount; i++) m_streamTypes.append(QMediaStreamsControl::AudioStream); for (int i=0; i<videoStreamsCount; i++) m_streamTypes.append(QMediaStreamsControl::VideoStream); for (int i=0; i<textStreamsCount; i++) m_streamTypes.append(QMediaStreamsControl::SubPictureStream); for (int i=0; i<m_streamTypes.count(); i++) { QMediaStreamsControl::StreamType streamType = m_streamTypes[i]; QMap<QtMultimediaKit::MetaData, QVariant> streamProperties; int streamIndex = i - m_playbin2StreamOffset[streamType]; GstTagList *tags = 0; switch (streamType) { case QMediaStreamsControl::AudioStream: g_signal_emit_by_name(G_OBJECT(m_playbin), "get-audio-tags", streamIndex, &tags); break; case QMediaStreamsControl::VideoStream: g_signal_emit_by_name(G_OBJECT(m_playbin), "get-video-tags", streamIndex, &tags); break; case QMediaStreamsControl::SubPictureStream: g_signal_emit_by_name(G_OBJECT(m_playbin), "get-text-tags", streamIndex, &tags); break; default: break; } if (tags && gst_is_tag_list(tags)) { gchar *languageCode = 0; if (gst_tag_list_get_string(tags, GST_TAG_LANGUAGE_CODE, &languageCode)) streamProperties[QtMultimediaKit::Language] = QString::fromUtf8(languageCode); //qDebug() << "language for setream" << i << QString::fromUtf8(languageCode); g_free (languageCode); } 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* streamInfo; g_object_get(G_OBJECT(m_playbin), "stream-info", &streamInfo, NULL); for (; streamInfo != 0; streamInfo = g_list_next(streamInfo)) { gint type; gchar *languageCode = 0; GObject* obj = G_OBJECT(streamInfo->data); g_object_get(obj, "type", &type, NULL); g_object_get(obj, "language-code", &languageCode, NULL); if (type == GST_STREAM_TYPE_VIDEO) haveVideo = true; 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; default: streamType = QMediaStreamsControl::UnknownStream; break; } QMap<QtMultimediaKit::MetaData, QVariant> streamProperties; streamProperties[QtMultimediaKit::Language] = QString::fromUtf8(languageCode); m_streamProperties.append(streamProperties); m_streamTypes.append(streamType); } } if (haveAudio != m_audioAvailable) { m_audioAvailable = haveAudio; emit audioAvailableChanged(m_audioAvailable); } if (haveVideo != m_videoAvailable) { m_videoAvailable = haveVideo; emit videoAvailableChanged(m_videoAvailable); } emit streamsChanged(); }
void setVideoAvailable(bool available) { emit videoAvailableChanged(m_videoAvailable = available); }
void QWmpPlayerControl::setVideoAvailable(bool available) { if (m_videoAvailable != available) emit videoAvailableChanged(m_videoAvailable = available); }