summaryrefslogtreecommitdiffstats
path: root/include/media
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2009-07-31 11:52:50 -0700
committerAndreas Huber <andih@google.com>2009-07-31 12:48:53 -0700
commit8b938cdab5bd3d074d9b41bc2915fcfc11e47f27 (patch)
treef2015fc5b3786ef4e1a3db436cd0897727be3569 /include/media
parent81573ec97eaf631cc63eedceb928e123dafd593c (diff)
downloadframeworks_av-8b938cdab5bd3d074d9b41bc2915fcfc11e47f27.zip
frameworks_av-8b938cdab5bd3d074d9b41bc2915fcfc11e47f27.tar.gz
frameworks_av-8b938cdab5bd3d074d9b41bc2915fcfc11e47f27.tar.bz2
The IOMX interface now instantiates IOMXRenderers to hide the details of hardware accelerated blitting.
Diffstat (limited to 'include/media')
-rw-r--r--include/media/IOMX.h24
-rw-r--r--include/media/stagefright/MediaPlayerImpl.h4
-rw-r--r--include/media/stagefright/MetaData.h1
-rw-r--r--include/media/stagefright/SurfaceRenderer.h51
4 files changed, 27 insertions, 53 deletions
diff --git a/include/media/IOMX.h b/include/media/IOMX.h
index 5c61c50..0010d84 100644
--- a/include/media/IOMX.h
+++ b/include/media/IOMX.h
@@ -23,6 +23,7 @@
#include <utils/String8.h>
#include <OMX_Core.h>
+#include <OMX_Video.h>
#define IOMX_USES_SOCKETS 0
@@ -30,6 +31,8 @@ namespace android {
class IMemory;
class IOMXObserver;
+class IOMXRenderer;
+class ISurface;
class IOMX : public IInterface {
public:
@@ -87,6 +90,13 @@ public:
OMX_U32 range_offset, OMX_U32 range_length,
OMX_U32 flags, OMX_TICKS timestamp) = 0;
#endif
+
+ virtual sp<IOMXRenderer> createRenderer(
+ const sp<ISurface> &surface,
+ const char *componentName,
+ OMX_COLOR_FORMATTYPE colorFormat,
+ size_t encodedWidth, size_t encodedHeight,
+ size_t displayWidth, size_t displayHeight) = 0;
};
struct omx_message {
@@ -155,6 +165,13 @@ public:
virtual void on_message(const omx_message &msg) = 0;
};
+class IOMXRenderer : public IInterface {
+public:
+ DECLARE_META_INTERFACE(OMXRenderer);
+
+ virtual void render(IOMX::buffer_id buffer) = 0;
+};
+
////////////////////////////////////////////////////////////////////////////////
class BnOMX : public BnInterface<IOMX> {
@@ -171,6 +188,13 @@ public:
uint32_t flags = 0);
};
+class BnOMXRenderer : public BnInterface<IOMXRenderer> {
+public:
+ virtual status_t onTransact(
+ uint32_t code, const Parcel &data, Parcel *reply,
+ uint32_t flags = 0);
+};
+
} // namespace android
#endif // ANDROID_IOMX_H_
diff --git a/include/media/stagefright/MediaPlayerImpl.h b/include/media/stagefright/MediaPlayerImpl.h
index c48400c..e96e5e8 100644
--- a/include/media/stagefright/MediaPlayerImpl.h
+++ b/include/media/stagefright/MediaPlayerImpl.h
@@ -28,6 +28,7 @@
namespace android {
class AudioPlayer;
+class IOMXRenderer;
class ISurface;
class MediaExtractor;
class MediaBuffer;
@@ -37,7 +38,6 @@ class MetaData;
class OMXDecoder;
class Surface;
class TimeSource;
-class VideoRenderer;
class MediaPlayerImpl {
public:
@@ -93,7 +93,7 @@ private:
sp<Surface> mSurface;
sp<ISurface> mISurface;
- VideoRenderer *mRenderer;
+ sp<IOMXRenderer> mVideoRenderer;
sp<MediaPlayerBase::AudioSink> mAudioSink;
diff --git a/include/media/stagefright/MetaData.h b/include/media/stagefright/MetaData.h
index 04805da..2d5b8d8 100644
--- a/include/media/stagefright/MetaData.h
+++ b/include/media/stagefright/MetaData.h
@@ -44,6 +44,7 @@ enum {
kKeyColorFormat = 'colf',
kKeyPlatformPrivate = 'priv',
kKeyDecoderComponent = 'decC',
+ kKeyBufferID = 'bfID',
};
enum {
diff --git a/include/media/stagefright/SurfaceRenderer.h b/include/media/stagefright/SurfaceRenderer.h
deleted file mode 100644
index 298ab50..0000000
--- a/include/media/stagefright/SurfaceRenderer.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2009 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 SURFACE_RENDERER_H_
-
-#define SURFACE_RENDERER_H_
-
-#include <media/stagefright/VideoRenderer.h>
-#include <utils/RefBase.h>
-
-namespace android {
-
-class Surface;
-
-class SurfaceRenderer : public VideoRenderer {
-public:
- SurfaceRenderer(
- const sp<Surface> &surface,
- size_t displayWidth, size_t displayHeight,
- size_t decodedWidth, size_t decodedHeight);
-
- virtual ~SurfaceRenderer();
-
- virtual void render(
- const void *data, size_t size, void *platformPrivate);
-
-private:
- sp<Surface> mSurface;
- size_t mDisplayWidth, mDisplayHeight;
- size_t mDecodedWidth, mDecodedHeight;
-
- SurfaceRenderer(const SurfaceRenderer &);
- SurfaceRenderer &operator=(const SurfaceRenderer &);
-};
-
-} // namespace android
-
-#endif // SURFACE_RENDERER_H_