Loading include/media/IMediaRecorder.h +2 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ class Surface; class ICamera; class ICameraRecordingProxy; class IMediaRecorderClient; class IGraphicBufferConsumer; class IGraphicBufferProducer; class IMediaRecorder: public IInterface Loading Loading @@ -55,6 +56,7 @@ public: virtual status_t init() = 0; virtual status_t close() = 0; virtual status_t release() = 0; virtual status_t usePersistentSurface(const sp<IGraphicBufferConsumer>& surface) = 0; virtual sp<IGraphicBufferProducer> querySurfaceMediaSource() = 0; }; Loading include/media/MediaRecorderBase.h +2 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ namespace android { class ICameraRecordingProxy; class Surface; class IGraphicBufferConsumer; class IGraphicBufferProducer; struct MediaRecorderBase { Loading Loading @@ -56,6 +57,7 @@ struct MediaRecorderBase { virtual status_t reset() = 0; virtual status_t getMaxAmplitude(int *max) = 0; virtual status_t dump(int fd, const Vector<String16>& args) const = 0; virtual status_t usePersistentSurface(const sp<IGraphicBufferConsumer>& surface) = 0; virtual sp<IGraphicBufferProducer> querySurfaceMediaSource() const = 0; Loading include/media/mediarecorder.h +2 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ class IMediaRecorder; class ICamera; class ICameraRecordingProxy; class IGraphicBufferProducer; struct PersistentSurface; class Surface; typedef void (*media_completion_f)(status_t status, void *cookie); Loading Loading @@ -236,6 +237,7 @@ public: status_t close(); status_t release(); void notify(int msg, int ext1, int ext2); status_t usePersistentSurface(const sp<PersistentSurface>& surface); sp<IGraphicBufferProducer> querySurfaceMediaSourceFromMediaServer(); private: Loading include/media/stagefright/MediaCodecSource.h +4 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ struct ALooper; class AMessage; struct AReplyToken; class IGraphicBufferProducer; class IGraphicBufferConsumer; class MediaCodec; class MetaData; Loading @@ -41,6 +42,7 @@ struct MediaCodecSource : public MediaSource, const sp<ALooper> &looper, const sp<AMessage> &format, const sp<MediaSource> &source, const sp<IGraphicBufferConsumer> &consumer = NULL, uint32_t flags = 0); bool isVideo() const { return mIsVideo; } Loading Loading @@ -79,6 +81,7 @@ private: const sp<ALooper> &looper, const sp<AMessage> &outputFormat, const sp<MediaSource> &source, const sp<IGraphicBufferConsumer> &consumer, uint32_t flags = 0); status_t onStart(MetaData *params); Loading Loading @@ -107,6 +110,7 @@ private: bool mDoMoreWorkPending; sp<AMessage> mEncoderActivityNotify; sp<IGraphicBufferProducer> mGraphicBufferProducer; sp<IGraphicBufferConsumer> mGraphicBufferConsumer; List<MediaBuffer *> mInputBufferQueue; List<size_t> mAvailEncoderInputIndices; List<int64_t> mDecodingTimeQueue; // decoding time (us) for video Loading media/libmedia/IMediaRecorder.cpp +19 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ enum { RELEASE = IBinder::FIRST_CALL_TRANSACTION, INIT, CLOSE, USE_PERSISTENT_SURFACE, QUERY_SURFACE_MEDIASOURCE, RESET, STOP, Loading Loading @@ -75,6 +76,16 @@ public: return reply.readInt32(); } status_t usePersistentSurface(const sp<IGraphicBufferConsumer>& surface) { ALOGV("usePersistentSurface(%p)", surface.get()); Parcel data, reply; data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); data.writeStrongBinder(IInterface::asBinder(surface)); remote()->transact(USE_PERSISTENT_SURFACE, data, &reply); return reply.readInt32(); } sp<IGraphicBufferProducer> querySurfaceMediaSource() { ALOGV("Query SurfaceMediaSource"); Loading Loading @@ -442,6 +453,14 @@ status_t BnMediaRecorder::onTransact( reply->writeInt32(setCamera(camera, proxy)); return NO_ERROR; } break; case USE_PERSISTENT_SURFACE: { ALOGV("USE_PERSISTENT_SURFACE"); CHECK_INTERFACE(IMediaRecorder, data, reply); sp<IGraphicBufferConsumer> surface = interface_cast<IGraphicBufferConsumer>( data.readStrongBinder()); reply->writeInt32(usePersistentSurface(surface)); return NO_ERROR; } break; case QUERY_SURFACE_MEDIASOURCE: { ALOGV("QUERY_SURFACE_MEDIASOURCE"); CHECK_INTERFACE(IMediaRecorder, data, reply); Loading Loading
include/media/IMediaRecorder.h +2 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ class Surface; class ICamera; class ICameraRecordingProxy; class IMediaRecorderClient; class IGraphicBufferConsumer; class IGraphicBufferProducer; class IMediaRecorder: public IInterface Loading Loading @@ -55,6 +56,7 @@ public: virtual status_t init() = 0; virtual status_t close() = 0; virtual status_t release() = 0; virtual status_t usePersistentSurface(const sp<IGraphicBufferConsumer>& surface) = 0; virtual sp<IGraphicBufferProducer> querySurfaceMediaSource() = 0; }; Loading
include/media/MediaRecorderBase.h +2 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ namespace android { class ICameraRecordingProxy; class Surface; class IGraphicBufferConsumer; class IGraphicBufferProducer; struct MediaRecorderBase { Loading Loading @@ -56,6 +57,7 @@ struct MediaRecorderBase { virtual status_t reset() = 0; virtual status_t getMaxAmplitude(int *max) = 0; virtual status_t dump(int fd, const Vector<String16>& args) const = 0; virtual status_t usePersistentSurface(const sp<IGraphicBufferConsumer>& surface) = 0; virtual sp<IGraphicBufferProducer> querySurfaceMediaSource() const = 0; Loading
include/media/mediarecorder.h +2 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ class IMediaRecorder; class ICamera; class ICameraRecordingProxy; class IGraphicBufferProducer; struct PersistentSurface; class Surface; typedef void (*media_completion_f)(status_t status, void *cookie); Loading Loading @@ -236,6 +237,7 @@ public: status_t close(); status_t release(); void notify(int msg, int ext1, int ext2); status_t usePersistentSurface(const sp<PersistentSurface>& surface); sp<IGraphicBufferProducer> querySurfaceMediaSourceFromMediaServer(); private: Loading
include/media/stagefright/MediaCodecSource.h +4 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ struct ALooper; class AMessage; struct AReplyToken; class IGraphicBufferProducer; class IGraphicBufferConsumer; class MediaCodec; class MetaData; Loading @@ -41,6 +42,7 @@ struct MediaCodecSource : public MediaSource, const sp<ALooper> &looper, const sp<AMessage> &format, const sp<MediaSource> &source, const sp<IGraphicBufferConsumer> &consumer = NULL, uint32_t flags = 0); bool isVideo() const { return mIsVideo; } Loading Loading @@ -79,6 +81,7 @@ private: const sp<ALooper> &looper, const sp<AMessage> &outputFormat, const sp<MediaSource> &source, const sp<IGraphicBufferConsumer> &consumer, uint32_t flags = 0); status_t onStart(MetaData *params); Loading Loading @@ -107,6 +110,7 @@ private: bool mDoMoreWorkPending; sp<AMessage> mEncoderActivityNotify; sp<IGraphicBufferProducer> mGraphicBufferProducer; sp<IGraphicBufferConsumer> mGraphicBufferConsumer; List<MediaBuffer *> mInputBufferQueue; List<size_t> mAvailEncoderInputIndices; List<int64_t> mDecodingTimeQueue; // decoding time (us) for video Loading
media/libmedia/IMediaRecorder.cpp +19 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ enum { RELEASE = IBinder::FIRST_CALL_TRANSACTION, INIT, CLOSE, USE_PERSISTENT_SURFACE, QUERY_SURFACE_MEDIASOURCE, RESET, STOP, Loading Loading @@ -75,6 +76,16 @@ public: return reply.readInt32(); } status_t usePersistentSurface(const sp<IGraphicBufferConsumer>& surface) { ALOGV("usePersistentSurface(%p)", surface.get()); Parcel data, reply; data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); data.writeStrongBinder(IInterface::asBinder(surface)); remote()->transact(USE_PERSISTENT_SURFACE, data, &reply); return reply.readInt32(); } sp<IGraphicBufferProducer> querySurfaceMediaSource() { ALOGV("Query SurfaceMediaSource"); Loading Loading @@ -442,6 +453,14 @@ status_t BnMediaRecorder::onTransact( reply->writeInt32(setCamera(camera, proxy)); return NO_ERROR; } break; case USE_PERSISTENT_SURFACE: { ALOGV("USE_PERSISTENT_SURFACE"); CHECK_INTERFACE(IMediaRecorder, data, reply); sp<IGraphicBufferConsumer> surface = interface_cast<IGraphicBufferConsumer>( data.readStrongBinder()); reply->writeInt32(usePersistentSurface(surface)); return NO_ERROR; } break; case QUERY_SURFACE_MEDIASOURCE: { ALOGV("QUERY_SURFACE_MEDIASOURCE"); CHECK_INTERFACE(IMediaRecorder, data, reply); Loading