Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Unified Diff: media/gpu/android_video_decode_accelerator.cc

Issue 2147843002: Drop idle MediaCodec instances after a few seconds within AVDA. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/gpu/android_video_decode_accelerator.cc
diff --git a/media/gpu/android_video_decode_accelerator.cc b/media/gpu/android_video_decode_accelerator.cc
index 5b8c856701c5645cd6324720a9d1086ba9b0532c..774e19960476ed094ef85b060a29a1b88c977d7b 100644
--- a/media/gpu/android_video_decode_accelerator.cc
+++ b/media/gpu/android_video_decode_accelerator.cc
@@ -963,6 +963,7 @@ void AndroidVideoDecodeAccelerator::SendDecodedFrameToClient(
void AndroidVideoDecodeAccelerator::Decode(
const BitstreamBuffer& bitstream_buffer) {
DCHECK(thread_checker_.CalledOnValidThread());
+ no_decode_timeout_.Stop();
liberato (no reviews please) 2016/07/13 05:25:55 i think that you also need to stop the timer in Re
DaleCurtis 2016/07/13 21:12:21 Done.
// If we previously deferred a codec restart, take care of it now. This can
// happen on older devices where configuration changes require a codec reset.
@@ -1202,7 +1203,8 @@ void AndroidVideoDecodeAccelerator::OnCodecConfigured(
}
state_ = NO_ERROR;
-
+ no_decode_timeout_.Start(FROM_HERE, base::TimeDelta::FromSeconds(2), this,
liberato (no reviews please) 2016/07/13 05:25:55 2 => kSomethingSomething
DaleCurtis 2016/07/13 21:12:21 Done.
+ &AndroidVideoDecodeAccelerator::CloseIdleCodec);
ManageTimer(true);
}
@@ -1311,7 +1313,7 @@ void AndroidVideoDecodeAccelerator::ResetCodecState() {
// Prior to JB-MR2, flush() had several bugs (b/8125974, b/8347958) so we must
// delete the MediaCodec and create a new one. The full reconfigure is much
// slower and may cause visible freezing if done mid-stream.
- if (!did_codec_error_happen &&
+ if (!did_codec_error_happen && media_codec_ &&
base::android::BuildInfo::GetInstance()->sdk_int() >= 18) {
DVLOG(3) << __FUNCTION__ << " Flushing MediaCodec.";
media_codec_->Flush();
@@ -1786,4 +1788,11 @@ bool AndroidVideoDecodeAccelerator::IsMediaCodecSoftwareDecodingForbidden()
codec_config_->codec_ == media::kCodecVP9);
}
+void AndroidVideoDecodeAccelerator::CloseIdleCodec() {
+ if (media_codec_) {
liberato (no reviews please) 2016/07/13 05:25:55 please consider early out.
DaleCurtis 2016/07/13 21:12:21 Done.
+ ReleaseMediaCodec();
+ codec_needs_reset_ = true;
+ }
+}
+
} // namespace media
« media/gpu/android_video_decode_accelerator.h ('K') | « media/gpu/android_video_decode_accelerator.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698