mirror of
https://github.com/telegramdesktop/tdesktop
synced 2025-01-25 16:54:25 +00:00
Allow audio and video files with duration < 1s.
This commit is contained in:
parent
d41372dccd
commit
5666f14829
@ -849,26 +849,28 @@ FileLoadTask::Video PrepareForSending(const QString &fname, const QByteArray &da
|
|||||||
auto reader = std::make_unique<internal::FFMpegReaderImplementation>(&localLocation, &localData, playId);
|
auto reader = std::make_unique<internal::FFMpegReaderImplementation>(&localLocation, &localData, playId);
|
||||||
if (reader->start(internal::ReaderImplementation::Mode::Inspecting, seekPositionMs)) {
|
if (reader->start(internal::ReaderImplementation::Mode::Inspecting, seekPositionMs)) {
|
||||||
auto durationMs = reader->durationMs();
|
auto durationMs = reader->durationMs();
|
||||||
result.isGifv = reader->isGifv();
|
if (durationMs > 0) {
|
||||||
if (!result.isGifv) {
|
result.isGifv = reader->isGifv();
|
||||||
auto middleMs = durationMs / 2;
|
if (!result.isGifv) {
|
||||||
if (!reader->inspectAt(middleMs)) {
|
auto middleMs = durationMs / 2;
|
||||||
return result;
|
if (!reader->inspectAt(middleMs)) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
auto hasAlpha = false;
|
||||||
auto hasAlpha = false;
|
auto readResult = reader->readFramesTill(-1, getms());
|
||||||
auto readResult = reader->readFramesTill(-1, getms());
|
auto readFrame = (readResult == internal::ReaderImplementation::ReadResult::Success);
|
||||||
auto readFrame = (readResult == internal::ReaderImplementation::ReadResult::Success);
|
if (readFrame && reader->renderFrame(result.thumbnail, hasAlpha, QSize())) {
|
||||||
if (readFrame && reader->renderFrame(result.thumbnail, hasAlpha, QSize())) {
|
if (hasAlpha) {
|
||||||
if (hasAlpha) {
|
auto cacheForResize = QImage();
|
||||||
auto cacheForResize = QImage();
|
auto request = FrameRequest();
|
||||||
auto request = FrameRequest();
|
request.framew = request.outerw = result.thumbnail.width();
|
||||||
request.framew = request.outerw = result.thumbnail.width();
|
request.frameh = request.outerh = result.thumbnail.height();
|
||||||
request.frameh = request.outerh = result.thumbnail.height();
|
request.factor = 1;
|
||||||
request.factor = 1;
|
result.thumbnail = PrepareFrameImage(request, result.thumbnail, hasAlpha, cacheForResize);
|
||||||
result.thumbnail = PrepareFrameImage(request, result.thumbnail, hasAlpha, cacheForResize);
|
}
|
||||||
|
result.duration = static_cast<int>(durationMs / 1000);
|
||||||
}
|
}
|
||||||
result.duration = static_cast<int>(durationMs / 1000);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
@ -251,7 +251,7 @@ bool FileLoadTask::CheckForSong(const QString &filepath, const QByteArray &conte
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto media = Media::Player::PrepareForSending(filepath, content);
|
auto media = Media::Player::PrepareForSending(filepath, content);
|
||||||
if (media.duration <= 0) {
|
if (media.duration < 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!ValidateThumbDimensions(media.cover.width(), media.cover.height())) {
|
if (!ValidateThumbDimensions(media.cover.width(), media.cover.height())) {
|
||||||
@ -275,7 +275,7 @@ bool FileLoadTask::CheckForVideo(const QString &filepath, const QByteArray &cont
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto media = Media::Clip::PrepareForSending(filepath, content);
|
auto media = Media::Clip::PrepareForSending(filepath, content);
|
||||||
if (media.duration <= 0) {
|
if (media.duration < 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -244,14 +244,14 @@ public:
|
|||||||
bool animated = false;
|
bool animated = false;
|
||||||
};
|
};
|
||||||
struct Song {
|
struct Song {
|
||||||
int duration = 0;
|
int duration = -1;
|
||||||
QString title;
|
QString title;
|
||||||
QString performer;
|
QString performer;
|
||||||
QImage cover;
|
QImage cover;
|
||||||
};
|
};
|
||||||
struct Video {
|
struct Video {
|
||||||
bool isGifv = false;
|
bool isGifv = false;
|
||||||
int duration = 0;
|
int duration = -1;
|
||||||
QImage thumbnail;
|
QImage thumbnail;
|
||||||
};
|
};
|
||||||
struct MediaInformation {
|
struct MediaInformation {
|
||||||
|
Loading…
Reference in New Issue
Block a user