Revert "Avoid using streaming loader with external video player"

This reverts commit d9ddb12500.
This commit is contained in:
Ilya Fedin
2026-03-07 02:36:02 +04:00
committed by John Preston
parent b30948fd81
commit ff08ab1023
8 changed files with 25 additions and 68 deletions
+13 -20
View File
@@ -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) {
+2 -4
View File
@@ -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));
}
+1 -2
View File
@@ -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;
+1 -2
View File
@@ -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;
+6 -33
View File
@@ -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>
+1 -4
View File
@@ -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));