Improve changing of video playback quality.

This commit is contained in:
John Preston 2024-10-25 21:03:03 +04:00
parent 0991e7d8a4
commit c2afef2bde
2 changed files with 16 additions and 2 deletions

View file

@ -2285,6 +2285,8 @@ void OverlayWidget::assignMediaPointer(DocumentData *document) {
_photo = nullptr;
_photoMedia = nullptr;
if (_document != document) {
_streamedQualityChangeFrame = QImage();
_streamedQualityChangeFinished = false;
if ((_document = document)) {
_chosenQuality = chooseQuality();
_documentMedia = _document->createMediaView();
@ -2301,6 +2303,8 @@ void OverlayWidget::assignMediaPointer(DocumentData *document) {
void OverlayWidget::assignMediaPointer(not_null<PhotoData*> photo) {
_savePhotoVideoWhenLoaded = SavePhotoVideo::None;
_chosenQuality = nullptr;
_streamedQualityChangeFrame = QImage();
_streamedQualityChangeFinished = false;
_document = nullptr;
_documentMedia = nullptr;
_documentLoadingTo = QString();
@ -4279,7 +4283,9 @@ void OverlayWidget::playbackPauseResume() {
redisplayContent();
}
} else if (_streamed->instance.player().finished()
|| !_streamed->instance.player().active()) {
|| !_streamed->instance.player().active()
|| _streamedQualityChangeFinished) {
_streamedQualityChangeFinished = false;
_streamingStartPaused = false;
restartAtSeekPosition(0);
} else if (_streamed->instance.player().paused()) {
@ -4348,6 +4354,7 @@ void OverlayWidget::restartAtSeekPosition(crl::time position) {
_streamed->instance.pause();
} else {
playbackPauseMusic();
_streamedQualityChangeFinished = false;
}
_streamed->pausedBySeek = false;
@ -4445,8 +4452,14 @@ void OverlayWidget::playbackControlsQualityChanged(int quality) {
if (_streamed && _streamed->instance.ready()) {
_streamedQualityChangeFrame = currentVideoFrameImage();
}
if (_streamed
&& (!_streamed->instance.player().active()
|| _streamed->instance.player().finished())) {
_streamedQualityChangeFinished = true;
}
_streamingStartPaused = _streamedQualityChangeFinished
|| (_streamed && _streamed->instance.player().paused());
clearStreaming();
_streamingStartPaused = false;
const auto time = _streamedPosition;
const auto startStreaming = StartStreaming(false, time);
if (!canInitStreaming() || !initStreaming(startStreaming)) {

View file

@ -634,6 +634,7 @@ private:
QImage _streamedQualityChangeFrame;
crl::time _streamedPosition = 0;
int _streamedCreated = 0;
bool _streamedQualityChangeFinished = false;
bool _showAsPip = false;
std::unique_ptr<Stories::View> _stories;