summaryrefslogtreecommitdiffstats
path: root/camera
diff options
context:
space:
mode:
authorSusmitha Gummalla <vgummall@codeaurora.org>2014-04-29 12:18:30 -0700
committerLinux Build Service Account <lnxbuild@localhost>2015-10-06 03:24:03 -0600
commitc46f5e16c733959530632fdeb7b33b015595160b (patch)
treea063e71a32c2035f1732cb445c9edc4126965f1c /camera
parent02d7869783899e432b2592d76a4d5c69cd597b5a (diff)
downloadframeworks_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
Diffstat (limited to 'camera')
-rw-r--r--camera/ICameraClient.cpp17
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;