diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/media/IOMX.h | 24 | ||||
-rw-r--r-- | include/media/stagefright/MediaPlayerImpl.h | 4 | ||||
-rw-r--r-- | include/media/stagefright/MetaData.h | 1 | ||||
-rw-r--r-- | include/media/stagefright/SurfaceRenderer.h | 51 | ||||
-rw-r--r-- | include/ui/Surface.h | 2 |
5 files changed, 29 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_ diff --git a/include/ui/Surface.h b/include/ui/Surface.h index 156d453..5665c1f 100644 --- a/include/ui/Surface.h +++ b/include/ui/Surface.h @@ -36,6 +36,7 @@ namespace android { class BufferMapper; class Rect; +class MediaPlayerImpl; class Surface; class SurfaceComposerClient; struct per_client_cblk_t; @@ -180,6 +181,7 @@ private: // mediaplayer needs access to ISurface for display friend class MediaPlayer; friend class Test; + friend class MediaPlayerImpl; const sp<ISurface>& getISurface() const { return mSurface; } status_t getBufferLocked(int index); |