diff options
author | Susmitha Gummalla <vgummall@codeaurora.org> | 2014-04-29 12:18:30 -0700 |
---|---|---|
committer | Linux Build Service Account <lnxbuild@localhost> | 2015-10-06 03:24:03 -0600 |
commit | c46f5e16c733959530632fdeb7b33b015595160b (patch) | |
tree | a063e71a32c2035f1732cb445c9edc4126965f1c | |
parent | 02d7869783899e432b2592d76a4d5c69cd597b5a (diff) | |
download | frameworks_av-c46f5e16c733959530632fdeb7b33b015595160b.zip frameworks_av-c46f5e16c733959530632fdeb7b33b015595160b.tar.gz frameworks_av-c46f5e16c733959530632fdeb7b33b015595160b.tar.bz2 |
Camera: Add support for preview frame fd
-Add support for receiving dataCallback with fd/buffer as frame buffer
CRs-fixed: 654901
Change-Id: I5c16e560f1e209a6ab4afa4f3437602b02992b9b
-rw-r--r-- | camera/ICameraClient.cpp | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/camera/ICameraClient.cpp b/camera/ICameraClient.cpp index 179a341..4f43796 100644 --- a/camera/ICameraClient.cpp +++ b/camera/ICameraClient.cpp @@ -46,7 +46,12 @@ public: data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor()); data.writeInt32(msgType); data.writeInt32(ext1); - data.writeInt32(ext2); + if ((msgType == CAMERA_MSG_PREVIEW_FRAME) && (ext1 == CAMERA_FRAME_DATA_FD)) { + ALOGD("notifyCallback: CAMERA_MSG_PREVIEW_FRAME fd = %d", ext2); + data.writeFileDescriptor(ext2); + } else { + data.writeInt32(ext2); + } remote()->transact(NOTIFY_CALLBACK, data, &reply, IBinder::FLAG_ONEWAY); } @@ -91,8 +96,14 @@ status_t BnCameraClient::onTransact( ALOGV("NOTIFY_CALLBACK"); CHECK_INTERFACE(ICameraClient, data, reply); int32_t msgType = data.readInt32(); - int32_t ext1 = data.readInt32(); - int32_t ext2 = data.readInt32(); + int32_t ext1 = data.readInt32(); + int32_t ext2 = 0; + if ((msgType == CAMERA_MSG_PREVIEW_FRAME) && (ext1 == CAMERA_FRAME_DATA_FD)) { + ext2 = data.readFileDescriptor(); + ALOGD("onTransact: CAMERA_MSG_PREVIEW_FRAME fd = %d", ext2); + } else { + ext2 = data.readInt32(); + } notifyCallback(msgType, ext1, ext2); return NO_ERROR; } break; |