summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLajos Molnar <lajos@google.com>2015-05-02 02:23:06 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-05-02 02:23:07 +0000
commit8651c6f5069cca40ef805b800a9730617ff7f9b8 (patch)
tree129d2b9634ed11d920253265e86b171033887b39 /include
parente2a2dfcbf0c9d6bb7139263ecf0d8e53b4ca1049 (diff)
parent1dcdfead2971c1fa7c02f24ba86f706890c9f99e (diff)
downloadframeworks_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.h9
-rw-r--r--include/media/stagefright/CodecBase.h2
-rw-r--r--include/media/stagefright/MediaCodec.h8
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();