void EC_MediaPlayer::OnMediaLoaded(AssetPtr asset) { pendingMediaDownload_ = false; // Double check that same source finished as we have in the attribute. if (asset->Name() != getsourceRef().ref.trimmed()) return; // Load media from local file QString diskSource = asset->DiskSource(); if (!diskSource.isEmpty()) { // Feed native separators for VLC if (!mediaPlayer_->LoadMedia(QDir::toNativeSeparators(diskSource))) LogError("EC_MediaPlayer: Source not supported: " + asset->Name()); else { LogInfo("EC_MediaPlayer: Loaded source media after download '" + asset->Name() + "'"); emit MediaDownloaded(true, asset->Name()); mediaPlayer_->ForceUpdateImage(); } } else LogError("EC_MediaPlayer: Downloaded media '" + asset->Name() + "' disk source is empty! Broken/disabled asset cache?"); }
QByteArray QtUiAsset::GetRefReplacedAssetData() const { if (originalData.size() == 0) return QByteArray(); QByteArray refRewrittenData((const char *)&originalData[0], originalData.size()); // The AssetRef indices need to be adjusted with an offset after rewriting each ref, since the lengths of the refs change in the file. // This variable tracks the accumulated byte offset that takes this into account. int indexAdjustment = 0; for(size_t i = 0; i < refs.size(); ++i) { QString assetDiskSource = ""; AssetPtr asset = assetAPI->GetAsset(refs[i].parsedRef); if (!asset.get()) { LogError("ReplaceAssetReferences: Asset not found from asset system even when it was marked as a dependency earlier, skipping: " + refs[i].parsedRef.toStdString()); } else { assetDiskSource = asset->DiskSource(); if (assetDiskSource.isEmpty()) LogWarning("ReplaceAssetReferences: Asset disk source empty, skipping: " + refs[i].parsedRef.toStdString()); } assetDiskSource = assetDiskSource.trimmed(); if (!assetDiskSource.isEmpty() && QFile::exists(assetDiskSource)) { QByteArray refAsByteArray = (QString("\"") + assetDiskSource + QString("\"")).toUtf8(); refRewrittenData.replace(refs[i].index + indexAdjustment, refs[i].length, refAsByteArray); indexAdjustment += refAsByteArray.length() - refs[i].length; } else { LogWarning("ReplaceAssetReferences: Asset disk source does not exist, skipping: " + refs[i].parsedRef.toStdString()); } } return refRewrittenData; }