From 8b23759763dbf11b0c628a7e62dc5b3dea7dc188 Mon Sep 17 00:00:00 2001 From: Lajos Molnar Date: Wed, 6 May 2015 14:01:44 -0700 Subject: stagefright: support push-blank-buffers-on-shutdown for SW renderer Bug: 20885565 Change-Id: I2a361b8dd6d39d2cf994f6748ed562be4c642b77 --- media/libstagefright/MediaCodec.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'media/libstagefright/MediaCodec.cpp') diff --git a/media/libstagefright/MediaCodec.cpp b/media/libstagefright/MediaCodec.cpp index ed4f682..44f6542 100644 --- a/media/libstagefright/MediaCodec.cpp +++ b/media/libstagefright/MediaCodec.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include #include #include @@ -1659,6 +1660,11 @@ void MediaCodec::onMessageReceived(const sp &msg) { sp format; CHECK(msg->findMessage("format", &format)); + int32_t push; + if (msg->findInt32("push-blank-buffers-on-shutdown", &push) && push != 0) { + mFlags |= kFlagPushBlankBuffersOnShutdown; + } + if (obj != NULL) { format->setObject("native-window", obj); status_t err = handleSetSurface(static_cast(obj.get())); @@ -1725,6 +1731,10 @@ void MediaCodec::onMessageReceived(const sp &msg) { } else { if (err == OK) { if (mFlags & kFlagUsesSoftwareRenderer) { + if (mSoftRenderer != NULL + && (mFlags & kFlagPushBlankBuffersOnShutdown)) { + pushBlankBuffersToNativeWindow(mSurface.get()); + } mSoftRenderer = new SoftwareRenderer(surface); // TODO: check if this was successful } else { @@ -1848,6 +1858,10 @@ void MediaCodec::onMessageReceived(const sp &msg) { msg->what() == kWhatStop /* keepComponentAllocated */); returnBuffersToCodec(); + + if (mSoftRenderer != NULL && (mFlags & kFlagPushBlankBuffersOnShutdown)) { + pushBlankBuffersToNativeWindow(mSurface.get()); + } break; } -- cgit v1.1