MediaCodec 的 init() 函数的调用 reclaimResource()的逻辑
static bool isResourceError(status_t err) {
return (err == NO_MEMORY);
}
status_t MediaCodec::init(const AString &name) {
......
sp<AMessage> msg = new AMessage(kWhatInit, this);
......
status_t err;
std::vector<MediaResourceParcel> resources;
resources.push_back(MediaResource::CodecResource(secureCodec, mIsVideo));
for (int i = 0; i <= kMaxRetry; ++i) {
if (i > 0) {
if (!mResourceManagerProxy->reclaimResource(resources)) {
break;
}
}
sp<AMessage> response;
err = PostAndAwaitResponse(msg, &response);
if (!isResourceError(err)) {
break;
}
}
return err;
}