Merge "RKPv2 spec clarifications"
diff --git a/audio/aidl/Android.bp b/audio/aidl/Android.bp
index 56ac510..08d660c 100644
--- a/audio/aidl/Android.bp
+++ b/audio/aidl/Android.bp
@@ -243,6 +243,7 @@
"android/hardware/audio/effect/Parameter.aidl",
"android/hardware/audio/effect/PresetReverb.aidl",
"android/hardware/audio/effect/Processing.aidl",
+ "android/hardware/audio/effect/Range.aidl",
"android/hardware/audio/effect/State.aidl",
"android/hardware/audio/effect/VendorExtension.aidl",
"android/hardware/audio/effect/Virtualizer.aidl",
diff --git a/audio/aidl/aidl_api/android.hardware.audio.effect/current/android/hardware/audio/effect/Range.aidl b/audio/aidl/aidl_api/android.hardware.audio.effect/current/android/hardware/audio/effect/Range.aidl
new file mode 100644
index 0000000..531d3a1
--- /dev/null
+++ b/audio/aidl/aidl_api/android.hardware.audio.effect/current/android/hardware/audio/effect/Range.aidl
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+// the interface (from the latest frozen version), the build system will
+// prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.audio.effect;
+@VintfStability
+parcelable Range {
+ int tag;
+ android.hardware.audio.effect.Range.Types types;
+ @VintfStability
+ parcelable Int {
+ int min;
+ int max;
+ }
+ @VintfStability
+ parcelable Float {
+ float min;
+ float max;
+ }
+ @VintfStability
+ parcelable Long {
+ long min;
+ long max;
+ }
+ @VintfStability
+ parcelable Byte {
+ byte min;
+ byte max;
+ }
+ @VintfStability
+ union Types {
+ android.hardware.audio.effect.Range.Int rangeInt;
+ android.hardware.audio.effect.Range.Float rangeFloat;
+ android.hardware.audio.effect.Range.Long rangeLong;
+ android.hardware.audio.effect.Range.Byte rangeByte;
+ }
+}
diff --git a/audio/aidl/android/hardware/audio/effect/Range.aidl b/audio/aidl/android/hardware/audio/effect/Range.aidl
new file mode 100644
index 0000000..c052502
--- /dev/null
+++ b/audio/aidl/android/hardware/audio/effect/Range.aidl
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.audio.effect;
+
+/**
+ * Define the range (min and max) of a certain field, identified by tag.
+ * Can be used by effect capabilities to define supported value ranges.
+ */
+@VintfStability
+parcelable Range {
+ /**
+ * The union tag name which the range is defined for.
+ * For example: if used in AutomaticGainControlV1.Capability, value of Range.tag could be
+ * targetLevelDbFs or compressionGainDb.
+ */
+ int tag;
+
+ @VintfStability
+ parcelable Int {
+ int min;
+ int max;
+ }
+
+ @VintfStability
+ parcelable Float {
+ float min;
+ float max;
+ }
+
+ @VintfStability
+ parcelable Long {
+ long min;
+ long max;
+ }
+
+ @VintfStability
+ parcelable Byte {
+ byte min;
+ byte max;
+ }
+
+ @VintfStability
+ union Types {
+ Int rangeInt;
+ Float rangeFloat;
+ Long rangeLong;
+ Byte rangeByte;
+ }
+
+ Types types;
+}
diff --git a/camera/provider/aidl/vts/VtsAidlHalCameraProvider_TargetTest.cpp b/camera/provider/aidl/vts/VtsAidlHalCameraProvider_TargetTest.cpp
index 70ab7a0..2c98db8 100644
--- a/camera/provider/aidl/vts/VtsAidlHalCameraProvider_TargetTest.cpp
+++ b/camera/provider/aidl/vts/VtsAidlHalCameraProvider_TargetTest.cpp
@@ -1846,7 +1846,6 @@
// Generate and verify 10-bit dynamic range request
TEST_P(CameraAidlTest, process10BitDynamicRangeRequest) {
std::vector<std::string> cameraDeviceNames = getCameraDeviceNames(mProvider);
- int64_t bufferId = 1;
CameraMetadata settings;
for (const auto& name : cameraDeviceNames) {
@@ -1927,12 +1926,12 @@
// Stream as long as needed to fill the Hal inflight queue
std::vector<CaptureRequest> requests(halStreams[0].maxBuffers);
- for (int32_t frameNumber = 0; frameNumber < requests.size(); frameNumber++) {
+ for (int32_t requestId = 0; requestId < requests.size(); requestId++) {
std::shared_ptr<InFlightRequest> inflightReq = std::make_shared<InFlightRequest>(
static_cast<ssize_t>(halStreams.size()), false, supportsPartialResults,
partialResultCount, std::unordered_set<std::string>(), resultQueue);
- CaptureRequest& request = requests[frameNumber];
+ CaptureRequest& request = requests[requestId];
std::vector<StreamBuffer>& outputBuffers = request.outputBuffers;
outputBuffers.resize(halStreams.size());
@@ -1941,6 +1940,7 @@
std::vector<buffer_handle_t> graphicBuffers;
graphicBuffers.reserve(halStreams.size());
+ auto bufferId = requestId + 1; // Buffer id value 0 is not valid
for (const auto& halStream : halStreams) {
buffer_handle_t buffer_handle;
if (useHalBufManager) {
@@ -1959,14 +1959,13 @@
outputBuffers[k] = {halStream.id, bufferId,
android::makeToAidl(buffer_handle), BufferStatus::OK, NativeHandle(),
NativeHandle()};
- bufferId++;
}
k++;
}
request.inputBuffer = {
-1, 0, NativeHandle(), BufferStatus::ERROR, NativeHandle(), NativeHandle()};
- request.frameNumber = frameNumber;
+ request.frameNumber = bufferId;
request.fmqSettingsSize = 0;
request.settings = settings;
request.inputWidth = 0;
@@ -1974,7 +1973,7 @@
{
std::unique_lock<std::mutex> l(mLock);
- mInflightMap[frameNumber] = inflightReq;
+ mInflightMap[bufferId] = inflightReq;
}
}
@@ -1990,7 +1989,10 @@
std::vector<int32_t> {halStreams[0].id});
ASSERT_TRUE(returnStatus.isOk());
- for (int32_t frameNumber = 0; frameNumber < requests.size(); frameNumber++) {
+ // We are keeping frame numbers and buffer ids consistent. Buffer id value of 0
+ // is used to indicate a buffer that is not present/available so buffer ids as well
+ // as frame numbers begin with 1.
+ for (int32_t frameNumber = 1; frameNumber <= requests.size(); frameNumber++) {
const auto& inflightReq = mInflightMap[frameNumber];
std::unique_lock<std::mutex> l(mLock);
while (!inflightReq->errorCodeValid &&
diff --git a/camera/provider/aidl/vts/device_cb.cpp b/camera/provider/aidl/vts/device_cb.cpp
index 4698b4a..3ec96a1 100644
--- a/camera/provider/aidl/vts/device_cb.cpp
+++ b/camera/provider/aidl/vts/device_cb.cpp
@@ -429,10 +429,11 @@
CameraAidlTest::InFlightRequest::StreamBufferAndTimestamp streamBufferAndTimestamp;
auto outstandingBuffers = mUseHalBufManager ? mOutstandingBufferIds :
request->mOutstandingBufferIds;
+ auto bufferId = mUseHalBufManager ? buffer.bufferId : results.frameNumber;
auto outputBuffer = outstandingBuffers.empty() ? ::android::makeFromAidl(buffer.buffer) :
- outstandingBuffers[buffer.streamId][buffer.bufferId];
+ outstandingBuffers[buffer.streamId][bufferId];
streamBufferAndTimestamp.buffer = {buffer.streamId,
- buffer.bufferId,
+ bufferId,
outputBuffer,
buffer.status,
::android::makeFromAidl(buffer.acquireFence),
diff --git a/graphics/mapper/stable-c/implutils/impltests.cpp b/graphics/mapper/stable-c/implutils/impltests.cpp
index f12b069..01a1db9 100644
--- a/graphics/mapper/stable-c/implutils/impltests.cpp
+++ b/graphics/mapper/stable-c/implutils/impltests.cpp
@@ -359,35 +359,35 @@
auto mpbuf = encode<StandardMetadataType::BUFFER_ID>(42);
hidl_vec<uint8_t> g4buf;
ASSERT_EQ(NO_ERROR, gralloc4::encodeBufferId(42, &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
}
TEST(MetadataGralloc4Interop, Name) {
auto mpbuf = encode<StandardMetadataType::NAME>("Hello, Interop!");
hidl_vec<uint8_t> g4buf;
ASSERT_EQ(NO_ERROR, gralloc4::encodeName("Hello, Interop!", &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
}
TEST(MetadataGralloc4Interop, Width) {
auto mpbuf = encode<StandardMetadataType::WIDTH>(128);
hidl_vec<uint8_t> g4buf;
ASSERT_EQ(NO_ERROR, gralloc4::encodeWidth(128, &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
}
TEST(MetadataGralloc4Interop, Height) {
auto mpbuf = encode<StandardMetadataType::HEIGHT>(64);
hidl_vec<uint8_t> g4buf;
ASSERT_EQ(NO_ERROR, gralloc4::encodeHeight(64, &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
}
TEST(MetadataGralloc4Interop, LayerCount) {
auto mpbuf = encode<StandardMetadataType::LAYER_COUNT>(3);
hidl_vec<uint8_t> g4buf;
ASSERT_EQ(NO_ERROR, gralloc4::encodeLayerCount(3, &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
}
TEST(MetadataGralloc4Interop, PixelFormatRequested) {
@@ -395,21 +395,21 @@
hidl_vec<uint8_t> g4buf;
ASSERT_EQ(NO_ERROR, gralloc4::encodePixelFormatRequested(
hardware::graphics::common::V1_2::PixelFormat::RGBX_8888, &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
}
TEST(MetadataGralloc4Interop, PixelFormatFourcc) {
auto mpbuf = encode<StandardMetadataType::PIXEL_FORMAT_FOURCC>(DRM_FORMAT_ABGR8888);
hidl_vec<uint8_t> g4buf;
ASSERT_EQ(NO_ERROR, gralloc4::encodePixelFormatFourCC(DRM_FORMAT_ABGR8888, &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
}
TEST(MetadataGralloc4Interop, PixelFormatModifier) {
auto mpbuf = encode<StandardMetadataType::PIXEL_FORMAT_MODIFIER>(123456);
hidl_vec<uint8_t> g4buf;
ASSERT_EQ(NO_ERROR, gralloc4::encodePixelFormatModifier(123456, &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
}
TEST(MetadataGralloc4Interop, Usage) {
@@ -420,21 +420,21 @@
static_cast<uint64_t>(
hardware::graphics::common::V1_2::BufferUsage::COMPOSER_OVERLAY),
&g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
}
TEST(MetadataGralloc4Interop, AllocationSize) {
auto mpbuf = encode<StandardMetadataType::ALLOCATION_SIZE>(10200);
hidl_vec<uint8_t> g4buf;
ASSERT_EQ(NO_ERROR, gralloc4::encodeAllocationSize(10200, &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
}
TEST(MetadataGralloc4Interop, ProtectedContent) {
auto mpbuf = encode<StandardMetadataType::PROTECTED_CONTENT>(1);
hidl_vec<uint8_t> g4buf;
ASSERT_EQ(NO_ERROR, gralloc4::encodeProtectedContent(1, &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
}
TEST(MetadataGralloc4Interop, Compression) {
@@ -443,14 +443,14 @@
hidl_vec<uint8_t> g4buf;
ASSERT_EQ(NO_ERROR,
gralloc4::encodeCompression(gralloc4::Compression_DisplayStreamCompression, &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
}
TEST(MetadataGralloc4Interop, Interlaced) {
auto mpbuf = encode<StandardMetadataType::INTERLACED>(gralloc4::Interlaced_TopBottom);
hidl_vec<uint8_t> g4buf;
ASSERT_EQ(NO_ERROR, gralloc4::encodeInterlaced(gralloc4::Interlaced_TopBottom, &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
}
TEST(MetadataGralloc4Interop, ChromeSitting) {
@@ -459,14 +459,14 @@
hidl_vec<uint8_t> g4buf;
ASSERT_EQ(NO_ERROR,
gralloc4::encodeChromaSiting(gralloc4::ChromaSiting_SitedInterstitial, &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
}
TEST(MetadataGralloc4Interop, PlaneLayouts) {
auto mpbuf = encode<StandardMetadataType::PLANE_LAYOUTS>(fakePlaneLayouts());
hidl_vec<uint8_t> g4buf;
ASSERT_EQ(NO_ERROR, gralloc4::encodePlaneLayouts(fakePlaneLayouts(), &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
}
TEST(MetadataGralloc4Interop, Crop) {
@@ -474,21 +474,21 @@
auto mpbuf = encode<StandardMetadataType::CROP>(cropRects);
hidl_vec<uint8_t> g4buf;
ASSERT_EQ(NO_ERROR, gralloc4::encodeCrop(cropRects, &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
}
TEST(MetadataGralloc4Interop, Dataspace) {
auto mpbuf = encode<StandardMetadataType::DATASPACE>(Dataspace::DISPLAY_P3);
hidl_vec<uint8_t> g4buf;
ASSERT_EQ(NO_ERROR, gralloc4::encodeDataspace(Dataspace::DISPLAY_P3, &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
}
TEST(MetadataGralloc4Interop, BlendMode) {
auto mpbuf = encode<StandardMetadataType::BLEND_MODE>(BlendMode::PREMULTIPLIED);
hidl_vec<uint8_t> g4buf;
ASSERT_EQ(NO_ERROR, gralloc4::encodeBlendMode(BlendMode::PREMULTIPLIED, &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
}
TEST(MetadataGralloc4Interop, Smpte2086) {
@@ -498,7 +498,7 @@
auto mpbuf = encode<StandardMetadataType::SMPTE2086>(hdrdata);
hidl_vec<uint8_t> g4buf;
ASSERT_EQ(NO_ERROR, gralloc4::encodeSmpte2086(hdrdata, &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
}
TEST(MetadataGralloc4Interop, Cta861_3) {
@@ -506,29 +506,29 @@
auto mpbuf = encode<StandardMetadataType::CTA861_3>(hdrdata);
hidl_vec<uint8_t> g4buf;
ASSERT_EQ(NO_ERROR, gralloc4::encodeCta861_3(hdrdata, &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
}
TEST(MetadataGralloc4Interop, Smpte2094_10) {
auto mpbuf = encode<StandardMetadataType::SMPTE2094_10>(std::nullopt);
hidl_vec<uint8_t> g4buf;
ASSERT_EQ(NO_ERROR, gralloc4::encodeSmpte2094_10(std::nullopt, &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
std::vector<uint8_t> hdrdata{1, 2, 3, 4, 5, 6};
mpbuf = encode<StandardMetadataType::SMPTE2094_10>(hdrdata);
ASSERT_EQ(NO_ERROR, gralloc4::encodeSmpte2094_10(hdrdata, &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
}
TEST(MetadataGralloc4Interop, Smpte2094_40) {
auto mpbuf = encode<StandardMetadataType::SMPTE2094_40>(std::nullopt);
hidl_vec<uint8_t> g4buf;
ASSERT_EQ(NO_ERROR, gralloc4::encodeSmpte2094_40(std::nullopt, &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
std::vector<uint8_t> hdrdata{1, 2, 3, 4, 5, 6};
mpbuf = encode<StandardMetadataType::SMPTE2094_40>(hdrdata);
ASSERT_EQ(NO_ERROR, gralloc4::encodeSmpte2094_40(hdrdata, &g4buf));
- EXPECT_EQ(mpbuf, g4buf);
+ EXPECT_EQ(g4buf, mpbuf);
}