diff options
author | Rachad <rachad@google.com> | 2014-08-09 04:56:09 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-08-09 00:45:27 +0000 |
commit | 7d1cd4aae2aa42172abdff00ec1601248cf92b02 (patch) | |
tree | c17543556d49616a43409232fdd0cae74282227d | |
parent | 45e2fc22261cb8ecac4901b4425bcb7352c71174 (diff) | |
parent | 7cb0d39016ff8061fe9fc2967870c145a6ffa2ac (diff) | |
download | frameworks_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.h | 1 | ||||
-rw-r--r-- | include/media/hardware/HardwareAPI.h | 21 | ||||
-rw-r--r-- | libs/gui/Surface.cpp | 10 |
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(); |