External: Switch to legacy V4L2 buffer mapping
Required for older kernels like 3.x
Change-Id: I0680320b606727bdb0b22dab1df8c5954d623f10
diff --git a/camera/device/3.4/default/ExternalCameraUtils.cpp b/camera/device/3.4/default/ExternalCameraUtils.cpp
index 124f0bd..212573a 100644
--- a/camera/device/3.4/default/ExternalCameraUtils.cpp
+++ b/camera/device/3.4/default/ExternalCameraUtils.cpp
@@ -40,9 +40,9 @@
V4L2Frame::V4L2Frame(
uint32_t w, uint32_t h, uint32_t fourcc,
- int bufIdx, int fd, uint32_t dataSize) :
+ int bufIdx, int fd, uint32_t dataSize, uint64_t offset) :
mWidth(w), mHeight(h), mFourcc(fourcc),
- mBufferIndex(bufIdx), mFd(fd), mDataSize(dataSize) {}
+ mBufferIndex(bufIdx), mFd(fd), mDataSize(dataSize), mOffset(offset) {}
int V4L2Frame::map(uint8_t** data, size_t* dataSize) {
if (data == nullptr || dataSize == nullptr) {
@@ -53,7 +53,7 @@
std::lock_guard<std::mutex> lk(mLock);
if (!mMapped) {
- void* addr = mmap(NULL, mDataSize, PROT_READ, MAP_SHARED, mFd, 0);
+ void* addr = mmap(NULL, mDataSize, PROT_READ, MAP_SHARED, mFd, mOffset);
if (addr == MAP_FAILED) {
ALOGE("%s: V4L2 buffer map failed: %s", __FUNCTION__, strerror(errno));
return -EINVAL;