media: lazy MediaCodec.release()

Bug: 129008570
Test: atest CtsMediaTestCases -- --module-arg CtsMediaTestCases:size:small
Test: ResourceManagerService_test
Change-Id: Ieb4c0b2e1506e10e2987cc41150dd7ad186bb500
This commit is contained in:
Wonsik Kim
2020-02-27 12:37:44 -08:00
parent fd2f367df6
commit 063ea0ad05
2 changed files with 13 additions and 2 deletions

View File

@@ -242,6 +242,13 @@ void JMediaCodec::release() {
});
}
void JMediaCodec::releaseAsync() {
if (mCodec != NULL) {
mCodec->releaseAsync();
}
mInitStatus = NO_INIT;
}
JMediaCodec::~JMediaCodec() {
if (mLooper != NULL) {
/* MediaCodec and looper should have been released explicitly already
@@ -1124,7 +1131,10 @@ static sp<JMediaCodec> getMediaCodec(JNIEnv *env, jobject thiz) {
}
static void android_media_MediaCodec_release(JNIEnv *env, jobject thiz) {
setMediaCodec(env, thiz, NULL);
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
if (codec != NULL) {
codec->releaseAsync();
}
}
static void throwCodecException(JNIEnv *env, status_t err, int32_t actionCode, const char *msg) {
@@ -2797,7 +2807,7 @@ static void android_media_MediaCodec_native_setup(
static void android_media_MediaCodec_native_finalize(
JNIEnv *env, jobject thiz) {
android_media_MediaCodec_release(env, thiz);
setMediaCodec(env, thiz, NULL);
}
// MediaCodec.LinearBlock

View File

@@ -61,6 +61,7 @@ struct JMediaCodec : public AHandler {
void registerSelf();
void release();
void releaseAsync();
status_t enableOnFrameRenderedListener(jboolean enable);