diff options
author | Lajos Molnar <lajos@google.com> | 2015-05-02 02:23:06 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-05-02 02:23:07 +0000 |
commit | 8651c6f5069cca40ef805b800a9730617ff7f9b8 (patch) | |
tree | 129d2b9634ed11d920253265e86b171033887b39 /include | |
parent | e2a2dfcbf0c9d6bb7139263ecf0d8e53b4ca1049 (diff) | |
parent | 1dcdfead2971c1fa7c02f24ba86f706890c9f99e (diff) | |
download | frameworks_av-8651c6f5069cca40ef805b800a9730617ff7f9b8.zip frameworks_av-8651c6f5069cca40ef805b800a9730617ff7f9b8.tar.gz frameworks_av-8651c6f5069cca40ef805b800a9730617ff7f9b8.tar.bz2 |
Merge "stagefright: add support for dynamically setting MediaCodec output surface" into mnc-dev
Diffstat (limited to 'include')
-rw-r--r-- | include/media/stagefright/ACodec.h | 9 | ||||
-rw-r--r-- | include/media/stagefright/CodecBase.h | 2 | ||||
-rw-r--r-- | include/media/stagefright/MediaCodec.h | 8 |
3 files changed, 17 insertions, 2 deletions
diff --git a/include/media/stagefright/ACodec.h b/include/media/stagefright/ACodec.h index f941512..cdb923d 100644 --- a/include/media/stagefright/ACodec.h +++ b/include/media/stagefright/ACodec.h @@ -49,6 +49,8 @@ struct ACodec : public AHierarchicalStateMachine, public CodecBase { virtual void initiateStart(); virtual void initiateShutdown(bool keepComponentAllocated = false); + virtual status_t setSurface(const sp<Surface> &surface); + virtual void signalFlush(); virtual void signalResume(); @@ -115,6 +117,7 @@ private: kWhatDrainDeferredMessages = 'drai', kWhatAllocateComponent = 'allo', kWhatConfigureComponent = 'conf', + kWhatSetSurface = 'setS', kWhatCreateInputSurface = 'cisf', kWhatUsePersistentInputSurface = 'pisf', kWhatSignalEndOfInputStream = 'eois', @@ -232,6 +235,12 @@ private: status_t freeBuffersOnPort(OMX_U32 portIndex); status_t freeBuffer(OMX_U32 portIndex, size_t i); + status_t handleSetSurface(const sp<Surface> &surface); + status_t setNativeWindowSizeFormatAndUsage( + ANativeWindow *nativeWindow /* nonnull */, + int width, int height, int format, int rotation, int usage); + status_t setupNativeWindowSizeFormatAndUsage(ANativeWindow *nativeWindow /* nonnull */); + status_t configureOutputBuffersFromNativeWindow( OMX_U32 *nBufferCount, OMX_U32 *nBufferSize, OMX_U32 *nMinUndequeuedBuffers); diff --git a/include/media/stagefright/CodecBase.h b/include/media/stagefright/CodecBase.h index ce53eda..51213b6 100644 --- a/include/media/stagefright/CodecBase.h +++ b/include/media/stagefright/CodecBase.h @@ -58,6 +58,8 @@ struct CodecBase : public AHandler { // require an explicit message handler virtual void onMessageReceived(const sp<AMessage> &msg) = 0; + virtual status_t setSurface(const sp<Surface> &surface) { return INVALID_OPERATION; } + virtual void signalFlush() = 0; virtual void signalResume() = 0; diff --git a/include/media/stagefright/MediaCodec.h b/include/media/stagefright/MediaCodec.h index bab1426..f5d523d 100644 --- a/include/media/stagefright/MediaCodec.h +++ b/include/media/stagefright/MediaCodec.h @@ -146,6 +146,8 @@ struct MediaCodec : public AHandler { status_t getOutputFormat(size_t index, sp<AMessage> *format); status_t getInputBuffer(size_t index, sp<ABuffer> *buffer); + status_t setSurface(const sp<Surface> &nativeWindow); + status_t requestIDRFrame(); // Notification will be posted once there "is something to do", i.e. @@ -184,6 +186,7 @@ private: enum { kWhatInit = 'init', kWhatConfigure = 'conf', + kWhatSetSurface = 'sSur', kWhatCreateInputSurface = 'cisf', kWhatUsePersistentInputSurface = 'pisf', kWhatStart = 'strt', @@ -340,8 +343,9 @@ private: void extractCSD(const sp<AMessage> &format); status_t queueCSDInputBuffer(size_t bufferIndex); - status_t handleSetSurface( - const sp<Surface> &surface); + status_t handleSetSurface(const sp<Surface> &surface); + status_t connectToSurface(const sp<Surface> &surface); + status_t disconnectFromSurface(); void postActivityNotificationIfPossible(); |