Loading include/ui/Camera.h +2 −0 Original line number Diff line number Diff line Loading @@ -143,6 +143,8 @@ public: virtual void errorCallback(status_t error); virtual void autoFocusCallback(bool focused); virtual void recordingCallback(const sp<IMemory>& frame); virtual void notifyCallback(int32_t msgType, int32_t ext, int32_t ext2); virtual void dataCallback(int32_t msgType, const sp<IMemory>& frame); sp<ICamera> remote(); Loading include/ui/ICameraClient.h +19 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,23 @@ class ICameraClient: public IInterface public: DECLARE_META_INTERFACE(CameraClient); // msgType in notifyCallback function enum { ERROR, SHUTTER, FOCUSED, ZOOM } notify_callback_message_type; // msgType in dataCallback function enum { PREVIEW, RECORD, POSTVIEW, RAW, COMPRESSED } data_callback_message_type; virtual void shutterCallback() = 0; virtual void rawCallback(const sp<IMemory>& picture) = 0; virtual void jpegCallback(const sp<IMemory>& picture) = 0; Loading @@ -36,6 +53,8 @@ public: virtual void errorCallback(status_t error) = 0; virtual void autoFocusCallback(bool focused) = 0; virtual void recordingCallback(const sp<IMemory>& frame) = 0; virtual void notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2) = 0; virtual void dataCallback(int32_t msgType, const sp<IMemory>& data) = 0; }; Loading libs/ui/Camera.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -397,6 +397,18 @@ void Camera::errorCallback(status_t error) } } // callback from camera service void Camera::notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2) { LOGV("notifyCallback"); } // callback from camera service when image is ready void Camera::dataCallback(int32_t msgType, const sp<IMemory>& frame) { LOGV("dataCallback"); } void Camera::binderDied(const wp<IBinder>& who) { LOGW("ICamera died"); if (mErrorCallback) { Loading libs/ui/ICameraClient.cpp +43 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,8 @@ enum { ERROR_CALLBACK, AUTOFOCUS_CALLBACK, RECORDING_CALLBACK, NOTIFY_CALLBACK, DATA_CALLBACK, }; class BpCameraClient: public BpInterface<ICameraClient> Loading Loading @@ -110,6 +112,30 @@ public: data.writeInt32(focused); remote()->transact(AUTOFOCUS_CALLBACK, data, &reply, IBinder::FLAG_ONEWAY); } // generic callback from camera service to app void notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2) { LOGV("notifyCallback"); Parcel data, reply; data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor()); data.writeInt32(msgType); data.writeInt32(ext1); data.writeInt32(ext2); remote()->transact(NOTIFY_CALLBACK, data, &reply, IBinder::FLAG_ONEWAY); } // generic data callback from camera service to app with image data void dataCallback(int32_t msgType, const sp<IMemory>& imageData) { LOGV("dataCallback"); Parcel data, reply; data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor()); data.writeInt32(msgType); data.writeStrongBinder(imageData->asBinder()); remote()->transact(DATA_CALLBACK, data, &reply, IBinder::FLAG_ONEWAY); } }; IMPLEMENT_META_INTERFACE(CameraClient, "android.hardware.ICameraClient"); Loading Loading @@ -174,6 +200,23 @@ status_t BnCameraClient::onTransact( autoFocusCallback(focused); return NO_ERROR; } break; case NOTIFY_CALLBACK: { LOGV("NOTIFY_CALLBACK"); CHECK_INTERFACE(ICameraClient, data, reply); int32_t msgType = data.readInt32(); int32_t ext1 = data.readInt32(); int32_t ext2 = data.readInt32(); notifyCallback(msgType, ext1, ext2); return NO_ERROR; } break; case DATA_CALLBACK: { LOGV("RAW_CALLBACK"); CHECK_INTERFACE(ICameraClient, data, reply); int32_t msgType = data.readInt32(); sp<IMemory> imageData = interface_cast<IMemory>(data.readStrongBinder()); dataCallback(msgType, imageData); return NO_ERROR; } break; default: return BBinder::onTransact(code, data, reply, flags); } Loading Loading
include/ui/Camera.h +2 −0 Original line number Diff line number Diff line Loading @@ -143,6 +143,8 @@ public: virtual void errorCallback(status_t error); virtual void autoFocusCallback(bool focused); virtual void recordingCallback(const sp<IMemory>& frame); virtual void notifyCallback(int32_t msgType, int32_t ext, int32_t ext2); virtual void dataCallback(int32_t msgType, const sp<IMemory>& frame); sp<ICamera> remote(); Loading
include/ui/ICameraClient.h +19 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,23 @@ class ICameraClient: public IInterface public: DECLARE_META_INTERFACE(CameraClient); // msgType in notifyCallback function enum { ERROR, SHUTTER, FOCUSED, ZOOM } notify_callback_message_type; // msgType in dataCallback function enum { PREVIEW, RECORD, POSTVIEW, RAW, COMPRESSED } data_callback_message_type; virtual void shutterCallback() = 0; virtual void rawCallback(const sp<IMemory>& picture) = 0; virtual void jpegCallback(const sp<IMemory>& picture) = 0; Loading @@ -36,6 +53,8 @@ public: virtual void errorCallback(status_t error) = 0; virtual void autoFocusCallback(bool focused) = 0; virtual void recordingCallback(const sp<IMemory>& frame) = 0; virtual void notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2) = 0; virtual void dataCallback(int32_t msgType, const sp<IMemory>& data) = 0; }; Loading
libs/ui/Camera.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -397,6 +397,18 @@ void Camera::errorCallback(status_t error) } } // callback from camera service void Camera::notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2) { LOGV("notifyCallback"); } // callback from camera service when image is ready void Camera::dataCallback(int32_t msgType, const sp<IMemory>& frame) { LOGV("dataCallback"); } void Camera::binderDied(const wp<IBinder>& who) { LOGW("ICamera died"); if (mErrorCallback) { Loading
libs/ui/ICameraClient.cpp +43 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,8 @@ enum { ERROR_CALLBACK, AUTOFOCUS_CALLBACK, RECORDING_CALLBACK, NOTIFY_CALLBACK, DATA_CALLBACK, }; class BpCameraClient: public BpInterface<ICameraClient> Loading Loading @@ -110,6 +112,30 @@ public: data.writeInt32(focused); remote()->transact(AUTOFOCUS_CALLBACK, data, &reply, IBinder::FLAG_ONEWAY); } // generic callback from camera service to app void notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2) { LOGV("notifyCallback"); Parcel data, reply; data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor()); data.writeInt32(msgType); data.writeInt32(ext1); data.writeInt32(ext2); remote()->transact(NOTIFY_CALLBACK, data, &reply, IBinder::FLAG_ONEWAY); } // generic data callback from camera service to app with image data void dataCallback(int32_t msgType, const sp<IMemory>& imageData) { LOGV("dataCallback"); Parcel data, reply; data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor()); data.writeInt32(msgType); data.writeStrongBinder(imageData->asBinder()); remote()->transact(DATA_CALLBACK, data, &reply, IBinder::FLAG_ONEWAY); } }; IMPLEMENT_META_INTERFACE(CameraClient, "android.hardware.ICameraClient"); Loading Loading @@ -174,6 +200,23 @@ status_t BnCameraClient::onTransact( autoFocusCallback(focused); return NO_ERROR; } break; case NOTIFY_CALLBACK: { LOGV("NOTIFY_CALLBACK"); CHECK_INTERFACE(ICameraClient, data, reply); int32_t msgType = data.readInt32(); int32_t ext1 = data.readInt32(); int32_t ext2 = data.readInt32(); notifyCallback(msgType, ext1, ext2); return NO_ERROR; } break; case DATA_CALLBACK: { LOGV("RAW_CALLBACK"); CHECK_INTERFACE(ICameraClient, data, reply); int32_t msgType = data.readInt32(); sp<IMemory> imageData = interface_cast<IMemory>(data.readStrongBinder()); dataCallback(msgType, imageData); return NO_ERROR; } break; default: return BBinder::onTransact(code, data, reply, flags); } Loading