mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2026-07-25 06:54:43 +00:00
Revert "Avoid using streaming loader with external video player"
This reverts commit d9ddb12500.
This commit is contained in:
@@ -547,7 +547,7 @@ void DocumentData::setVideoQualities(
|
||||
return document->isVideoFile()
|
||||
&& !document->dimensions.isEmpty()
|
||||
&& !document->inappPlaybackFailed()
|
||||
&& document->useStreamingLoader(nullptr)
|
||||
&& document->useStreamingLoader()
|
||||
&& document->canBeStreamed(nullptr);
|
||||
};
|
||||
ranges::sort(
|
||||
@@ -1533,35 +1533,29 @@ bool DocumentData::hasRemoteLocation() const {
|
||||
return (_dc != 0 && _access != 0);
|
||||
}
|
||||
|
||||
bool DocumentData::canVideoBeStreamed(HistoryItem *item) const {
|
||||
if (!isVideoFile()) {
|
||||
return false;
|
||||
}
|
||||
// Streaming couldn't be used with external player
|
||||
// Maybe someone brave will implement this once upon a time...
|
||||
static const auto &ExternalVideoPlayer = base::options::lookup<bool>(
|
||||
Data::kOptionExternalVideoPlayer);
|
||||
return storyMedia()
|
||||
|| !ExternalVideoPlayer.value()
|
||||
|| (item && !item->allowsForward());
|
||||
}
|
||||
|
||||
bool DocumentData::useStreamingLoader(HistoryItem *item) const {
|
||||
bool DocumentData::useStreamingLoader() const {
|
||||
if (size <= 0) {
|
||||
return false;
|
||||
} else if (const auto info = sticker()) {
|
||||
return info->isWebm();
|
||||
}
|
||||
return isAnimation()
|
||||
|| canVideoBeStreamed(item)
|
||||
|| isVideoFile()
|
||||
|| isAudioFile()
|
||||
|| isVoiceMessage();
|
||||
}
|
||||
|
||||
bool DocumentData::canBeStreamed(HistoryItem *item) const {
|
||||
// Streaming couldn't be used with external player
|
||||
// Maybe someone brave will implement this once upon a time...
|
||||
static const auto &ExternalVideoPlayer = base::options::lookup<bool>(
|
||||
Data::kOptionExternalVideoPlayer);
|
||||
return hasRemoteLocation()
|
||||
&& supportsStreaming()
|
||||
&& (!isVideoFile() || canVideoBeStreamed(item));
|
||||
&& (!isVideoFile()
|
||||
|| storyMedia()
|
||||
|| !ExternalVideoPlayer.value()
|
||||
|| (item && !item->allowsForward()));
|
||||
}
|
||||
|
||||
void DocumentData::setInappPlaybackFailed() {
|
||||
@@ -1591,10 +1585,9 @@ StorageFileLocation DocumentData::videoPreloadLocation() const {
|
||||
|
||||
auto DocumentData::createStreamingLoader(
|
||||
Data::FileOrigin origin,
|
||||
bool forceRemoteLoader,
|
||||
HistoryItem *item) const
|
||||
bool forceRemoteLoader) const
|
||||
-> std::unique_ptr<Media::Streaming::Loader> {
|
||||
if (!useStreamingLoader(item)) {
|
||||
if (!useStreamingLoader()) {
|
||||
return nullptr;
|
||||
}
|
||||
if (!forceRemoteLoader) {
|
||||
|
||||
@@ -294,10 +294,9 @@ public:
|
||||
[[nodiscard]] bool canBeStreamed(HistoryItem *item) const;
|
||||
[[nodiscard]] auto createStreamingLoader(
|
||||
Data::FileOrigin origin,
|
||||
bool forceRemoteLoader,
|
||||
HistoryItem *item) const
|
||||
bool forceRemoteLoader) const
|
||||
-> std::unique_ptr<Media::Streaming::Loader>;
|
||||
[[nodiscard]] bool useStreamingLoader(HistoryItem *item) const;
|
||||
[[nodiscard]] bool useStreamingLoader() const;
|
||||
|
||||
void setInappPlaybackFailed();
|
||||
[[nodiscard]] bool inappPlaybackFailed() const;
|
||||
@@ -359,7 +358,6 @@ private:
|
||||
friend class Serialize::Document;
|
||||
|
||||
[[nodiscard]] LocationType locationType() const;
|
||||
[[nodiscard]] bool canVideoBeStreamed(HistoryItem *item) const;
|
||||
void validateLottieSticker();
|
||||
void setMaybeSupportsStreaming(bool supports);
|
||||
void setLoadedInMediaCacheLocation();
|
||||
|
||||
@@ -360,7 +360,7 @@ float64 DocumentMedia::progress() const {
|
||||
|
||||
bool DocumentMedia::canBePlayed(HistoryItem *item) const {
|
||||
return !_owner->inappPlaybackFailed()
|
||||
&& _owner->useStreamingLoader(item)
|
||||
&& _owner->useStreamingLoader()
|
||||
&& (loaded() || _owner->canBeStreamed(item));
|
||||
}
|
||||
|
||||
|
||||
@@ -565,8 +565,7 @@ bool PhotoData::videoCanBePlayed() const {
|
||||
|
||||
auto PhotoData::createStreamingLoader(
|
||||
Data::FileOrigin origin,
|
||||
bool forceRemoteLoader,
|
||||
HistoryItem *item) const
|
||||
bool forceRemoteLoader) const
|
||||
-> std::unique_ptr<Media::Streaming::Loader> {
|
||||
if (!hasVideo()) {
|
||||
return nullptr;
|
||||
|
||||
@@ -150,8 +150,7 @@ public:
|
||||
[[nodiscard]] bool videoCanBePlayed() const;
|
||||
[[nodiscard]] auto createStreamingLoader(
|
||||
Data::FileOrigin origin,
|
||||
bool forceRemoteLoader,
|
||||
HistoryItem *item) const
|
||||
bool forceRemoteLoader) const
|
||||
-> std::unique_ptr<Media::Streaming::Loader>;
|
||||
|
||||
[[nodiscard]] bool hasAttachedStickers() const;
|
||||
|
||||
@@ -78,15 +78,6 @@ bool PruneDestroyedAndSet(
|
||||
return {};
|
||||
}
|
||||
|
||||
[[nodiscard]] HistoryItem *LookupContext(
|
||||
not_null<Session*> owner,
|
||||
const FileOrigin &origin) {
|
||||
if (const auto message = std::get_if<FileOriginMessage>(&origin.data)) {
|
||||
return owner->message(*message);
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
Streaming::Streaming(not_null<Session*> owner)
|
||||
@@ -101,7 +92,6 @@ template <typename Data>
|
||||
base::flat_map<not_null<Data*>, std::weak_ptr<Reader>> &readers,
|
||||
not_null<Data*> data,
|
||||
FileOrigin origin,
|
||||
HistoryItem *context,
|
||||
bool forceRemoteLoader) {
|
||||
const auto i = readers.find(data);
|
||||
if (i != end(readers)) {
|
||||
@@ -111,10 +101,7 @@ template <typename Data>
|
||||
}
|
||||
}
|
||||
}
|
||||
auto loader = data->createStreamingLoader(
|
||||
origin,
|
||||
forceRemoteLoader,
|
||||
context);
|
||||
auto loader = data->createStreamingLoader(origin, forceRemoteLoader);
|
||||
if (!loader) {
|
||||
return nullptr;
|
||||
}
|
||||
@@ -146,7 +133,7 @@ template <typename Data>
|
||||
return result;
|
||||
}
|
||||
}
|
||||
auto reader = sharedReader(readers, data, origin, context);
|
||||
auto reader = sharedReader(readers, data, origin);
|
||||
if (!reader) {
|
||||
return nullptr;
|
||||
}
|
||||
@@ -188,25 +175,18 @@ std::shared_ptr<Streaming::Reader> Streaming::sharedReader(
|
||||
not_null<DocumentData*> document,
|
||||
FileOrigin origin,
|
||||
bool forceRemoteLoader) {
|
||||
const auto context = LookupContext(_owner, origin);
|
||||
return sharedReader(
|
||||
_fileReaders,
|
||||
document,
|
||||
origin,
|
||||
context,
|
||||
forceRemoteLoader);
|
||||
return sharedReader(_fileReaders, document, origin, forceRemoteLoader);
|
||||
}
|
||||
|
||||
std::shared_ptr<Streaming::Document> Streaming::sharedDocument(
|
||||
not_null<DocumentData*> document,
|
||||
FileOrigin origin) {
|
||||
const auto context = LookupContext(_owner, origin);
|
||||
return sharedDocument(
|
||||
_fileDocuments,
|
||||
_fileReaders,
|
||||
document,
|
||||
nullptr,
|
||||
context,
|
||||
nullptr,
|
||||
origin);
|
||||
}
|
||||
|
||||
@@ -228,25 +208,18 @@ std::shared_ptr<Streaming::Reader> Streaming::sharedReader(
|
||||
not_null<PhotoData*> photo,
|
||||
FileOrigin origin,
|
||||
bool forceRemoteLoader) {
|
||||
const auto context = LookupContext(_owner, origin);
|
||||
return sharedReader(
|
||||
_photoReaders,
|
||||
photo,
|
||||
origin,
|
||||
context,
|
||||
forceRemoteLoader);
|
||||
return sharedReader(_photoReaders, photo, origin, forceRemoteLoader);
|
||||
}
|
||||
|
||||
std::shared_ptr<Streaming::Document> Streaming::sharedDocument(
|
||||
not_null<PhotoData*> photo,
|
||||
FileOrigin origin) {
|
||||
const auto context = LookupContext(_owner, origin);
|
||||
return sharedDocument(
|
||||
_photoDocuments,
|
||||
_photoReaders,
|
||||
photo,
|
||||
nullptr,
|
||||
context,
|
||||
nullptr,
|
||||
origin);
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
|
||||
class PhotoData;
|
||||
class DocumentData;
|
||||
class HistoryItem;
|
||||
|
||||
namespace Media::Streaming {
|
||||
class Reader;
|
||||
@@ -65,7 +64,6 @@ private:
|
||||
base::flat_map<not_null<Data*>, std::weak_ptr<Reader>> &readers,
|
||||
not_null<Data*> data,
|
||||
FileOrigin origin,
|
||||
HistoryItem *context,
|
||||
bool forceRemoteLoader = false);
|
||||
|
||||
template <typename Data>
|
||||
|
||||
@@ -476,10 +476,7 @@ void Shown::streamFile(
|
||||
requestFail(std::move(request));
|
||||
return;
|
||||
}
|
||||
auto loader = document->createStreamingLoader(
|
||||
fileOrigin(page),
|
||||
false,
|
||||
nullptr);
|
||||
auto loader = document->createStreamingLoader(fileOrigin(page), false);
|
||||
if (!loader) {
|
||||
if (document->size >= Storage::kMaxFileInMemory) {
|
||||
requestFail(std::move(request));
|
||||
|
||||
Reference in New Issue
Block a user