extensions.push_back("vob");
extensions.push_back("wav");
extensions.push_back("wave");
+ extensions.push_back("m4v");
extensions.push_back("mkv");
extensions.push_back("avi");
extensions.push_back("divx");
sourceinfo.containertype = ctAVI;
sourceinfo.is_video = TRUE;
}
- else if ( strcasecmp(ext, ".mp4") == 0 || strcasecmp(ext, ".mov") == 0)
+ else if ( strcasecmp(ext, ".mp4") == 0 || strcasecmp(ext, ".mov") == 0 || strcasecmp(ext, ".m4v") == 0)
{
sourceinfo.containertype = ctMP4;
sourceinfo.is_video = TRUE;
else
{
GstElement *sink;
- std::string config_delay;
int config_delay_int = delay;
- if(ePythonConfigQuery::getConfigValue("config.av.generalAC3delay", config_delay) == 0)
- config_delay_int += atoi(config_delay.c_str());
+ g_object_get (G_OBJECT (m_gst_playbin), "video-sink", &sink, NULL);
+
+ if (sink)
+ {
+ std::string config_delay;
+ if(ePythonConfigQuery::getConfigValue("config.av.generalAC3delay", config_delay) == 0)
+ config_delay_int += atoi(config_delay.c_str());
+ gst_object_unref(sink);
+ }
+ else
+ {
+ eDebug("dont apply ac3 delay when no video is running!");
+ config_delay_int = 0;
+ }
g_object_get (G_OBJECT (m_gst_playbin), "audio-sink", &sink, NULL);
- if (!sink)
- return;
- else {
+ if (sink)
+ {
gchar *name = gst_element_get_name(sink);
-
if (strstr(name, "dvbaudiosink"))
eTSMPEGDecoder::setHwAC3Delay(config_delay_int);
g_free(name);
else
{
GstElement *sink;
- std::string config_delay;
int config_delay_int = delay;
- if(ePythonConfigQuery::getConfigValue("config.av.generalPCMdelay", config_delay) == 0)
- config_delay_int += atoi(config_delay.c_str());
+ g_object_get (G_OBJECT (m_gst_playbin), "video-sink", &sink, NULL);
+
+ if (sink)
+ {
+ std::string config_delay;
+ if(ePythonConfigQuery::getConfigValue("config.av.generalPCMdelay", config_delay) == 0)
+ config_delay_int += atoi(config_delay.c_str());
+ gst_object_unref(sink);
+ }
+ else
+ {
+ eDebug("dont apply pcm delay when no video is running!");
+ config_delay_int = 0;
+ }
g_object_get (G_OBJECT (m_gst_playbin), "audio-sink", &sink, NULL);
- if (!sink)
- return;
- else {
+ if (sink)
+ {
gchar *name = gst_element_get_name(sink);
-
if (strstr(name, "dvbaudiosink"))
eTSMPEGDecoder::setHwPCMDelay(config_delay_int);
- else {
+ else
+ {
// this is realy untested..and not used yet
gint64 offset = config_delay_int;
offset *= 1000000; // milli to nano