本文整理汇总了C++中MediaPlayer::reportError方法的典型用法代码示例。如果您正苦于以下问题:C++ MediaPlayer::reportError方法的具体用法?C++ MediaPlayer::reportError怎么用?C++ MediaPlayer::reportError使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MediaPlayer
的用法示例。
在下文中一共展示了MediaPlayer::reportError方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: cb_busMessageDispatcher
GstBusSyncReply MediaPlayer::cb_busMessageDispatcher( GstBus *bus, GstMessage *msg, gpointer user_data )
{
MediaPlayer * self = reinterpret_cast<MediaPlayer*>( user_data );
Q_UNUSED(bus);
GError *err;
gchar *debug_info;
if ( GST_MESSAGE_TYPE (msg) == GST_MESSAGE_ERROR )
{
gst_message_parse_error (msg, &err, &debug_info);
self->reportError( QString("GStreamer error received from element %1: %2, debug info: %3")
.arg( GST_OBJECT_NAME (msg->src) )
.arg( err->message)
.arg( debug_info ? debug_info : "none" ) );
g_clear_error( &err );
g_free( debug_info );
}
else if ( GST_MESSAGE_TYPE (msg) == GST_MESSAGE_DURATION_CHANGED )
{
Logger::debug( "GstMediaPlayer: duration changed message" );
self->m_duration = -1;
// Call the signal invoker
QMetaObject::invokeMethod( self,
"durationChanged",
Qt::QueuedConnection );
}
else if ( GST_MESSAGE_TYPE (msg) == GST_MESSAGE_EOS )
{
Logger::debug( "GstMediaPlayer: media playback finished naturally, emitting finished()" );
QMetaObject::invokeMethod( self, "finished", Qt::QueuedConnection );
}
else if ( GST_MESSAGE_TYPE (msg) == GST_MESSAGE_STATE_CHANGED )
{
GstState old_state, new_state, pending_state;
gst_message_parse_state_changed( msg, &old_state, &new_state, &pending_state );
// We are only interested in state-changed messages from the pipeline
if (GST_MESSAGE_SRC (msg) == GST_OBJECT (self->m_gst_pipeline))
{
GstState old_state, new_state, pending_state;
gst_message_parse_state_changed (msg, &old_state, &new_state, &pending_state);
Logger::debug( "GstMediaPlayer: pipeline state changed from %s to %s, pending %s",
gst_element_state_get_name (old_state),
gst_element_state_get_name (new_state),
gst_element_state_get_name (pending_state) );
switch ( new_state )
{
case GST_STATE_PLAYING:
self->m_playState = (State) StatePlaying;
break;
case GST_STATE_PAUSED:
self->m_playState = (State) StatePaused;
if ( self->m_mediaLoading )
{
self->m_mediaLoading = false;
Logger::debug( "GstMediaPlayer: Media state set to PAUSED, %s",
self->m_errorsDetected ? "but errors were detected, no event" : "sending loaded event");
if ( !self->m_errorsDetected )
QMetaObject::invokeMethod( self, "loaded", Qt::QueuedConnection );
}
break;
case GST_STATE_READY:
self->m_playState = (State) StateStopped;
break;
default:
Logger::error( "GStreamerPlayer: warning unhandled state %d", new_state );
break;
}
}
}
else if ( GST_MESSAGE_TYPE (msg) == GST_MESSAGE_TAG )
{
GstTagList *tags = 0;
gchar *value;
gst_message_parse_tag( msg, &tags );
if ( self->m_mediaArtist.isEmpty() && gst_tag_list_get_string( tags, "artist", &value ) )
{
Logger::debug( "GstMediaPlayer: got artist tag %s", value );
self->m_mediaArtist = QString::fromUtf8( value );
g_free( value );
}
if ( self->m_mediaTitle.isEmpty() && gst_tag_list_get_string( tags, "title", &value ) )
{
Logger::debug( "GstMediaPlayer: got title tag %s", value );
//.........这里部分代码省略.........