int all_ok = 0;
- m_gst_pipeline = gst_pipeline_new ("audio-player");
+ m_gst_pipeline = gst_pipeline_new ("mediaplayer");
if (!m_gst_pipeline)
eWarning("failed to create pipeline");
/* filesrc -> mpegdemux -> | queue_audio -> dvbaudiosink
| queue_video -> dvbvideosink */
- audio = gst_element_factory_make("dvbaudiosink", "audio");
+ audio = gst_element_factory_make("dvbaudiosink", "audiosink");
queue_audio = gst_element_factory_make("queue", "queue_audio");
- video = gst_element_factory_make("dvbvideosink", "video");
+ video = gst_element_factory_make("dvbvideosink", "videosink");
queue_video = gst_element_factory_make("queue", "queue_video");
if (is_mpeg_ps)
case sComment:
case sTracknumber:
case sGenre:
+ case sVideoType:
return resIsString;
case sCurrentTitle:
tag = GST_TAG_TRACK_NUMBER;
case sGenre:
tag = GST_TAG_GENRE;
break;
+ case sVideoType:
+ tag = GST_TAG_VIDEO_CODEC;
+ break;
default:
return "";
}
break;
case GST_MESSAGE_ERROR:
{
- gchar *debug;
+ gchar *debug, *sourceName;
GError *err;
+ GstObject *source;
+
+ source = GST_MESSAGE_SRC(msg);
+ sourceName = gst_object_get_name(source);
+
gst_message_parse_error (msg, &err, &debug);
g_free (debug);
- eWarning("Gstreamer error: %s", err->message);
+ eWarning("Gstreamer error: %s (%i) from %s", err->message, err->code, sourceName );
+ if ( err->domain == GST_STREAM_ERROR && err->code == GST_STREAM_ERROR_DECODE )
+ {
+ if ( g_strrstr(sourceName, "videosink") )
+ m_event((iPlayableService*)this, evUser+11);
+ }
g_error_free(err);
/* TODO: signal error condition to user */
break;