diff --git a/include/media/IMediaRecorder.h b/include/media/IMediaRecorder.h index 24ac82b237718..cfc17a54ecb60 100644 --- a/include/media/IMediaRecorder.h +++ b/include/media/IMediaRecorder.h @@ -24,7 +24,7 @@ namespace android { class ISurface; class ICamera; -class IMediaPlayerClient; +class IMediaRecorderClient; class IMediaRecorder: public IInterface { @@ -43,7 +43,7 @@ public: virtual status_t setVideoSize(int width, int height) = 0; virtual status_t setVideoFrameRate(int frames_per_second) = 0; virtual status_t setParameters(const String8& params) = 0; - virtual status_t setListener(const sp& listener) = 0; + virtual status_t setListener(const sp& listener) = 0; virtual status_t prepare() = 0; virtual status_t getMaxAmplitude(int* max) = 0; virtual status_t start() = 0; diff --git a/include/media/IMediaRecorderClient.h b/include/media/IMediaRecorderClient.h new file mode 100644 index 0000000000000..0058ef25163f4 --- /dev/null +++ b/include/media/IMediaRecorderClient.h @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2010 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 ANDROID_IMEDIARECORDERCLIENT_H +#define ANDROID_IMEDIARECORDERCLIENT_H + +#include +#include +#include + +namespace android { + +class IMediaRecorderClient: public IInterface +{ +public: + DECLARE_META_INTERFACE(MediaRecorderClient); + + virtual void notify(int msg, int ext1, int ext2) = 0; +}; + +// ---------------------------------------------------------------------------- + +class BnMediaRecorderClient: public BnInterface +{ +public: + virtual status_t onTransact( uint32_t code, + const Parcel& data, + Parcel* reply, + uint32_t flags = 0); +}; + +}; // namespace android + +#endif // ANDROID_IMEDIARECORDERCLIENT_H + diff --git a/include/media/MediaRecorderBase.h b/include/media/MediaRecorderBase.h index 5b787a72548fb..497965c9a6daf 100644 --- a/include/media/MediaRecorderBase.h +++ b/include/media/MediaRecorderBase.h @@ -41,7 +41,7 @@ struct MediaRecorderBase { virtual status_t setOutputFile(const char *path) = 0; virtual status_t setOutputFile(int fd, int64_t offset, int64_t length) = 0; virtual status_t setParameters(const String8& params) = 0; - virtual status_t setListener(const sp& listener) = 0; + virtual status_t setListener(const sp& listener) = 0; virtual status_t prepare() = 0; virtual status_t start() = 0; virtual status_t stop() = 0; diff --git a/include/media/PVMediaRecorder.h b/include/media/PVMediaRecorder.h index 4f17c1ae81a62..c04105eae55f6 100644 --- a/include/media/PVMediaRecorder.h +++ b/include/media/PVMediaRecorder.h @@ -18,7 +18,7 @@ #ifndef ANDROID_PVMEDIARECORDER_H #define ANDROID_PVMEDIARECORDER_H -#include +#include #include namespace android { @@ -45,7 +45,7 @@ public: virtual status_t setOutputFile(const char *path); virtual status_t setOutputFile(int fd, int64_t offset, int64_t length); virtual status_t setParameters(const String8& params); - virtual status_t setListener(const sp& listener); + virtual status_t setListener(const sp& listener); virtual status_t prepare(); virtual status_t start(); virtual status_t stop(); diff --git a/include/media/mediarecorder.h b/include/media/mediarecorder.h index 4f4ec43ef7b08..b21bc4d5bdda2 100644 --- a/include/media/mediarecorder.h +++ b/include/media/mediarecorder.h @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include namespace android { @@ -149,7 +149,7 @@ public: virtual void notify(int msg, int ext1, int ext2) = 0; }; -class MediaRecorder : public BnMediaPlayerClient, +class MediaRecorder : public BnMediaRecorderClient, public virtual IMediaDeathNotifier { public: diff --git a/include/media/stagefright/MediaWriter.h b/include/media/stagefright/MediaWriter.h index 46aaf7cad84d0..e91d066c04f6d 100644 --- a/include/media/stagefright/MediaWriter.h +++ b/include/media/stagefright/MediaWriter.h @@ -19,7 +19,7 @@ #define MEDIA_WRITER_H_ #include -#include +#include namespace android { @@ -36,7 +36,7 @@ struct MediaWriter : public RefBase { virtual void pause() = 0; virtual void setMaxFileSize(int64_t bytes) { mMaxFileSizeLimitBytes = bytes; } virtual void setMaxFileDuration(int64_t durationUs) { mMaxFileDurationLimitUs = durationUs; } - virtual void setListener(const sp& listener) { + virtual void setListener(const sp& listener) { mListener = listener; } @@ -44,7 +44,7 @@ protected: virtual ~MediaWriter() {} int64_t mMaxFileSizeLimitBytes; int64_t mMaxFileDurationLimitUs; - sp mListener; + sp mListener; void notify(int msg, int ext1, int ext2) { if (mListener != NULL) { diff --git a/media/libmedia/Android.mk b/media/libmedia/Android.mk index 7908f5de0e864..de9e51da4cbf7 100644 --- a/media/libmedia/Android.mk +++ b/media/libmedia/Android.mk @@ -12,6 +12,7 @@ LOCAL_SRC_FILES:= \ mediaplayer.cpp \ IMediaPlayerService.cpp \ IMediaPlayerClient.cpp \ + IMediaRecorderClient.cpp \ IMediaPlayer.cpp \ IMediaRecorder.cpp \ Metadata.cpp \ diff --git a/media/libmedia/IMediaRecorder.cpp b/media/libmedia/IMediaRecorder.cpp index 2bc2a7e776f17..9fe207c555413 100644 --- a/media/libmedia/IMediaRecorder.cpp +++ b/media/libmedia/IMediaRecorder.cpp @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include namespace android { @@ -189,7 +189,7 @@ public: return reply.readInt32(); } - status_t setListener(const sp& listener) + status_t setListener(const sp& listener) { LOGV("setListener(%p)", listener.get()); Parcel data, reply; @@ -399,8 +399,8 @@ status_t BnMediaRecorder::onTransact( case SET_LISTENER: { LOGV("SET_LISTENER"); CHECK_INTERFACE(IMediaRecorder, data, reply); - sp listener = - interface_cast(data.readStrongBinder()); + sp listener = + interface_cast(data.readStrongBinder()); reply->writeInt32(setListener(listener)); return NO_ERROR; } break; diff --git a/media/libmedia/IMediaRecorderClient.cpp b/media/libmedia/IMediaRecorderClient.cpp new file mode 100644 index 0000000000000..ff235c9c790ac --- /dev/null +++ b/media/libmedia/IMediaRecorderClient.cpp @@ -0,0 +1,70 @@ +/* +** +** Copyright 2010, 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. +*/ + +#include +#include +#include + +#include + +namespace android { + +enum { + NOTIFY = IBinder::FIRST_CALL_TRANSACTION, +}; + +class BpMediaRecorderClient: public BpInterface +{ +public: + BpMediaRecorderClient(const sp& impl) + : BpInterface(impl) + { + } + + virtual void notify(int msg, int ext1, int ext2) + { + Parcel data, reply; + data.writeInterfaceToken(IMediaRecorderClient::getInterfaceDescriptor()); + data.writeInt32(msg); + data.writeInt32(ext1); + data.writeInt32(ext2); + remote()->transact(NOTIFY, data, &reply, IBinder::FLAG_ONEWAY); + } +}; + +IMPLEMENT_META_INTERFACE(MediaRecorderClient, "android.media.IMediaRecorderClient"); + +// ---------------------------------------------------------------------- + +status_t BnMediaRecorderClient::onTransact( + uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) +{ + switch(code) { + case NOTIFY: { + CHECK_INTERFACE(IMediaRecorderClient, data, reply); + int msg = data.readInt32(); + int ext1 = data.readInt32(); + int ext2 = data.readInt32(); + notify(msg, ext1, ext2); + return NO_ERROR; + } break; + default: + return BBinder::onTransact(code, data, reply, flags); + } +} + +}; // namespace android diff --git a/media/libmediaplayerservice/MediaRecorderClient.cpp b/media/libmediaplayerservice/MediaRecorderClient.cpp index 084f03991e397..80b1cfd00e2e9 100644 --- a/media/libmediaplayerservice/MediaRecorderClient.cpp +++ b/media/libmediaplayerservice/MediaRecorderClient.cpp @@ -318,7 +318,7 @@ MediaRecorderClient::~MediaRecorderClient() release(); } -status_t MediaRecorderClient::setListener(const sp& listener) +status_t MediaRecorderClient::setListener(const sp& listener) { LOGV("setListener"); Mutex::Autolock lock(mLock); diff --git a/media/libmediaplayerservice/MediaRecorderClient.h b/media/libmediaplayerservice/MediaRecorderClient.h index e07306bca99e7..b53d950ab6f22 100644 --- a/media/libmediaplayerservice/MediaRecorderClient.h +++ b/media/libmediaplayerservice/MediaRecorderClient.h @@ -40,7 +40,7 @@ public: virtual status_t setVideoSize(int width, int height); virtual status_t setVideoFrameRate(int frames_per_second); virtual status_t setParameters(const String8& params); - virtual status_t setListener(const sp& listener); + virtual status_t setListener(const sp& listener); virtual status_t prepare(); virtual status_t getMaxAmplitude(int* max); virtual status_t start(); diff --git a/media/libmediaplayerservice/StagefrightRecorder.cpp b/media/libmediaplayerservice/StagefrightRecorder.cpp index 1e20f7e59bc79..c4aeec391cd70 100644 --- a/media/libmediaplayerservice/StagefrightRecorder.cpp +++ b/media/libmediaplayerservice/StagefrightRecorder.cpp @@ -456,7 +456,7 @@ status_t StagefrightRecorder::setParameters(const String8 ¶ms) { return OK; } -status_t StagefrightRecorder::setListener(const sp &listener) { +status_t StagefrightRecorder::setListener(const sp &listener) { mListener = listener; return OK; diff --git a/media/libmediaplayerservice/StagefrightRecorder.h b/media/libmediaplayerservice/StagefrightRecorder.h index 9fb7e8f75e336..f4488b641c3fe 100644 --- a/media/libmediaplayerservice/StagefrightRecorder.h +++ b/media/libmediaplayerservice/StagefrightRecorder.h @@ -46,7 +46,7 @@ struct StagefrightRecorder : public MediaRecorderBase { virtual status_t setOutputFile(const char *path); virtual status_t setOutputFile(int fd, int64_t offset, int64_t length); virtual status_t setParameters(const String8& params); - virtual status_t setListener(const sp& listener); + virtual status_t setListener(const sp& listener); virtual status_t prepare(); virtual status_t start(); virtual status_t pause(); @@ -63,7 +63,7 @@ private: sp mCamera; sp mPreviewSurface; - sp mListener; + sp mListener; sp mWriter; sp mAudioSourceNode;