cameraserver: Fix HIDL vs AIDL CameraBlobId discrepancy; Move HIDL into seperate source files.
- Have cameraserver fix the discrepancy between HIDL and AIDL CameraBlobId enum backing type.
- Move HIDL specific code into seperate source files (preparation for b/219020552).
Bug: 219020552
Bug: 229688810
Test: build; use GCA (basic validity)
Test: atest DngCreatorTest.java#testRaw16JpegConsistency (both HIDL and AIDL GCH)
Change-Id: I317c434d22e5e93e7e4cf5ab3aebc4efc93d2d46
Signed-off-by: Jayant Chowdhary <jchowdhary@google.com>
diff --git a/services/camera/libcameraservice/api2/HeicCompositeStream.cpp b/services/camera/libcameraservice/api2/HeicCompositeStream.cpp
index 5da77d6..54cc27a 100644
--- a/services/camera/libcameraservice/api2/HeicCompositeStream.cpp
+++ b/services/camera/libcameraservice/api2/HeicCompositeStream.cpp
@@ -23,7 +23,8 @@
#include <pthread.h>
#include <sys/syscall.h>
-#include <android/hardware/camera/device/3.5/types.h>
+#include <aidl/android/hardware/camera/device/CameraBlob.h>
+#include <aidl/android/hardware/camera/device/CameraBlobId.h>
#include <libyuv.h>
#include <gui/Surface.h>
#include <utils/Log.h>
@@ -41,8 +42,8 @@
#include "HeicEncoderInfoManager.h"
#include "HeicCompositeStream.h"
-using android::hardware::camera::device::V3_5::CameraBlob;
-using android::hardware::camera::device::V3_5::CameraBlobId;
+using aidl::android::hardware::camera::device::CameraBlob;
+using aidl::android::hardware::camera::device::CameraBlobId;
namespace android {
namespace camera3 {
@@ -1161,10 +1162,10 @@
// Fill in HEIC header
uint8_t *header = static_cast<uint8_t*>(dstBuffer) + mMaxHeicBufferSize - sizeof(CameraBlob);
- struct CameraBlob *blobHeader = (struct CameraBlob *)header;
+ CameraBlob *blobHeader = (CameraBlob *)header;
// Must be in sync with CAMERA3_HEIC_BLOB_ID in android_media_Utils.cpp
blobHeader->blobId = static_cast<CameraBlobId>(0x00FE);
- blobHeader->blobSize = fSize;
+ blobHeader->blobSizeBytes = fSize;
res = native_window_set_buffers_timestamp(mOutputSurface.get(), inputFrame.timestamp);
if (res != OK) {
@@ -1426,15 +1427,15 @@
size_t expectedSize = 0;
// First check for EXIF transport header at the end of the buffer
- const uint8_t *header = appSegmentBuffer + (maxSize - sizeof(struct CameraBlob));
- const struct CameraBlob *blob = (const struct CameraBlob*)(header);
+ const uint8_t *header = appSegmentBuffer + (maxSize - sizeof(CameraBlob));
+ const CameraBlob *blob = (const CameraBlob*)(header);
if (blob->blobId != CameraBlobId::JPEG_APP_SEGMENTS) {
- ALOGE("%s: Invalid EXIF blobId %hu", __FUNCTION__, blob->blobId);
+ ALOGE("%s: Invalid EXIF blobId %d", __FUNCTION__, blob->blobId);
return 0;
}
- expectedSize = blob->blobSize;
- if (expectedSize == 0 || expectedSize > maxSize - sizeof(struct CameraBlob)) {
+ expectedSize = blob->blobSizeBytes;
+ if (expectedSize == 0 || expectedSize > maxSize - sizeof(CameraBlob)) {
ALOGE("%s: Invalid blobSize %zu.", __FUNCTION__, expectedSize);
return 0;
}
@@ -1637,7 +1638,7 @@
maxAppsSegment = entry.data.u8[0] < 1 ? 1 :
entry.data.u8[0] > 16 ? 16 : entry.data.u8[0];
}
- return maxAppsSegment * (2 + 0xFFFF) + sizeof(struct CameraBlob);
+ return maxAppsSegment * (2 + 0xFFFF) + sizeof(CameraBlob);
}
void HeicCompositeStream::updateCodecQualityLocked(int32_t quality) {