diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/binder/IBinder.h | 2 | ||||
-rw-r--r-- | include/camera/CameraParameters.h | 3 | ||||
-rw-r--r-- | include/media/IMediaPlayer.h | 3 | ||||
-rw-r--r-- | include/media/MediaPlayerInterface.h | 9 | ||||
-rw-r--r-- | include/media/mediaplayer.h | 3 | ||||
-rw-r--r-- | include/media/stagefright/NativeWindowWrapper.h | 62 | ||||
-rw-r--r-- | include/utils/threads.h | 3 |
7 files changed, 80 insertions, 5 deletions
diff --git a/include/binder/IBinder.h b/include/binder/IBinder.h index 749a977..81b56c2 100644 --- a/include/binder/IBinder.h +++ b/include/binder/IBinder.h @@ -98,7 +98,7 @@ public: * Register the @a recipient for a notification if this binder * goes away. If this binder object unexpectedly goes away * (typically because its hosting process has been killed), - * then DeathRecipient::binderDied() will be called with a referene + * then DeathRecipient::binderDied() will be called with a reference * to this. * * The @a cookie is optional -- if non-NULL, it should be a diff --git a/include/camera/CameraParameters.h b/include/camera/CameraParameters.h index 431aaa47..da2f049 100644 --- a/include/camera/CameraParameters.h +++ b/include/camera/CameraParameters.h @@ -417,11 +417,10 @@ public: // Pixel color formats for KEY_PREVIEW_FORMAT, KEY_PICTURE_FORMAT, // and KEY_VIDEO_FRAME_FORMAT - // Planar variant of the YUV420 color format - static const char PIXEL_FORMAT_YUV420P[]; static const char PIXEL_FORMAT_YUV422SP[]; static const char PIXEL_FORMAT_YUV420SP[]; // NV21 static const char PIXEL_FORMAT_YUV422I[]; // YUY2 + static const char PIXEL_FORMAT_YUV420P[]; // YV12 static const char PIXEL_FORMAT_RGB565[]; static const char PIXEL_FORMAT_JPEG[]; diff --git a/include/media/IMediaPlayer.h b/include/media/IMediaPlayer.h index bba7ed7..70519ef 100644 --- a/include/media/IMediaPlayer.h +++ b/include/media/IMediaPlayer.h @@ -26,6 +26,7 @@ namespace android { class Parcel; class ISurface; class Surface; +class ISurfaceTexture; class IMediaPlayer: public IInterface { @@ -35,6 +36,8 @@ public: virtual void disconnect() = 0; virtual status_t setVideoSurface(const sp<Surface>& surface) = 0; + virtual status_t setVideoSurfaceTexture( + const sp<ISurfaceTexture>& surfaceTexture) = 0; virtual status_t prepareAsync() = 0; virtual status_t start() = 0; virtual status_t stop() = 0; diff --git a/include/media/MediaPlayerInterface.h b/include/media/MediaPlayerInterface.h index 048f041..117d7eb 100644 --- a/include/media/MediaPlayerInterface.h +++ b/include/media/MediaPlayerInterface.h @@ -34,6 +34,7 @@ namespace android { class Parcel; class ISurface; class Surface; +class ISurfaceTexture; template<typename T> class SortedVector; @@ -112,7 +113,13 @@ public: return INVALID_OPERATION; } + // pass the buffered Surface to the media player service virtual status_t setVideoSurface(const sp<Surface>& surface) = 0; + + // pass the buffered ISurfaceTexture to the media player service + virtual status_t setVideoSurfaceTexture( + const sp<ISurfaceTexture>& surfaceTexture) = 0; + virtual status_t prepare() = 0; virtual status_t prepareAsync() = 0; virtual status_t start() = 0; @@ -177,7 +184,7 @@ protected: sp<AudioSink> mAudioSink; }; -// Implement this class for media players that output directo to hardware +// Implement this class for media players that output audio directly to hardware class MediaPlayerHWInterface : public MediaPlayerBase { public: diff --git a/include/media/mediaplayer.h b/include/media/mediaplayer.h index 88b0c3e..528eeb9 100644 --- a/include/media/mediaplayer.h +++ b/include/media/mediaplayer.h @@ -28,6 +28,7 @@ namespace android { class Surface; +class ISurfaceTexture; enum media_event_type { MEDIA_NOP = 0, // interface test message @@ -146,6 +147,8 @@ public: status_t setDataSource(int fd, int64_t offset, int64_t length); status_t setVideoSurface(const sp<Surface>& surface); + status_t setVideoSurfaceTexture( + const sp<ISurfaceTexture>& surfaceTexture); status_t setListener(const sp<MediaPlayerListener>& listener); status_t prepare(); status_t prepareAsync(); diff --git a/include/media/stagefright/NativeWindowWrapper.h b/include/media/stagefright/NativeWindowWrapper.h new file mode 100644 index 0000000..f323cbc --- /dev/null +++ b/include/media/stagefright/NativeWindowWrapper.h @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2011 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 NATIVE_WINDOW_WRAPPER_H_ + +#define NATIVE_WINDOW_WRAPPER_H_ + +#include <surfaceflinger/Surface.h> +#include <gui/SurfaceTextureClient.h> + +namespace android { + +// Both Surface and SurfaceTextureClient are RefBase that implement the +// ANativeWindow interface, but at different addresses. ANativeWindow is not +// a RefBase but acts like one for use with sp<>. This wrapper converts a +// Surface or SurfaceTextureClient into a single reference-counted object +// that holds an sp reference to the underlying Surface or SurfaceTextureClient, +// It provides a method to get the ANativeWindow. + +struct NativeWindowWrapper : RefBase { + NativeWindowWrapper( + const sp<Surface> &surface) : + mSurface(surface) { } + + NativeWindowWrapper( + const sp<SurfaceTextureClient> &surfaceTextureClient) : + mSurfaceTextureClient(surfaceTextureClient) { } + + sp<ANativeWindow> getNativeWindow() const { + if (mSurface != NULL) { + return mSurface; + } else { + return mSurfaceTextureClient; + } + } + + // If needed later we can provide a method to ask what kind of native window + +private: + // At most one of mSurface and mSurfaceTextureClient will be non-NULL + const sp<Surface> mSurface; + const sp<SurfaceTextureClient> mSurfaceTextureClient; + + DISALLOW_EVIL_CONSTRUCTORS(NativeWindowWrapper); +}; + +} // namespace android + +#endif // NATIVE_WINDOW_WRAPPER_H_ diff --git a/include/utils/threads.h b/include/utils/threads.h index 1bcfaed..41e5766 100644 --- a/include/utils/threads.h +++ b/include/utils/threads.h @@ -527,9 +527,10 @@ private: static int _threadLoop(void* user); const bool mCanCallJava; thread_id_t mThread; - Mutex mLock; + mutable Mutex mLock; Condition mThreadExitedCondition; status_t mStatus; + // note that all accesses of mExitPending and mRunning need to hold mLock volatile bool mExitPending; volatile bool mRunning; sp<Thread> mHoldSelf; |