Loading apex/manifest.json +1 −1 Original line number Diff line number Diff line { "name": "com.android.media", "version": 300802100 "version": 300802200 } apex/manifest_codec.json +1 −1 Original line number Diff line number Diff line { "name": "com.android.media.swcodec", "version": 300802100 "version": 300802200 } camera/ndk/include/camera/NdkCameraMetadataTags.h +29 −13 Original line number Diff line number Diff line Loading @@ -8088,19 +8088,35 @@ typedef enum acamera_metadata_enum_acamera_request_available_capabilities { * <li>ACAMERA_LENS_POSE_REFERENCE</li> * <li>ACAMERA_LENS_DISTORTION</li> * </ul> * <p>The field of view of all non-RAW physical streams must be the same or as close as * possible to that of non-RAW logical streams. If the requested FOV is outside of the * range supported by the physical camera, the physical stream for that physical camera * will use either the maximum or minimum scaler crop region, depending on which one is * closer to the requested FOV. For example, for a logical camera with wide-tele lens * configuration where the wide lens is the default, if the logical camera's crop region * is set to maximum, the physical stream for the tele lens will be configured to its * maximum crop region. On the other hand, if the logical camera has a normal-wide lens * configuration where the normal lens is the default, when the logical camera's crop * region is set to maximum, the FOV of the logical streams will be that of the normal * lens. The FOV of the physical streams for the wide lens will be the same as the * logical stream, by making the crop region smaller than its active array size to * compensate for the smaller focal length.</p> * <p>The field of view of non-RAW physical streams must not be smaller than that of the * non-RAW logical streams, or the maximum field-of-view of the physical camera, * whichever is smaller. The application should check the physical capture result * metadata for how the physical streams are cropped or zoomed. More specifically, given * the physical camera result metadata, the effective horizontal field-of-view of the * physical camera is:</p> * <pre><code>fov = 2 * atan2(cropW * sensorW / (2 * zoomRatio * activeArrayW), focalLength) * </code></pre> * <p>where the equation parameters are the physical camera's crop region width, physical * sensor width, zoom ratio, active array width, and focal length respectively. Typically * the physical stream of active physical camera has the same field-of-view as the * logical streams. However, the same may not be true for physical streams from * non-active physical cameras. For example, if the logical camera has a wide-ultrawide * configuration where the wide lens is the default, when the crop region is set to the * logical camera's active array size, (and the zoom ratio set to 1.0 starting from * Android 11), a physical stream for the ultrawide camera may prefer outputing images * with larger field-of-view than that of the wide camera for better stereo matching * margin or more robust motion tracking. At the same time, the physical non-RAW streams' * field of view must not be smaller than the requested crop region and zoom ratio, as * long as it's within the physical lens' capability. For example, for a logical camera * with wide-tele lens configuration where the wide lens is the default, if the logical * camera's crop region is set to maximum size, and zoom ratio set to 1.0, the physical * stream for the tele lens will be configured to its maximum size crop region (no zoom).</p> * <p><em>Deprecated:</em> Prior to Android 11, the field of view of all non-RAW physical streams * cannot be larger than that of non-RAW logical streams. If the logical camera has a * wide-ultrawide lens configuration where the wide lens is the default, when the logical * camera's crop region is set to maximum size, the FOV of the physical streams for the * ultrawide lens will be the same as the logical stream, by making the crop region * smaller than its active array size to compensate for the smaller focal length.</p> * <p>Even if the underlying physical cameras have different RAW characteristics (such as * size or CFA pattern), a logical camera can still advertise RAW capability. In this * case, when the application configures a RAW stream, the camera device will make sure Loading media/codec2/hidl/1.0/vts/functional/common/media_c2_hidl_test_common.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -92,7 +92,10 @@ void workDone(const std::shared_ptr<android::Codec2Client::Component>& component for (size_t i = 0; i < updates.size(); ++i) { C2Param* param = updates[i].get(); if (param->index() == C2StreamInitDataInfo::output::PARAM_TYPE) { csd = true; C2StreamInitDataInfo::output* csdBuffer = (C2StreamInitDataInfo::output*)(param); size_t csdSize = csdBuffer->flexCount(); if (csdSize > 0) csd = true; } else if ((param->index() == C2StreamSampleRateInfo::output::PARAM_TYPE) || (param->index() == C2StreamChannelCountInfo::output::PARAM_TYPE) || (param->index() == C2StreamPictureSizeInfo::output::PARAM_TYPE)) { Loading media/codec2/hidl/1.0/vts/functional/video/VtsHalMediaC2V1_0TargetVideoDecTest.cpp +35 −21 Original line number Diff line number Diff line Loading @@ -109,6 +109,7 @@ class Codec2VideoDecHidlTestBase : public ::testing::Test { mFramesReceived = 0; mTimestampUs = 0u; mWorkResult = C2_OK; mReorderDepth = -1; mTimestampDevTest = false; mMd5Offset = 0; mMd5Enable = false; Loading Loading @@ -211,18 +212,29 @@ class Codec2VideoDecHidlTestBase : public ::testing::Test { for (std::unique_ptr<C2Work>& work : workItems) { if (!work->worklets.empty()) { // For decoder components current timestamp always exceeds // previous timestamp // previous timestamp if output is in display order typedef std::unique_lock<std::mutex> ULock; mWorkResult |= work->result; bool codecConfig = ((work->worklets.front()->output.flags & C2FrameData::FLAG_CODEC_CONFIG) != 0); if (!codecConfig && !work->worklets.front()->output.buffers.empty()) { if (mReorderDepth < 0) { C2PortReorderBufferDepthTuning::output reorderBufferDepth; mComponent->query({&reorderBufferDepth}, {}, C2_MAY_BLOCK, nullptr); mReorderDepth = reorderBufferDepth.value; if (mReorderDepth > 0) { // TODO: Add validation for reordered output mTimestampDevTest = false; } } if (mTimestampDevTest) { EXPECT_GE((work->worklets.front()->output.ordinal.timestamp.peeku()), mTimestampUs); mTimestampUs = work->worklets.front()->output.ordinal.timestamp.peeku(); ULock l(mQueueLock); if (mTimestampDevTest) { { bool tsHit = false; std::list<uint64_t>::iterator it = mTimestampUslist.begin(); while (it != mTimestampUslist.end()) { Loading @@ -242,6 +254,7 @@ class Codec2VideoDecHidlTestBase : public ::testing::Test { } } } } if (mMd5Enable) { compareMd5Chksm(work); } Loading Loading @@ -281,6 +294,7 @@ class Codec2VideoDecHidlTestBase : public ::testing::Test { standardComp mCompName; int32_t mWorkResult; int32_t mReorderDepth; uint32_t mFramesReceived; C2BlockPool::local_id_t mBlockPoolId; std::shared_ptr<C2BlockPool> mLinearPool; Loading Loading
apex/manifest.json +1 −1 Original line number Diff line number Diff line { "name": "com.android.media", "version": 300802100 "version": 300802200 }
apex/manifest_codec.json +1 −1 Original line number Diff line number Diff line { "name": "com.android.media.swcodec", "version": 300802100 "version": 300802200 }
camera/ndk/include/camera/NdkCameraMetadataTags.h +29 −13 Original line number Diff line number Diff line Loading @@ -8088,19 +8088,35 @@ typedef enum acamera_metadata_enum_acamera_request_available_capabilities { * <li>ACAMERA_LENS_POSE_REFERENCE</li> * <li>ACAMERA_LENS_DISTORTION</li> * </ul> * <p>The field of view of all non-RAW physical streams must be the same or as close as * possible to that of non-RAW logical streams. If the requested FOV is outside of the * range supported by the physical camera, the physical stream for that physical camera * will use either the maximum or minimum scaler crop region, depending on which one is * closer to the requested FOV. For example, for a logical camera with wide-tele lens * configuration where the wide lens is the default, if the logical camera's crop region * is set to maximum, the physical stream for the tele lens will be configured to its * maximum crop region. On the other hand, if the logical camera has a normal-wide lens * configuration where the normal lens is the default, when the logical camera's crop * region is set to maximum, the FOV of the logical streams will be that of the normal * lens. The FOV of the physical streams for the wide lens will be the same as the * logical stream, by making the crop region smaller than its active array size to * compensate for the smaller focal length.</p> * <p>The field of view of non-RAW physical streams must not be smaller than that of the * non-RAW logical streams, or the maximum field-of-view of the physical camera, * whichever is smaller. The application should check the physical capture result * metadata for how the physical streams are cropped or zoomed. More specifically, given * the physical camera result metadata, the effective horizontal field-of-view of the * physical camera is:</p> * <pre><code>fov = 2 * atan2(cropW * sensorW / (2 * zoomRatio * activeArrayW), focalLength) * </code></pre> * <p>where the equation parameters are the physical camera's crop region width, physical * sensor width, zoom ratio, active array width, and focal length respectively. Typically * the physical stream of active physical camera has the same field-of-view as the * logical streams. However, the same may not be true for physical streams from * non-active physical cameras. For example, if the logical camera has a wide-ultrawide * configuration where the wide lens is the default, when the crop region is set to the * logical camera's active array size, (and the zoom ratio set to 1.0 starting from * Android 11), a physical stream for the ultrawide camera may prefer outputing images * with larger field-of-view than that of the wide camera for better stereo matching * margin or more robust motion tracking. At the same time, the physical non-RAW streams' * field of view must not be smaller than the requested crop region and zoom ratio, as * long as it's within the physical lens' capability. For example, for a logical camera * with wide-tele lens configuration where the wide lens is the default, if the logical * camera's crop region is set to maximum size, and zoom ratio set to 1.0, the physical * stream for the tele lens will be configured to its maximum size crop region (no zoom).</p> * <p><em>Deprecated:</em> Prior to Android 11, the field of view of all non-RAW physical streams * cannot be larger than that of non-RAW logical streams. If the logical camera has a * wide-ultrawide lens configuration where the wide lens is the default, when the logical * camera's crop region is set to maximum size, the FOV of the physical streams for the * ultrawide lens will be the same as the logical stream, by making the crop region * smaller than its active array size to compensate for the smaller focal length.</p> * <p>Even if the underlying physical cameras have different RAW characteristics (such as * size or CFA pattern), a logical camera can still advertise RAW capability. In this * case, when the application configures a RAW stream, the camera device will make sure Loading
media/codec2/hidl/1.0/vts/functional/common/media_c2_hidl_test_common.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -92,7 +92,10 @@ void workDone(const std::shared_ptr<android::Codec2Client::Component>& component for (size_t i = 0; i < updates.size(); ++i) { C2Param* param = updates[i].get(); if (param->index() == C2StreamInitDataInfo::output::PARAM_TYPE) { csd = true; C2StreamInitDataInfo::output* csdBuffer = (C2StreamInitDataInfo::output*)(param); size_t csdSize = csdBuffer->flexCount(); if (csdSize > 0) csd = true; } else if ((param->index() == C2StreamSampleRateInfo::output::PARAM_TYPE) || (param->index() == C2StreamChannelCountInfo::output::PARAM_TYPE) || (param->index() == C2StreamPictureSizeInfo::output::PARAM_TYPE)) { Loading
media/codec2/hidl/1.0/vts/functional/video/VtsHalMediaC2V1_0TargetVideoDecTest.cpp +35 −21 Original line number Diff line number Diff line Loading @@ -109,6 +109,7 @@ class Codec2VideoDecHidlTestBase : public ::testing::Test { mFramesReceived = 0; mTimestampUs = 0u; mWorkResult = C2_OK; mReorderDepth = -1; mTimestampDevTest = false; mMd5Offset = 0; mMd5Enable = false; Loading Loading @@ -211,18 +212,29 @@ class Codec2VideoDecHidlTestBase : public ::testing::Test { for (std::unique_ptr<C2Work>& work : workItems) { if (!work->worklets.empty()) { // For decoder components current timestamp always exceeds // previous timestamp // previous timestamp if output is in display order typedef std::unique_lock<std::mutex> ULock; mWorkResult |= work->result; bool codecConfig = ((work->worklets.front()->output.flags & C2FrameData::FLAG_CODEC_CONFIG) != 0); if (!codecConfig && !work->worklets.front()->output.buffers.empty()) { if (mReorderDepth < 0) { C2PortReorderBufferDepthTuning::output reorderBufferDepth; mComponent->query({&reorderBufferDepth}, {}, C2_MAY_BLOCK, nullptr); mReorderDepth = reorderBufferDepth.value; if (mReorderDepth > 0) { // TODO: Add validation for reordered output mTimestampDevTest = false; } } if (mTimestampDevTest) { EXPECT_GE((work->worklets.front()->output.ordinal.timestamp.peeku()), mTimestampUs); mTimestampUs = work->worklets.front()->output.ordinal.timestamp.peeku(); ULock l(mQueueLock); if (mTimestampDevTest) { { bool tsHit = false; std::list<uint64_t>::iterator it = mTimestampUslist.begin(); while (it != mTimestampUslist.end()) { Loading @@ -242,6 +254,7 @@ class Codec2VideoDecHidlTestBase : public ::testing::Test { } } } } if (mMd5Enable) { compareMd5Chksm(work); } Loading Loading @@ -281,6 +294,7 @@ class Codec2VideoDecHidlTestBase : public ::testing::Test { standardComp mCompName; int32_t mWorkResult; int32_t mReorderDepth; uint32_t mFramesReceived; C2BlockPool::local_id_t mBlockPoolId; std::shared_ptr<C2BlockPool> mLinearPool; Loading