summaryrefslogtreecommitdiffstats
path: root/libstagefrighthw
diff options
context:
space:
mode:
authoratinm <atinm.dev@gmail.com>2011-11-18 16:41:18 -0500
committeratinm <atinm.dev@gmail.com>2011-11-18 16:41:18 -0500
commitfd7c880b8d0f591186994c206463373869e9ec4f (patch)
treea9776d5dc386b04e2af3b48a7b445bc3fb2fb96c /libstagefrighthw
parentd3b4a53f4a9c297a73ccaad01eee9ad6586a5569 (diff)
downloaddevice_samsung_aries-common-fd7c880b8d0f591186994c206463373869e9ec4f.zip
device_samsung_aries-common-fd7c880b8d0f591186994c206463373869e9ec4f.tar.gz
device_samsung_aries-common-fd7c880b8d0f591186994c206463373869e9ec4f.tar.bz2
Initial crap
Change-Id: Iea55d594ffc24d554371006682cc954dc91d185d
Diffstat (limited to 'libstagefrighthw')
-rw-r--r--libstagefrighthw/Android.mk27
-rw-r--r--libstagefrighthw/SEC_OMX_Plugin.cpp147
-rw-r--r--libstagefrighthw/SEC_OMX_Plugin.h76
-rw-r--r--libstagefrighthw/SecHardwareRenderer.cpp228
-rw-r--r--libstagefrighthw/SecHardwareRenderer.h78
-rw-r--r--libstagefrighthw/stagefright_overlay_output.cpp51
6 files changed, 0 insertions, 607 deletions
diff --git a/libstagefrighthw/Android.mk b/libstagefrighthw/Android.mk
deleted file mode 100644
index 7716541..0000000
--- a/libstagefrighthw/Android.mk
+++ /dev/null
@@ -1,27 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
- stagefright_overlay_output.cpp \
- SecHardwareRenderer.cpp \
- SEC_OMX_Plugin.cpp
-
-LOCAL_CFLAGS += $(PV_CFLAGS_MINUS_VISIBILITY)
-
-LOCAL_C_INCLUDES:= \
- $(TOP)/frameworks/base/include/media/stagefright/openmax \
- $(LOCAL_PATH)/../include \
- $(LOCAL_PATH)/../liboverlay
-
-LOCAL_SHARED_LIBRARIES := \
- libbinder \
- libutils \
- libcutils \
- libui \
- libdl \
- libsurfaceflinger_client
-
-LOCAL_MODULE := libstagefrighthw
-
-LOCAL_MODULE_TAGS := optional
-include $(BUILD_SHARED_LIBRARY)
diff --git a/libstagefrighthw/SEC_OMX_Plugin.cpp b/libstagefrighthw/SEC_OMX_Plugin.cpp
deleted file mode 100644
index 0bb70c5..0000000
--- a/libstagefrighthw/SEC_OMX_Plugin.cpp
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "SEC_OMX_Plugin.h"
-
-#include <dlfcn.h>
-
-#include <media/stagefright/HardwareAPI.h>
-#include <media/stagefright/MediaDebug.h>
-
-namespace android {
-
-OMXPluginBase *createOMXPlugin() {
- return new SECOMXPlugin;
-}
-
-SECOMXPlugin::SECOMXPlugin()
- : mLibHandle(dlopen("libSEC_OMX_Core.aries.so", RTLD_NOW)),
- mInit(NULL),
- mDeinit(NULL),
- mComponentNameEnum(NULL),
- mGetHandle(NULL),
- mFreeHandle(NULL),
- mGetRolesOfComponentHandle(NULL) {
- if (mLibHandle != NULL) {
- mInit = (InitFunc)dlsym(mLibHandle, "SEC_OMX_Init");
- mDeinit = (DeinitFunc)dlsym(mLibHandle, "SEC_OMX_DeInit");
-
- mComponentNameEnum =
- (ComponentNameEnumFunc)dlsym(mLibHandle, "SEC_OMX_ComponentNameEnum");
-
- mGetHandle = (GetHandleFunc)dlsym(mLibHandle, "SEC_OMX_GetHandle");
- mFreeHandle = (FreeHandleFunc)dlsym(mLibHandle, "SEC_OMX_FreeHandle");
-
- mGetRolesOfComponentHandle =
- (GetRolesOfComponentFunc)dlsym(
- mLibHandle, "SEC_OMX_GetRolesOfComponent");
-
- (*mInit)();
-
- }
-}
-
-SECOMXPlugin::~SECOMXPlugin() {
- if (mLibHandle != NULL) {
- (*mDeinit)();
-
- dlclose(mLibHandle);
- mLibHandle = NULL;
- }
-}
-
-OMX_ERRORTYPE SECOMXPlugin::makeComponentInstance(
- const char *name,
- const OMX_CALLBACKTYPE *callbacks,
- OMX_PTR appData,
- OMX_COMPONENTTYPE **component) {
- if (mLibHandle == NULL) {
- return OMX_ErrorUndefined;
- }
-
- return (*mGetHandle)(
- reinterpret_cast<OMX_HANDLETYPE *>(component),
- const_cast<char *>(name),
- appData, const_cast<OMX_CALLBACKTYPE *>(callbacks));
-}
-
-OMX_ERRORTYPE SECOMXPlugin::destroyComponentInstance(
- OMX_COMPONENTTYPE *component) {
- if (mLibHandle == NULL) {
- return OMX_ErrorUndefined;
- }
-
- return (*mFreeHandle)(reinterpret_cast<OMX_HANDLETYPE *>(component));
-}
-
-OMX_ERRORTYPE SECOMXPlugin::enumerateComponents(
- OMX_STRING name,
- size_t size,
- OMX_U32 index) {
- if (mLibHandle == NULL) {
- return OMX_ErrorUndefined;
- }
-
- return (*mComponentNameEnum)(name, size, index);
-}
-
-OMX_ERRORTYPE SECOMXPlugin::getRolesOfComponent(
- const char *name,
- Vector<String8> *roles) {
- roles->clear();
-
- if (mLibHandle == NULL) {
- return OMX_ErrorUndefined;
- }
-
- OMX_U32 numRoles;
- OMX_ERRORTYPE err = (*mGetRolesOfComponentHandle)(
- const_cast<OMX_STRING>(name), &numRoles, NULL);
-
- if (err != OMX_ErrorNone) {
- return err;
- }
-
- if (numRoles > 0) {
- OMX_U8 **array = new OMX_U8 *[numRoles];
- for (OMX_U32 i = 0; i < numRoles; ++i) {
- array[i] = new OMX_U8[OMX_MAX_STRINGNAME_SIZE];
- }
-
- OMX_U32 numRoles2;
- err = (*mGetRolesOfComponentHandle)(
- const_cast<OMX_STRING>(name), &numRoles2, array);
-
- CHECK_EQ(err, OMX_ErrorNone);
- CHECK_EQ(numRoles, numRoles2);
-
- for (OMX_U32 i = 0; i < numRoles; ++i) {
- String8 s((const char *)array[i]);
- roles->push(s);
-
- delete[] array[i];
- array[i] = NULL;
- }
-
- delete[] array;
- array = NULL;
- }
-
- return OMX_ErrorNone;
-}
-
-} // namespace android
-
diff --git a/libstagefrighthw/SEC_OMX_Plugin.h b/libstagefrighthw/SEC_OMX_Plugin.h
deleted file mode 100644
index 6df2d31..0000000
--- a/libstagefrighthw/SEC_OMX_Plugin.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef SEC_OMX_PLUGIN
-
-#define SEC_OMX_PLUGIN
-
-#include <media/stagefright/OMXPluginBase.h>
-
-namespace android {
-
-struct SECOMXPlugin : public OMXPluginBase {
- SECOMXPlugin();
- virtual ~SECOMXPlugin();
-
- virtual OMX_ERRORTYPE makeComponentInstance(
- const char *name,
- const OMX_CALLBACKTYPE *callbacks,
- OMX_PTR appData,
- OMX_COMPONENTTYPE **component);
-
- virtual OMX_ERRORTYPE destroyComponentInstance(
- OMX_COMPONENTTYPE *component);
-
- virtual OMX_ERRORTYPE enumerateComponents(
- OMX_STRING name,
- size_t size,
- OMX_U32 index);
-
- virtual OMX_ERRORTYPE getRolesOfComponent(
- const char *name,
- Vector<String8> *roles);
-
-private:
- void *mLibHandle;
-
- typedef OMX_ERRORTYPE (*InitFunc)();
- typedef OMX_ERRORTYPE (*DeinitFunc)();
- typedef OMX_ERRORTYPE (*ComponentNameEnumFunc)(
- OMX_STRING, OMX_U32, OMX_U32);
-
- typedef OMX_ERRORTYPE (*GetHandleFunc)(
- OMX_HANDLETYPE *, OMX_STRING, OMX_PTR, OMX_CALLBACKTYPE *);
-
- typedef OMX_ERRORTYPE (*FreeHandleFunc)(OMX_HANDLETYPE *);
-
- typedef OMX_ERRORTYPE (*GetRolesOfComponentFunc)(
- OMX_STRING, OMX_U32 *, OMX_U8 **);
-
- InitFunc mInit;
- DeinitFunc mDeinit;
- ComponentNameEnumFunc mComponentNameEnum;
- GetHandleFunc mGetHandle;
- FreeHandleFunc mFreeHandle;
- GetRolesOfComponentFunc mGetRolesOfComponentHandle;
-
- SECOMXPlugin(const SECOMXPlugin &);
- SECOMXPlugin &operator=(const SECOMXPlugin &);
-};
-
-} // namespace android
-
-#endif // SEC_OMX_PLUGIN
diff --git a/libstagefrighthw/SecHardwareRenderer.cpp b/libstagefrighthw/SecHardwareRenderer.cpp
deleted file mode 100644
index cb9e8e8..0000000
--- a/libstagefrighthw/SecHardwareRenderer.cpp
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "SecHardwareRenderer"
-#define LOG_NDEBUG 0
-#include <utils/Log.h>
-
-#include "SecHardwareRenderer.h"
-
-#include <media/stagefright/MediaDebug.h>
-#include <surfaceflinger/ISurface.h>
-#include <ui/Overlay.h>
-
-#include <hardware/hardware.h>
-
-#include "v4l2_utils.h"
-#include "utils/Timers.h"
-
-#define CACHEABLE_BUFFERS 0x1
-
-#define USE_ZERO_COPY
-//#define SEC_DEBUG
-
-namespace android {
-
-////////////////////////////////////////////////////////////////////////////////
-
-SecHardwareRenderer::SecHardwareRenderer(
- const sp<ISurface> &surface,
- size_t displayWidth, size_t displayHeight,
- size_t decodedWidth, size_t decodedHeight,
- OMX_COLOR_FORMATTYPE colorFormat,
- int32_t rotationDegrees,
- bool fromHardwareDecoder)
- : mISurface(surface),
- mDisplayWidth(displayWidth),
- mDisplayHeight(displayHeight),
- mDecodedWidth(decodedWidth),
- mDecodedHeight(decodedHeight),
- mColorFormat(colorFormat),
- mInitCheck(NO_INIT),
- mFrameSize(mDecodedWidth * mDecodedHeight * 2),
- mIsFirstFrame(true),
- mCustomFormat(false),
- mIndex(0) {
-
- CHECK(mISurface.get() != NULL);
- CHECK(mDecodedWidth > 0);
- CHECK(mDecodedHeight > 0);
-
- if (colorFormat != OMX_COLOR_FormatCbYCrY
- && colorFormat != OMX_COLOR_FormatYUV420Planar
- && colorFormat != OMX_COLOR_FormatYUV420SemiPlanar) {
- LOGE("Invalid colorFormat (0x%x)", colorFormat);
- return;
- }
-
- uint32_t orientation;
- switch (rotationDegrees) {
- case 0: orientation = ISurface::BufferHeap::ROT_0; break;
- case 90: orientation = ISurface::BufferHeap::ROT_90; break;
- case 180: orientation = ISurface::BufferHeap::ROT_180; break;
- case 270: orientation = ISurface::BufferHeap::ROT_270; break;
- default: orientation = ISurface::BufferHeap::ROT_0; break;
- }
-
- sp<OverlayRef> ref;
-
-#if defined (USE_ZERO_COPY)
- if (fromHardwareDecoder) {
- ref = mISurface->createOverlay(
- mDecodedWidth, mDecodedHeight,
- HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP, orientation);
- mCustomFormat = true;
- }
-#else
- else
- {
- ref = mISurface->createOverlay(
- mDecodedWidth, mDecodedHeight, HAL_PIXEL_FORMAT_YCbCr_420_P,
- orientation);
- }
-#endif
-
- if (ref.get() == NULL) {
- LOGE("Unable to create the overlay!");
- return;
- }
-
- mOverlay = new Overlay(ref);
- mOverlay->setParameter(CACHEABLE_BUFFERS, 0);
-
- mNumBuf = mOverlay->getBufferCount();
-
- if (mCustomFormat) {
- mFrameSize = 32;
- mMemoryHeap = new MemoryHeapBase(mNumBuf * mFrameSize);
- } else {
- for (size_t i = 0; i < (size_t)mNumBuf; ++i) {
- void *addr = mOverlay->getBufferAddress((void *)i);
- mOverlayAddresses.push(addr);
- }
- }
-
- mInitCheck = OK;
-}
-
-SecHardwareRenderer::~SecHardwareRenderer() {
-
- if(mMemoryHeap != NULL)
- mMemoryHeap.clear();
-
- if (mOverlay.get() != NULL) {
- mOverlay->destroy();
- mOverlay.clear();
- }
-}
-
-void SecHardwareRenderer::handleYUV420Planar(
- const void *data, size_t size) {
-
- int FrameSize;
- uint8_t* pPhyYAddr;
- uint8_t* pPhyCAddr;
- int AddrSize;
- size_t offset;
-
- CHECK(size >= (mDecodedWidth * mDecodedHeight * 3) / 2);
-
- offset = mIndex * mFrameSize;
- void *dst = (uint8_t *)mMemoryHeap->getBase() + offset;
-
- AddrSize = sizeof(void *);
- memcpy(&FrameSize, data, sizeof(FrameSize));
- memcpy(&pPhyYAddr, data + sizeof(FrameSize), sizeof(pPhyYAddr));
- memcpy(&pPhyCAddr, data + sizeof(FrameSize) + (AddrSize * 1), sizeof(pPhyCAddr));
-
- memcpy(dst , &pPhyYAddr, sizeof(pPhyYAddr));
- memcpy(dst + sizeof(pPhyYAddr) , &pPhyCAddr, sizeof(pPhyCAddr));
- memcpy(dst + sizeof(pPhyYAddr) + sizeof(pPhyCAddr), &mIndex, sizeof(mIndex));
-}
-
-void SecHardwareRenderer::render(
- const void *data, size_t size, void *platformPrivate) {
-
- if (mOverlay.get() == NULL) {
- return;
- }
-
- if (mCustomFormat) {
- /* zero copy solution case */
-
- overlay_buffer_t dst = (uint8_t *)mMemoryHeap->getBase() + mIndex*mFrameSize;
-
- if (mColorFormat == OMX_COLOR_FormatYUV420Planar ||
- mColorFormat == OMX_COLOR_FormatYUV420SemiPlanar) {
- handleYUV420Planar(data, size);
- }
-
- if (mOverlay->queueBuffer(dst) == ALL_BUFFERS_FLUSHED) {
- mIsFirstFrame = true;
- if (mOverlay->queueBuffer((void *)dst) != 0) {
- return;
- }
- }
-
- if (++mIndex == mNumBuf) {
- mIndex = 0;
- }
-
- overlay_buffer_t overlay_buffer;
- if (!mIsFirstFrame) {
- status_t err = mOverlay->dequeueBuffer(&overlay_buffer);
- if (err == ALL_BUFFERS_FLUSHED) {
- mIsFirstFrame = true;
- } else {
- return;
- }
- } else {
- mIsFirstFrame = false;
- }
- } else {
- /* normal frame case */
- if (mColorFormat == OMX_COLOR_FormatYUV420Planar) {
- memcpy(mOverlayAddresses[mIndex], data, size);
- }
-
- if (mOverlay->queueBuffer((void *)mIndex) == ALL_BUFFERS_FLUSHED) {
- mIsFirstFrame = true;
- if (mOverlay->queueBuffer((void *)mIndex) != 0) {
- return;
- }
- }
-
- if (++mIndex == mNumBuf) {
- mIndex = 0;
- }
-
- overlay_buffer_t overlay_buffer;
- if (!mIsFirstFrame) {
- status_t err = mOverlay->dequeueBuffer(&overlay_buffer);
-
- if (err == ALL_BUFFERS_FLUSHED) {
- mIsFirstFrame = true;
- } else {
- return;
- }
- } else {
- mIsFirstFrame = false;
- }
- }
-}
-
-} // namespace android
-
diff --git a/libstagefrighthw/SecHardwareRenderer.h b/libstagefrighthw/SecHardwareRenderer.h
deleted file mode 100644
index 3fad243..0000000
--- a/libstagefrighthw/SecHardwareRenderer.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef SEC_HARDWARE_RENDERER_H_
-
-#define SEC_HARDWARE_RENDERER_H_
-
-#include <media/stagefright/VideoRenderer.h>
-#include <utils/RefBase.h>
-#include <utils/Vector.h>
-
-#include <OMX_Component.h>
-
-#include <binder/MemoryHeapBase.h>
-#include <binder/MemoryHeapPmem.h>
-
-namespace android {
-
-class ISurface;
-class Overlay;
-
-class SecHardwareRenderer : public VideoRenderer {
-public:
- SecHardwareRenderer(
- const sp<ISurface> &surface,
- size_t displayWidth, size_t displayHeight,
- size_t decodedWidth, size_t decodedHeight,
- OMX_COLOR_FORMATTYPE colorFormat,
- int32_t rotationDegrees,
- bool fromHardwareDecoder);
-
- virtual ~SecHardwareRenderer();
-
- status_t initCheck() const { return mInitCheck; }
-
- virtual void render(
- const void *data, size_t size, void *platformPrivate);
-
-
-private:
- sp<ISurface> mISurface;
- size_t mDisplayWidth, mDisplayHeight;
- size_t mDecodedWidth, mDecodedHeight;
- OMX_COLOR_FORMATTYPE mColorFormat;
- status_t mInitCheck;
- size_t mFrameSize;
- sp<Overlay> mOverlay;
- sp<MemoryHeapBase> mMemoryHeap;
- Vector<void *> mOverlayAddresses;
- bool mIsFirstFrame;
- int mNumBuf;
- size_t mIndex;
- bool mCustomFormat;
-
-
- SecHardwareRenderer(const SecHardwareRenderer &);
- SecHardwareRenderer &operator=(const SecHardwareRenderer &);
-
- void handleYUV420Planar(const void *, size_t);
-};
-
-} // namespace android
-
-#endif // SEC_HARDWARE_RENDERER_H_
-
diff --git a/libstagefrighthw/stagefright_overlay_output.cpp b/libstagefrighthw/stagefright_overlay_output.cpp
deleted file mode 100644
index fce1d7e..0000000
--- a/libstagefrighthw/stagefright_overlay_output.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "SecHardwareRenderer.h"
-
-#include <media/stagefright/HardwareAPI.h>
-
-using android::sp;
-using android::ISurface;
-using android::VideoRenderer;
-
-VideoRenderer *createRendererWithRotation(
- const sp<ISurface> &surface,
- const char *componentName,
- OMX_COLOR_FORMATTYPE colorFormat,
- size_t displayWidth, size_t displayHeight,
- size_t decodedWidth, size_t decodedHeight,
- int32_t rotationDegrees) {
- using android::SecHardwareRenderer;
-
- bool fromHardwareDecoder = !strncmp(componentName, "OMX.SEC.", 8);
-
- SecHardwareRenderer *renderer =
- new SecHardwareRenderer(
- surface, displayWidth, displayHeight,
- decodedWidth, decodedHeight,
- colorFormat,
- rotationDegrees,
- fromHardwareDecoder);
-
- if (renderer->initCheck() != android::OK) {
- delete renderer;
- renderer = NULL;
- }
-
- return renderer;
-}
-