Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8e7ad521 authored by Susmitha Gummalla's avatar Susmitha Gummalla Committed by Linux Build Service Account
Browse files

Camera: Add support for preview frame fd

-Add support for receiving dataCallback with fd/buffer as frame buffer

CRs-fixed: 654901
Change-Id: I5c16e560f1e209a6ab4afa4f3437602b02992b9b
parent 99915330
Loading
Loading
Loading
Loading
+14 −3
Original line number Original line Diff line number Diff line
@@ -50,7 +50,12 @@ public:
        data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor());
        data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor());
        data.writeInt32(msgType);
        data.writeInt32(msgType);
        data.writeInt32(ext1);
        data.writeInt32(ext1);
        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);
            data.writeInt32(ext2);
        }
        remote()->transact(NOTIFY_CALLBACK, data, &reply, IBinder::FLAG_ONEWAY);
        remote()->transact(NOTIFY_CALLBACK, data, &reply, IBinder::FLAG_ONEWAY);
    }
    }


@@ -106,7 +111,13 @@ status_t BnCameraClient::onTransact(
            CHECK_INTERFACE(ICameraClient, data, reply);
            CHECK_INTERFACE(ICameraClient, data, reply);
            int32_t msgType = data.readInt32();
            int32_t msgType = data.readInt32();
            int32_t ext1    = data.readInt32();
            int32_t ext1    = data.readInt32();
            int32_t ext2 = 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);
            notifyCallback(msgType, ext1, ext2);
            return NO_ERROR;
            return NO_ERROR;
        } break;
        } break;