mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Improve changing of video playback quality.
This commit is contained in:
parent
0991e7d8a4
commit
c2afef2bde
2 changed files with 16 additions and 2 deletions
|
@ -2285,6 +2285,8 @@ void OverlayWidget::assignMediaPointer(DocumentData *document) {
|
||||||
_photo = nullptr;
|
_photo = nullptr;
|
||||||
_photoMedia = nullptr;
|
_photoMedia = nullptr;
|
||||||
if (_document != document) {
|
if (_document != document) {
|
||||||
|
_streamedQualityChangeFrame = QImage();
|
||||||
|
_streamedQualityChangeFinished = false;
|
||||||
if ((_document = document)) {
|
if ((_document = document)) {
|
||||||
_chosenQuality = chooseQuality();
|
_chosenQuality = chooseQuality();
|
||||||
_documentMedia = _document->createMediaView();
|
_documentMedia = _document->createMediaView();
|
||||||
|
@ -2301,6 +2303,8 @@ void OverlayWidget::assignMediaPointer(DocumentData *document) {
|
||||||
void OverlayWidget::assignMediaPointer(not_null<PhotoData*> photo) {
|
void OverlayWidget::assignMediaPointer(not_null<PhotoData*> photo) {
|
||||||
_savePhotoVideoWhenLoaded = SavePhotoVideo::None;
|
_savePhotoVideoWhenLoaded = SavePhotoVideo::None;
|
||||||
_chosenQuality = nullptr;
|
_chosenQuality = nullptr;
|
||||||
|
_streamedQualityChangeFrame = QImage();
|
||||||
|
_streamedQualityChangeFinished = false;
|
||||||
_document = nullptr;
|
_document = nullptr;
|
||||||
_documentMedia = nullptr;
|
_documentMedia = nullptr;
|
||||||
_documentLoadingTo = QString();
|
_documentLoadingTo = QString();
|
||||||
|
@ -4279,7 +4283,9 @@ void OverlayWidget::playbackPauseResume() {
|
||||||
redisplayContent();
|
redisplayContent();
|
||||||
}
|
}
|
||||||
} else if (_streamed->instance.player().finished()
|
} else if (_streamed->instance.player().finished()
|
||||||
|| !_streamed->instance.player().active()) {
|
|| !_streamed->instance.player().active()
|
||||||
|
|| _streamedQualityChangeFinished) {
|
||||||
|
_streamedQualityChangeFinished = false;
|
||||||
_streamingStartPaused = false;
|
_streamingStartPaused = false;
|
||||||
restartAtSeekPosition(0);
|
restartAtSeekPosition(0);
|
||||||
} else if (_streamed->instance.player().paused()) {
|
} else if (_streamed->instance.player().paused()) {
|
||||||
|
@ -4348,6 +4354,7 @@ void OverlayWidget::restartAtSeekPosition(crl::time position) {
|
||||||
_streamed->instance.pause();
|
_streamed->instance.pause();
|
||||||
} else {
|
} else {
|
||||||
playbackPauseMusic();
|
playbackPauseMusic();
|
||||||
|
_streamedQualityChangeFinished = false;
|
||||||
}
|
}
|
||||||
_streamed->pausedBySeek = false;
|
_streamed->pausedBySeek = false;
|
||||||
|
|
||||||
|
@ -4445,8 +4452,14 @@ void OverlayWidget::playbackControlsQualityChanged(int quality) {
|
||||||
if (_streamed && _streamed->instance.ready()) {
|
if (_streamed && _streamed->instance.ready()) {
|
||||||
_streamedQualityChangeFrame = currentVideoFrameImage();
|
_streamedQualityChangeFrame = currentVideoFrameImage();
|
||||||
}
|
}
|
||||||
|
if (_streamed
|
||||||
|
&& (!_streamed->instance.player().active()
|
||||||
|
|| _streamed->instance.player().finished())) {
|
||||||
|
_streamedQualityChangeFinished = true;
|
||||||
|
}
|
||||||
|
_streamingStartPaused = _streamedQualityChangeFinished
|
||||||
|
|| (_streamed && _streamed->instance.player().paused());
|
||||||
clearStreaming();
|
clearStreaming();
|
||||||
_streamingStartPaused = false;
|
|
||||||
const auto time = _streamedPosition;
|
const auto time = _streamedPosition;
|
||||||
const auto startStreaming = StartStreaming(false, time);
|
const auto startStreaming = StartStreaming(false, time);
|
||||||
if (!canInitStreaming() || !initStreaming(startStreaming)) {
|
if (!canInitStreaming() || !initStreaming(startStreaming)) {
|
||||||
|
|
|
@ -634,6 +634,7 @@ private:
|
||||||
QImage _streamedQualityChangeFrame;
|
QImage _streamedQualityChangeFrame;
|
||||||
crl::time _streamedPosition = 0;
|
crl::time _streamedPosition = 0;
|
||||||
int _streamedCreated = 0;
|
int _streamedCreated = 0;
|
||||||
|
bool _streamedQualityChangeFinished = false;
|
||||||
bool _showAsPip = false;
|
bool _showAsPip = false;
|
||||||
|
|
||||||
std::unique_ptr<Stories::View> _stories;
|
std::unique_ptr<Stories::View> _stories;
|
||||||
|
|
Loading…
Add table
Reference in a new issue