7 #include <QApplication>
36 :
MythEvent(t), m_msg(NULL), m_meta(NULL), m_available(0), m_maxSize(0)
132 LOG(VB_PLAYBACK, LOG_INFO,
133 QString(
"DecoderIOFactory: Opening Local File %1").arg(sourcename));
135 m_input =
new QFile(sourcename);
160 LOG(VB_PLAYBACK, LOG_INFO,
161 QString(
"DecoderIOFactorySG: Opening Myth URL %1").arg(url));
197 LOG(VB_PLAYBACK, LOG_INFO,
218 if (reply->error() != QNetworkReply::NoError)
220 doFailed(
"Cannot retrieve remote file.");
224 QUrl possibleRedirectUrl = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl();
226 if (!possibleRedirectUrl.isEmpty() && (
m_redirectedURL != possibleRedirectUrl))
228 LOG(VB_PLAYBACK, LOG_INFO,
229 QString(
"DecoderIOFactory: Got redirected to %1")
230 .arg(possibleRedirectUrl.toString()));
240 setUrl(possibleRedirectUrl);
309 if (QFileInfo(mdata->
Filename()).isAbsolute())
310 url = QUrl::fromLocalFile(mdata->
Filename());
330 LOG(VB_PLAYBACK, LOG_INFO, QString(
"Track %1 = %2")
338 doFailed(url,
"Could not get playlist");
345 QString *str =
new QString(e);
381 if (QFileInfo(entry->
File()).isAbsolute())
382 url = QUrl::fromLocalFile(entry->
File());
384 url.setUrl(entry->
File());
386 LOG(VB_PLAYBACK, LOG_INFO, QString(
"Now playing '%1'").arg(url.toString()));
405 LOG(VB_PLAYBACK, LOG_INFO, QString(
"DecoderHandler: Stopping decoder"));
444 QStringList tokens = me->
Message().split(
" ", QString::SkipEmptyParts);
446 if (tokens.isEmpty())
449 if (tokens[0] ==
"DOWNLOAD_FILE")
453 if (tokens[1] ==
"UPDATE")
456 else if (tokens[1] ==
"FINISHED")
458 QString downloadUrl = args[0];
459 int fileSize = args[2].toInt();
460 int errorCode = args[4].toInt();
461 QString filename = args[1];
463 if ((errorCode != 0) || (fileSize == 0))
465 LOG(VB_GENERAL, LOG_ERR, QString(
"DecoderHandler: failed to download playlist from '%1'")
467 QUrl
url(downloadUrl);
470 doFailed(url,
"Could not get playlist");
474 QUrl fileUrl(filename);
484 QString extension = QFileInfo(url.path()).suffix();
485 LOG(VB_NETWORK, LOG_INFO,
486 QString(
"File %1 has extension %2")
487 .arg(QFileInfo(url.path()).fileName()).arg(extension));
489 if (extension ==
"pls" || extension ==
"m3u")
491 if (url.scheme() ==
"file" || QFileInfo(url.toString()).isAbsolute())
506 if (url.scheme() ==
"file" || QFileInfo(url.toString()).isAbsolute())
507 entry->
setFile(url.toLocalFile());
509 entry->
setFile(url.toString());
518 QString file = url.toLocalFile();
527 LOG(VB_NETWORK, LOG_INFO,
528 QString(
"Retrieving playlist from '%1'").arg(url.toString()));
532 QString extension = QFileInfo(url.path()).suffix().toLower();
533 QString saveFilename =
GetConfDir() +
"/MythMusic/playlist." + extension;
541 if (time.elapsed() > 30000)
545 LOG(VB_GENERAL, LOG_ERR, QString(
"DecoderHandler:: Timed out trying to download playlist from: %1")
546 .arg(url.toString()));
550 qApp->processEvents();
567 doFailed(url, QString(
"No decoder for this format '%1'").arg(format));
580 LOG(VB_NETWORK, LOG_ERR,
581 QString(
"DecoderHandler error: '%1' - %2").arg(message).arg(url.toString()));
608 if (url.scheme() ==
"myth")
612 else if (url.scheme() ==
"http")
636 QMutexLocker holder (&
m_mutex);
637 const char *buffer_data =
m_buffer.data();
642 memcpy(data, buffer_data, max);
652 QMutexLocker holder (&
m_mutex);
653 const char *buffer_data =
m_buffer.data();
658 data.append(buffer_data, max);
677 if (array.size() == 0)
695 setOpenMode(ReadWrite);
754 setOpenMode(ReadWrite);
770 long int newPos = -1;
775 return (newPos == pos);