Merge "Separate MediaRecorderClient with MediaPlayerClient" into gingerbread
This commit is contained in:
@ -24,7 +24,7 @@ namespace android {
|
|||||||
|
|
||||||
class ISurface;
|
class ISurface;
|
||||||
class ICamera;
|
class ICamera;
|
||||||
class IMediaPlayerClient;
|
class IMediaRecorderClient;
|
||||||
|
|
||||||
class IMediaRecorder: public IInterface
|
class IMediaRecorder: public IInterface
|
||||||
{
|
{
|
||||||
@ -43,7 +43,7 @@ public:
|
|||||||
virtual status_t setVideoSize(int width, int height) = 0;
|
virtual status_t setVideoSize(int width, int height) = 0;
|
||||||
virtual status_t setVideoFrameRate(int frames_per_second) = 0;
|
virtual status_t setVideoFrameRate(int frames_per_second) = 0;
|
||||||
virtual status_t setParameters(const String8& params) = 0;
|
virtual status_t setParameters(const String8& params) = 0;
|
||||||
virtual status_t setListener(const sp<IMediaPlayerClient>& listener) = 0;
|
virtual status_t setListener(const sp<IMediaRecorderClient>& listener) = 0;
|
||||||
virtual status_t prepare() = 0;
|
virtual status_t prepare() = 0;
|
||||||
virtual status_t getMaxAmplitude(int* max) = 0;
|
virtual status_t getMaxAmplitude(int* max) = 0;
|
||||||
virtual status_t start() = 0;
|
virtual status_t start() = 0;
|
||||||
|
48
include/media/IMediaRecorderClient.h
Normal file
48
include/media/IMediaRecorderClient.h
Normal file
@ -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 <utils/RefBase.h>
|
||||||
|
#include <binder/IInterface.h>
|
||||||
|
#include <binder/Parcel.h>
|
||||||
|
|
||||||
|
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<IMediaRecorderClient>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual status_t onTransact( uint32_t code,
|
||||||
|
const Parcel& data,
|
||||||
|
Parcel* reply,
|
||||||
|
uint32_t flags = 0);
|
||||||
|
};
|
||||||
|
|
||||||
|
}; // namespace android
|
||||||
|
|
||||||
|
#endif // ANDROID_IMEDIARECORDERCLIENT_H
|
||||||
|
|
@ -41,7 +41,7 @@ struct MediaRecorderBase {
|
|||||||
virtual status_t setOutputFile(const char *path) = 0;
|
virtual status_t setOutputFile(const char *path) = 0;
|
||||||
virtual status_t setOutputFile(int fd, int64_t offset, int64_t length) = 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 setParameters(const String8& params) = 0;
|
||||||
virtual status_t setListener(const sp<IMediaPlayerClient>& listener) = 0;
|
virtual status_t setListener(const sp<IMediaRecorderClient>& listener) = 0;
|
||||||
virtual status_t prepare() = 0;
|
virtual status_t prepare() = 0;
|
||||||
virtual status_t start() = 0;
|
virtual status_t start() = 0;
|
||||||
virtual status_t stop() = 0;
|
virtual status_t stop() = 0;
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
#ifndef ANDROID_PVMEDIARECORDER_H
|
#ifndef ANDROID_PVMEDIARECORDER_H
|
||||||
#define ANDROID_PVMEDIARECORDER_H
|
#define ANDROID_PVMEDIARECORDER_H
|
||||||
|
|
||||||
#include <media/IMediaPlayerClient.h>
|
#include <media/IMediaRecorderClient.h>
|
||||||
#include <media/MediaRecorderBase.h>
|
#include <media/MediaRecorderBase.h>
|
||||||
|
|
||||||
namespace android {
|
namespace android {
|
||||||
@ -45,7 +45,7 @@ public:
|
|||||||
virtual status_t setOutputFile(const char *path);
|
virtual status_t setOutputFile(const char *path);
|
||||||
virtual status_t setOutputFile(int fd, int64_t offset, int64_t length);
|
virtual status_t setOutputFile(int fd, int64_t offset, int64_t length);
|
||||||
virtual status_t setParameters(const String8& params);
|
virtual status_t setParameters(const String8& params);
|
||||||
virtual status_t setListener(const sp<IMediaPlayerClient>& listener);
|
virtual status_t setListener(const sp<IMediaRecorderClient>& listener);
|
||||||
virtual status_t prepare();
|
virtual status_t prepare();
|
||||||
virtual status_t start();
|
virtual status_t start();
|
||||||
virtual status_t stop();
|
virtual status_t stop();
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
#include <utils/threads.h>
|
#include <utils/threads.h>
|
||||||
#include <utils/List.h>
|
#include <utils/List.h>
|
||||||
#include <utils/Errors.h>
|
#include <utils/Errors.h>
|
||||||
#include <media/IMediaPlayerClient.h>
|
#include <media/IMediaRecorderClient.h>
|
||||||
#include <media/IMediaDeathNotifier.h>
|
#include <media/IMediaDeathNotifier.h>
|
||||||
|
|
||||||
namespace android {
|
namespace android {
|
||||||
@ -149,7 +149,7 @@ public:
|
|||||||
virtual void notify(int msg, int ext1, int ext2) = 0;
|
virtual void notify(int msg, int ext1, int ext2) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class MediaRecorder : public BnMediaPlayerClient,
|
class MediaRecorder : public BnMediaRecorderClient,
|
||||||
public virtual IMediaDeathNotifier
|
public virtual IMediaDeathNotifier
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#define MEDIA_WRITER_H_
|
#define MEDIA_WRITER_H_
|
||||||
|
|
||||||
#include <utils/RefBase.h>
|
#include <utils/RefBase.h>
|
||||||
#include <media/IMediaPlayerClient.h>
|
#include <media/IMediaRecorderClient.h>
|
||||||
|
|
||||||
namespace android {
|
namespace android {
|
||||||
|
|
||||||
@ -36,7 +36,7 @@ struct MediaWriter : public RefBase {
|
|||||||
virtual void pause() = 0;
|
virtual void pause() = 0;
|
||||||
virtual void setMaxFileSize(int64_t bytes) { mMaxFileSizeLimitBytes = bytes; }
|
virtual void setMaxFileSize(int64_t bytes) { mMaxFileSizeLimitBytes = bytes; }
|
||||||
virtual void setMaxFileDuration(int64_t durationUs) { mMaxFileDurationLimitUs = durationUs; }
|
virtual void setMaxFileDuration(int64_t durationUs) { mMaxFileDurationLimitUs = durationUs; }
|
||||||
virtual void setListener(const sp<IMediaPlayerClient>& listener) {
|
virtual void setListener(const sp<IMediaRecorderClient>& listener) {
|
||||||
mListener = listener;
|
mListener = listener;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ protected:
|
|||||||
virtual ~MediaWriter() {}
|
virtual ~MediaWriter() {}
|
||||||
int64_t mMaxFileSizeLimitBytes;
|
int64_t mMaxFileSizeLimitBytes;
|
||||||
int64_t mMaxFileDurationLimitUs;
|
int64_t mMaxFileDurationLimitUs;
|
||||||
sp<IMediaPlayerClient> mListener;
|
sp<IMediaRecorderClient> mListener;
|
||||||
|
|
||||||
void notify(int msg, int ext1, int ext2) {
|
void notify(int msg, int ext1, int ext2) {
|
||||||
if (mListener != NULL) {
|
if (mListener != NULL) {
|
||||||
|
@ -12,6 +12,7 @@ LOCAL_SRC_FILES:= \
|
|||||||
mediaplayer.cpp \
|
mediaplayer.cpp \
|
||||||
IMediaPlayerService.cpp \
|
IMediaPlayerService.cpp \
|
||||||
IMediaPlayerClient.cpp \
|
IMediaPlayerClient.cpp \
|
||||||
|
IMediaRecorderClient.cpp \
|
||||||
IMediaPlayer.cpp \
|
IMediaPlayer.cpp \
|
||||||
IMediaRecorder.cpp \
|
IMediaRecorder.cpp \
|
||||||
Metadata.cpp \
|
Metadata.cpp \
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
#include <binder/Parcel.h>
|
#include <binder/Parcel.h>
|
||||||
#include <surfaceflinger/ISurface.h>
|
#include <surfaceflinger/ISurface.h>
|
||||||
#include <camera/ICamera.h>
|
#include <camera/ICamera.h>
|
||||||
#include <media/IMediaPlayerClient.h>
|
#include <media/IMediaRecorderClient.h>
|
||||||
#include <media/IMediaRecorder.h>
|
#include <media/IMediaRecorder.h>
|
||||||
|
|
||||||
namespace android {
|
namespace android {
|
||||||
@ -189,7 +189,7 @@ public:
|
|||||||
return reply.readInt32();
|
return reply.readInt32();
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t setListener(const sp<IMediaPlayerClient>& listener)
|
status_t setListener(const sp<IMediaRecorderClient>& listener)
|
||||||
{
|
{
|
||||||
LOGV("setListener(%p)", listener.get());
|
LOGV("setListener(%p)", listener.get());
|
||||||
Parcel data, reply;
|
Parcel data, reply;
|
||||||
@ -399,8 +399,8 @@ status_t BnMediaRecorder::onTransact(
|
|||||||
case SET_LISTENER: {
|
case SET_LISTENER: {
|
||||||
LOGV("SET_LISTENER");
|
LOGV("SET_LISTENER");
|
||||||
CHECK_INTERFACE(IMediaRecorder, data, reply);
|
CHECK_INTERFACE(IMediaRecorder, data, reply);
|
||||||
sp<IMediaPlayerClient> listener =
|
sp<IMediaRecorderClient> listener =
|
||||||
interface_cast<IMediaPlayerClient>(data.readStrongBinder());
|
interface_cast<IMediaRecorderClient>(data.readStrongBinder());
|
||||||
reply->writeInt32(setListener(listener));
|
reply->writeInt32(setListener(listener));
|
||||||
return NO_ERROR;
|
return NO_ERROR;
|
||||||
} break;
|
} break;
|
||||||
|
70
media/libmedia/IMediaRecorderClient.cpp
Normal file
70
media/libmedia/IMediaRecorderClient.cpp
Normal file
@ -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 <utils/RefBase.h>
|
||||||
|
#include <binder/IInterface.h>
|
||||||
|
#include <binder/Parcel.h>
|
||||||
|
|
||||||
|
#include <media/IMediaRecorderClient.h>
|
||||||
|
|
||||||
|
namespace android {
|
||||||
|
|
||||||
|
enum {
|
||||||
|
NOTIFY = IBinder::FIRST_CALL_TRANSACTION,
|
||||||
|
};
|
||||||
|
|
||||||
|
class BpMediaRecorderClient: public BpInterface<IMediaRecorderClient>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
BpMediaRecorderClient(const sp<IBinder>& impl)
|
||||||
|
: BpInterface<IMediaRecorderClient>(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
|
@ -318,7 +318,7 @@ MediaRecorderClient::~MediaRecorderClient()
|
|||||||
release();
|
release();
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t MediaRecorderClient::setListener(const sp<IMediaPlayerClient>& listener)
|
status_t MediaRecorderClient::setListener(const sp<IMediaRecorderClient>& listener)
|
||||||
{
|
{
|
||||||
LOGV("setListener");
|
LOGV("setListener");
|
||||||
Mutex::Autolock lock(mLock);
|
Mutex::Autolock lock(mLock);
|
||||||
|
@ -40,7 +40,7 @@ public:
|
|||||||
virtual status_t setVideoSize(int width, int height);
|
virtual status_t setVideoSize(int width, int height);
|
||||||
virtual status_t setVideoFrameRate(int frames_per_second);
|
virtual status_t setVideoFrameRate(int frames_per_second);
|
||||||
virtual status_t setParameters(const String8& params);
|
virtual status_t setParameters(const String8& params);
|
||||||
virtual status_t setListener(const sp<IMediaPlayerClient>& listener);
|
virtual status_t setListener(const sp<IMediaRecorderClient>& listener);
|
||||||
virtual status_t prepare();
|
virtual status_t prepare();
|
||||||
virtual status_t getMaxAmplitude(int* max);
|
virtual status_t getMaxAmplitude(int* max);
|
||||||
virtual status_t start();
|
virtual status_t start();
|
||||||
|
@ -456,7 +456,7 @@ status_t StagefrightRecorder::setParameters(const String8 ¶ms) {
|
|||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t StagefrightRecorder::setListener(const sp<IMediaPlayerClient> &listener) {
|
status_t StagefrightRecorder::setListener(const sp<IMediaRecorderClient> &listener) {
|
||||||
mListener = listener;
|
mListener = listener;
|
||||||
|
|
||||||
return OK;
|
return OK;
|
||||||
|
@ -46,7 +46,7 @@ struct StagefrightRecorder : public MediaRecorderBase {
|
|||||||
virtual status_t setOutputFile(const char *path);
|
virtual status_t setOutputFile(const char *path);
|
||||||
virtual status_t setOutputFile(int fd, int64_t offset, int64_t length);
|
virtual status_t setOutputFile(int fd, int64_t offset, int64_t length);
|
||||||
virtual status_t setParameters(const String8& params);
|
virtual status_t setParameters(const String8& params);
|
||||||
virtual status_t setListener(const sp<IMediaPlayerClient>& listener);
|
virtual status_t setListener(const sp<IMediaRecorderClient>& listener);
|
||||||
virtual status_t prepare();
|
virtual status_t prepare();
|
||||||
virtual status_t start();
|
virtual status_t start();
|
||||||
virtual status_t pause();
|
virtual status_t pause();
|
||||||
@ -63,7 +63,7 @@ private:
|
|||||||
|
|
||||||
sp<Camera> mCamera;
|
sp<Camera> mCamera;
|
||||||
sp<ISurface> mPreviewSurface;
|
sp<ISurface> mPreviewSurface;
|
||||||
sp<IMediaPlayerClient> mListener;
|
sp<IMediaRecorderClient> mListener;
|
||||||
sp<MediaWriter> mWriter;
|
sp<MediaWriter> mWriter;
|
||||||
sp<AudioSource> mAudioSourceNode;
|
sp<AudioSource> mAudioSourceNode;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user