diff options
author | Andreas Huber <andih@google.com> | 2010-01-29 14:56:33 -0800 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2010-02-01 10:58:52 -0800 |
commit | 89e7fff6a5d7410815f42b4a55958a59d4463180 (patch) | |
tree | 12870c951d0beecf2f166a1976563ba4e6f4c420 /media/libstagefright/colorconversion/SoftwareRenderer.cpp | |
parent | 036a38099c9d339d77dc4a1a148db2907a618c2e (diff) | |
download | frameworks_av-89e7fff6a5d7410815f42b4a55958a59d4463180.zip frameworks_av-89e7fff6a5d7410815f42b4a55958a59d4463180.tar.gz frameworks_av-89e7fff6a5d7410815f42b4a55958a59d4463180.tar.bz2 |
Use physical memory for software rendering to take a fast path through surface flinger if possible.
related-to-bug: 2386023
Diffstat (limited to 'media/libstagefright/colorconversion/SoftwareRenderer.cpp')
-rw-r--r-- | media/libstagefright/colorconversion/SoftwareRenderer.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/media/libstagefright/colorconversion/SoftwareRenderer.cpp b/media/libstagefright/colorconversion/SoftwareRenderer.cpp index ef6ede0..ed91eea 100644 --- a/media/libstagefright/colorconversion/SoftwareRenderer.cpp +++ b/media/libstagefright/colorconversion/SoftwareRenderer.cpp @@ -20,6 +20,7 @@ #include "../include/SoftwareRenderer.h" #include <binder/MemoryHeapBase.h> +#include <binder/MemoryHeapPmem.h> #include <media/stagefright/MediaDebug.h> #include <ui/ISurface.h> @@ -38,8 +39,16 @@ SoftwareRenderer::SoftwareRenderer( mDecodedWidth(decodedWidth), mDecodedHeight(decodedHeight), mFrameSize(mDecodedWidth * mDecodedHeight * 2), // RGB565 - mMemoryHeap(new MemoryHeapBase(2 * mFrameSize)), mIndex(0) { + // TODO: How do I allocate physical memory on Droid? + mMemoryHeap = new MemoryHeapBase("/dev/pmem_adsp", 2 * mFrameSize); + if (mMemoryHeap->heapID() < 0) { + LOGI("Creating physical memory heap failed, reverting to regular heap."); + mMemoryHeap = new MemoryHeapBase(2 * mFrameSize); + } else { + mMemoryHeap = new MemoryHeapPmem(mMemoryHeap); + } + CHECK(mISurface.get() != NULL); CHECK(mDecodedWidth > 0); CHECK(mDecodedHeight > 0); |