diff options
Diffstat (limited to 'media/libmedia/IMediaRecorder.cpp')
-rw-r--r-- | media/libmedia/IMediaRecorder.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/media/libmedia/IMediaRecorder.cpp b/media/libmedia/IMediaRecorder.cpp index 8ca256c..c7a1394 100644 --- a/media/libmedia/IMediaRecorder.cpp +++ b/media/libmedia/IMediaRecorder.cpp @@ -35,6 +35,7 @@ enum { RELEASE = IBinder::FIRST_CALL_TRANSACTION, INIT, CLOSE, + USE_PERSISTENT_SURFACE, QUERY_SURFACE_MEDIASOURCE, RESET, STOP, @@ -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"); @@ -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); |