Merge "RELAND: "media: lazy MediaCodec.release()"" into rvc-dev am: c8a654c21a
Change-Id: I28df0bd092e618d56466b9a9c245fdd091fe7d56
This commit is contained in:
@@ -232,6 +232,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
|
||||
@@ -1114,7 +1121,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) {
|
||||
@@ -2889,7 +2899,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
|
||||
|
||||
@@ -61,6 +61,7 @@ struct JMediaCodec : public AHandler {
|
||||
|
||||
void registerSelf();
|
||||
void release();
|
||||
void releaseAsync();
|
||||
|
||||
status_t enableOnFrameRenderedListener(jboolean enable);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user