summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRachad <rachad@google.com>2014-08-09 04:56:09 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-08-09 00:45:27 +0000
commit7d1cd4aae2aa42172abdff00ec1601248cf92b02 (patch)
treec17543556d49616a43409232fdd0cae74282227d
parent45e2fc22261cb8ecac4901b4425bcb7352c71174 (diff)
parent7cb0d39016ff8061fe9fc2967870c145a6ffa2ac (diff)
downloadframeworks_native-7d1cd4aae2aa42172abdff00ec1601248cf92b02.zip
frameworks_native-7d1cd4aae2aa42172abdff00ec1601248cf92b02.tar.gz
frameworks_native-7d1cd4aae2aa42172abdff00ec1601248cf92b02.tar.bz2
Merge "Tunneled Video Playback support" into lmp-dev
-rw-r--r--include/gui/Surface.h1
-rw-r--r--include/media/hardware/HardwareAPI.h21
-rw-r--r--libs/gui/Surface.cpp10
3 files changed, 32 insertions, 0 deletions
diff --git a/include/gui/Surface.h b/include/gui/Surface.h
index 35ab7f6..f2cf018 100644
--- a/include/gui/Surface.h
+++ b/include/gui/Surface.h
@@ -145,6 +145,7 @@ private:
int dispatchSetUsage(va_list args);
int dispatchLock(va_list args);
int dispatchUnlockAndPost(va_list args);
+ int dispatchSetSidebandStream(va_list args);
protected:
virtual int dequeueBuffer(ANativeWindowBuffer** buffer, int* fenceFd);
diff --git a/include/media/hardware/HardwareAPI.h b/include/media/hardware/HardwareAPI.h
index 88e7ad3..90150c6 100644
--- a/include/media/hardware/HardwareAPI.h
+++ b/include/media/hardware/HardwareAPI.h
@@ -214,6 +214,27 @@ struct DescribeColorFormatParams {
MediaImage sMediaImage;
};
+// A pointer to this struct is passed to OMX_SetParameter or OMX_GetParameter
+// when the extension index for the
+// 'OMX.google.android.index.configureVideoTunnelMode' extension is given.
+// If the extension is supported then tunneled playback mode should be supported
+// by the codec. If bTunneled is set to OMX_TRUE then the video decoder should
+// operate in "tunneled" mode and output its decoded frames directly to the
+// sink. In this case nAudioHwSync is the HW SYNC ID of the audio HAL Output
+// stream to sync the video with. If bTunneled is set to OMX_FALSE, "tunneled"
+// mode should be disabled and nAudioHwSync should be ignored.
+// OMX_GetParameter is used to query tunneling configuration. bTunneled should
+// return whether decoder is operating in tunneled mode, and if it is,
+// pSidebandWindow should contain the codec allocated sideband window handle.
+struct ConfigureVideoTunnelModeParams {
+ OMX_U32 nSize; // IN
+ OMX_VERSIONTYPE nVersion; // IN
+ OMX_U32 nPortIndex; // IN
+ OMX_BOOL bTunneled; // IN/OUT
+ OMX_U32 nAudioHwSync; // IN
+ OMX_PTR pSidebandWindow; // OUT
+};
+
} // namespace android
extern android::OMXPluginBase *createOMXPlugin();
diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp
index 86451be..b56030e 100644
--- a/libs/gui/Surface.cpp
+++ b/libs/gui/Surface.cpp
@@ -24,6 +24,7 @@
#include <utils/Log.h>
#include <utils/Trace.h>
+#include <utils/NativeHandle.h>
#include <ui/Fence.h>
@@ -443,6 +444,9 @@ int Surface::perform(int operation, va_list args)
case NATIVE_WINDOW_API_DISCONNECT:
res = dispatchDisconnect(args);
break;
+ case NATIVE_WINDOW_SET_SIDEBAND_STREAM:
+ res = dispatchSetSidebandStream(args);
+ break;
default:
res = NAME_NOT_FOUND;
break;
@@ -533,6 +537,12 @@ int Surface::dispatchUnlockAndPost(va_list args __attribute__((unused))) {
return unlockAndPost();
}
+int Surface::dispatchSetSidebandStream(va_list args) {
+ native_handle_t* sH = va_arg(args, native_handle_t*);
+ sp<NativeHandle> sidebandHandle = NativeHandle::create(sH, false);
+ setSidebandStream(sidebandHandle);
+ return OK;
+}
int Surface::connect(int api) {
ATRACE_CALL();