|
|
|
|
@ -181,7 +181,7 @@ void StreamPlayerWindow::decode() {
|
|
|
|
|
opus_codec_decoder_t* opus = nullptr; |
|
|
|
|
bool waitKey = true, opened = false; |
|
|
|
|
int64_t deadline = nowUs() + 10000000, reportAt = nowUs(), expectedAudio = -1; |
|
|
|
|
uint64_t decoded = 0, discarded = 0, late = 0, pressureDropped = 0, previousDecoded = 0, previousShown = 0; |
|
|
|
|
uint64_t decoded = 0, discarded = 0, late = 0, pressureDropped = 0, previousPressure = 0, previousDecoded = 0, previousShown = 0; |
|
|
|
|
uint32_t videoRevision = 0; |
|
|
|
|
auto reset = [&] { |
|
|
|
|
avcodec_free_context(&decoder); |
|
|
|
|
@ -317,9 +317,10 @@ void StreamPlayerWindow::decode() {
|
|
|
|
|
(long long)(p.videos.empty() ? 0 : p.videos.front().pts - clock), |
|
|
|
|
(long long)(p.videos.empty() ? 0 : p.videos.back().pts - clock), p.audios.size(), |
|
|
|
|
(long long)(p.audioPts < 0 ? 0 : now - p.audioAt), (unsigned long long)p.underruns); |
|
|
|
|
if (pressureDropped) DEBUG_WARN(DEBUG_CATEGORY_STREAM, "desktop video queue pressure id=%llu dropped=%llu; preserve due frames", |
|
|
|
|
if (pressureDropped != previousPressure) |
|
|
|
|
DEBUG_WARN(DEBUG_CATEGORY_STREAM, "desktop video queue pressure id=%llu dropped=%llu; preserve due frames", |
|
|
|
|
(unsigned long long)p.id, (unsigned long long)pressureDropped); |
|
|
|
|
previousDecoded = decoded; previousShown = p.shown; |
|
|
|
|
previousDecoded = decoded; previousShown = p.shown; previousPressure = pressureDropped; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
avcodec_free_context(&decoder); av_frame_free(&frame); av_packet_free(&packet); |
|
|
|
|
|