diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-06-20 20:27:02 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-06-20 20:27:02 +0000 |
commit | 61c88f249da83e561014a8a655fad290fef0f37e (patch) | |
tree | 52978da4235f3267343784dba425ed3be8010bce | |
parent | b1b0536f655878a2e15be7d05c158e01a5329316 (diff) | |
parent | 8f0610b3eeb85f3a185168a729be81c3a45d8f64 (diff) | |
download | av-61c88f249da83e561014a8a655fad290fef0f37e.tar.gz |
Snap for 8746144 from 8f0610b3eeb85f3a185168a729be81c3a45d8f64 to mainline-networking-releaseaml_net_330910010aml_net_330811010
Change-Id: I05318a6414d9a16f2e65bcce1acd86f7b29b0c9b
-rw-r--r-- | camera/ndk/include/camera/NdkCameraMetadataTags.h | 13 | ||||
-rw-r--r-- | media/TEST_MAPPING | 45 | ||||
-rw-r--r-- | media/codec2/components/avc/C2SoftAvcEnc.cpp | 3 | ||||
-rw-r--r-- | media/codec2/components/hevc/C2SoftHevcEnc.cpp | 3 | ||||
-rw-r--r-- | media/codec2/components/vpx/C2SoftVpxEnc.cpp | 8 | ||||
-rw-r--r-- | media/codec2/components/vpx/C2SoftVpxEnc.h | 3 | ||||
-rw-r--r-- | media/codec2/sfplugin/CCodecBufferChannel.cpp | 9 | ||||
-rw-r--r-- | media/codec2/sfplugin/Codec2Buffer.cpp | 33 | ||||
-rw-r--r-- | media/codec2/sfplugin/utils/Codec2BufferUtils.cpp | 10 |
9 files changed, 75 insertions, 52 deletions
diff --git a/camera/ndk/include/camera/NdkCameraMetadataTags.h b/camera/ndk/include/camera/NdkCameraMetadataTags.h index 913854ce5c..b6f8552ae1 100644 --- a/camera/ndk/include/camera/NdkCameraMetadataTags.h +++ b/camera/ndk/include/camera/NdkCameraMetadataTags.h @@ -3486,10 +3486,11 @@ typedef enum acamera_metadata_tag { * </ul></p> * * <p>This is a subset of ACAMERA_REQUEST_AVAILABLE_REQUEST_KEYS which contains a list - * of keys that can be overridden using <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#setPhysicalCameraKey">Builder#setPhysicalCameraKey</a>. + * of keys that can be overridden using + * <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.Builder.html#setPhysicalCameraKey">Builder#setPhysicalCameraKey</a>. * The respective value of such request key can be obtained by calling - * <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#getPhysicalCameraKey">Builder#getPhysicalCameraKey</a>. Capture requests that contain - * individual physical device requests must be built via + * <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.Builder.html#getPhysicalCameraKey">Builder#getPhysicalCameraKey</a>. + * Capture requests that contain individual physical device requests must be built via * <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureRequest(int,">Set)</a>.</p> * * @see ACAMERA_REQUEST_AVAILABLE_REQUEST_KEYS @@ -3713,7 +3714,7 @@ typedef enum acamera_metadata_tag { * IMPLEMENTATION_DEFINED | same as YUV_420_888 | Any |</p> * <p>For applications targeting SDK version 31 or newer, if the mobile device declares to be * media performance class 12 or higher by setting - * <a href="https://developer.android.com/reference/android/os/Build/VERSION_CODES/MEDIA_PERFORMANCE_CLASS.html">MEDIA_PERFORMANCE_CLASS</a> to be 31 or larger, + * <a href="https://developer.android.com/reference/android/os/Build.VERSION.html#MEDIA_PERFORMANCE_CLASS">VERSION#MEDIA_PERFORMANCE_CLASS</a> to be 31 or larger, * the primary camera devices (first rear/front camera in the camera ID list) will not * support JPEG sizes smaller than 1080p. If the application configures a JPEG stream * smaller than 1080p, the camera device will round up the JPEG image size to at least @@ -3732,7 +3733,7 @@ typedef enum acamera_metadata_tag { * IMPLEMENTATION_DEFINED | same as YUV_420_888 | Any |</p> * <p>For applications targeting SDK version 31 or newer, if the mobile device doesn't declare * to be media performance class 12 or better by setting - * <a href="https://developer.android.com/reference/android/os/Build/VERSION_CODES/MEDIA_PERFORMANCE_CLASS.html">MEDIA_PERFORMANCE_CLASS</a> to be 31 or larger, + * <a href="https://developer.android.com/reference/android/os/Build.VERSION.html#MEDIA_PERFORMANCE_CLASS">VERSION#MEDIA_PERFORMANCE_CLASS</a> to be 31 or larger, * or if the camera device isn't a primary rear/front camera, the minimum required output * stream configurations are the same as for applications targeting SDK version older than * 31.</p> @@ -10225,7 +10226,7 @@ typedef enum acamera_metadata_enum_acamera_info_supported_hardware_level { * fire the flash for flash power metering during precapture, and then fire the flash * for the final capture, if a flash is available on the device and the AE mode is set to * enable the flash.</p> - * <p>Devices that initially shipped with Android version <a href="https://developer.android.com/reference/android/os/Build/VERSION_CODES.html#Q">Q</a> or newer will not include any LEGACY-level devices.</p> + * <p>Devices that initially shipped with Android version <a href="https://developer.android.com/reference/android/os/Build.VERSION_CODES.html#Q">Q</a> or newer will not include any LEGACY-level devices.</p> * * @see ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER * @see ACAMERA_REQUEST_AVAILABLE_CAPABILITIES diff --git a/media/TEST_MAPPING b/media/TEST_MAPPING index 41fe08006e..a4c03bab3a 100644 --- a/media/TEST_MAPPING +++ b/media/TEST_MAPPING @@ -1,24 +1,7 @@ // for frameworks/av/media { - "presubmit-large": [ - // runs whenever we change something in this tree - { - "name": "CtsMediaCodecTestCases", - "options": [ - { - "include-filter": "android.media.codec.cts.EncodeDecodeTest" - } - ] - }, - { - "name": "CtsMediaCodecTestCases", - "options": [ - { - "include-filter": "android.media.codec.cts.DecodeEditEncodeTest" - } - ] - } - ], + // TODO (b/229286407) Add EncodeDecodeTest and DecodeEditEncodeTest to + // presubmit-large once issues in cuttlefish are fixed "presubmit": [ { "name": "GtsMediaTestCases", @@ -40,26 +23,8 @@ { "path": "frameworks/av/drm/mediadrm/plugins" } - ], - - "platinum-postsubmit": [ - // runs regularly, independent of changes in this tree. - // signals if changes elsewhere break media functionality - { - "name": "CtsMediaCodecTestCases", - "options": [ - { - "include-filter": "android.media.codec.cts.EncodeDecodeTest" - } - ] - }, - { - "name": "CtsMediaCodecTestCases", - "options": [ - { - "include-filter": "android.media.codec.cts.DecodeEditEncodeTest" - } - ] - } ] + + // TODO (b/229286407) Add EncodeDecodeTest and DecodeEditEncodeTest to + // platinum-postsubmit once issues in cuttlefish are fixed } diff --git a/media/codec2/components/avc/C2SoftAvcEnc.cpp b/media/codec2/components/avc/C2SoftAvcEnc.cpp index 4ffcd59f09..8b46d3f495 100644 --- a/media/codec2/components/avc/C2SoftAvcEnc.cpp +++ b/media/codec2/components/avc/C2SoftAvcEnc.cpp @@ -1514,7 +1514,8 @@ c2_status_t C2SoftAvcEnc::setEncodeArgs( vPlane = uPlane + yPlaneSize / 4; yStride = width; uStride = vStride = yStride / 2; - ConvertRGBToPlanarYUV(yPlane, yStride, height, conversionBuffer.size(), *input); + ConvertRGBToPlanarYUV(yPlane, yStride, height, conversionBuffer.size(), *input, + mColorAspects->matrix, mColorAspects->range); break; } case C2PlanarLayout::TYPE_YUV: { diff --git a/media/codec2/components/hevc/C2SoftHevcEnc.cpp b/media/codec2/components/hevc/C2SoftHevcEnc.cpp index 947e3870d4..60d5875264 100644 --- a/media/codec2/components/hevc/C2SoftHevcEnc.cpp +++ b/media/codec2/components/hevc/C2SoftHevcEnc.cpp @@ -901,7 +901,8 @@ c2_status_t C2SoftHevcEnc::setEncodeArgs(ihevce_inp_buf_t* ps_encode_ip, yStride = width; uStride = vStride = yStride / 2; ConvertRGBToPlanarYUV(yPlane, yStride, height, - conversionBuffer.size(), *input); + conversionBuffer.size(), *input, + mColorAspects->matrix, mColorAspects->range); break; } case C2PlanarLayout::TYPE_YUV: { diff --git a/media/codec2/components/vpx/C2SoftVpxEnc.cpp b/media/codec2/components/vpx/C2SoftVpxEnc.cpp index 617769b326..f99ee248df 100644 --- a/media/codec2/components/vpx/C2SoftVpxEnc.cpp +++ b/media/codec2/components/vpx/C2SoftVpxEnc.cpp @@ -733,8 +733,14 @@ void C2SoftVpxEnc::process( switch (layout.type) { case C2PlanarLayout::TYPE_RGB: case C2PlanarLayout::TYPE_RGBA: { + std::shared_ptr<C2StreamColorAspectsInfo::output> colorAspects; + { + IntfImpl::Lock lock = mIntf->lock(); + colorAspects = mIntf->getCodedColorAspects_l(); + } ConvertRGBToPlanarYUV(mConversionBuffer.data(), stride, vstride, - mConversionBuffer.size(), *rView.get()); + mConversionBuffer.size(), *rView.get(), + colorAspects->matrix, colorAspects->range); vpx_img_wrap(&raw_frame, VPX_IMG_FMT_I420, width, height, mStrideAlign, mConversionBuffer.data()); break; diff --git a/media/codec2/components/vpx/C2SoftVpxEnc.h b/media/codec2/components/vpx/C2SoftVpxEnc.h index e296c8fc34..714fadb504 100644 --- a/media/codec2/components/vpx/C2SoftVpxEnc.h +++ b/media/codec2/components/vpx/C2SoftVpxEnc.h @@ -265,6 +265,9 @@ class C2SoftVpxEnc::IntfImpl : public SimpleInterface<void>::BaseParams { std::shared_ptr<C2StreamTemporalLayeringTuning::output> getTemporalLayers_l() const { return mLayering; } + std::shared_ptr<C2StreamColorAspectsInfo::output> getCodedColorAspects_l() const { + return mCodedColorAspects; + } uint32_t getSyncFramePeriod() const; static C2R ColorAspectsSetter(bool mayBlock, C2P<C2StreamColorAspectsInfo::input> &me); static C2R CodedColorAspectsSetter(bool mayBlock, C2P<C2StreamColorAspectsInfo::output> &me, diff --git a/media/codec2/sfplugin/CCodecBufferChannel.cpp b/media/codec2/sfplugin/CCodecBufferChannel.cpp index f27cc21116..dc9f84842f 100644 --- a/media/codec2/sfplugin/CCodecBufferChannel.cpp +++ b/media/codec2/sfplugin/CCodecBufferChannel.cpp @@ -1016,6 +1016,10 @@ void CCodecBufferChannel::getInputBufferArray(Vector<sp<MediaCodecBuffer>> *arra array->clear(); Mutexed<Input>::Locked input(mInput); + if (!input->buffers) { + ALOGE("getInputBufferArray: No Input Buffers allocated"); + return; + } if (!input->buffers->isArrayMode()) { input->buffers = input->buffers->toArrayMode(input->numSlots); } @@ -1026,7 +1030,10 @@ void CCodecBufferChannel::getInputBufferArray(Vector<sp<MediaCodecBuffer>> *arra void CCodecBufferChannel::getOutputBufferArray(Vector<sp<MediaCodecBuffer>> *array) { array->clear(); Mutexed<Output>::Locked output(mOutput); - + if (!output->buffers) { + ALOGE("getOutputBufferArray: No Output Buffers allocated"); + return; + } if (!output->buffers->isArrayMode()) { output->buffers = output->buffers->toArrayMode(output->numSlots); } diff --git a/media/codec2/sfplugin/Codec2Buffer.cpp b/media/codec2/sfplugin/Codec2Buffer.cpp index 6084ee330c..cde4c72f07 100644 --- a/media/codec2/sfplugin/Codec2Buffer.cpp +++ b/media/codec2/sfplugin/Codec2Buffer.cpp @@ -268,6 +268,39 @@ public: mInitCheck = BAD_VALUE; return; } + std::optional<int> clientBitDepth = {}; + switch (mClientColorFormat) { + case COLOR_FormatYUVP010: + clientBitDepth = 10; + break; + case COLOR_FormatYUV411PackedPlanar: + case COLOR_FormatYUV411Planar: + case COLOR_FormatYUV420Flexible: + case COLOR_FormatYUV420PackedPlanar: + case COLOR_FormatYUV420PackedSemiPlanar: + case COLOR_FormatYUV420Planar: + case COLOR_FormatYUV420SemiPlanar: + case COLOR_FormatYUV422Flexible: + case COLOR_FormatYUV422PackedPlanar: + case COLOR_FormatYUV422PackedSemiPlanar: + case COLOR_FormatYUV422Planar: + case COLOR_FormatYUV422SemiPlanar: + case COLOR_FormatYUV444Flexible: + case COLOR_FormatYUV444Interleaved: + clientBitDepth = 8; + break; + default: + // no-op; used with optional + break; + + } + // conversion fails if client bit-depth and the component bit-depth differs + if ((clientBitDepth) && (bitDepth != clientBitDepth.value())) { + ALOGD("Bit depth of client: %d and component: %d differs", + *clientBitDepth, bitDepth); + mInitCheck = BAD_VALUE; + return; + } C2PlaneInfo yPlane = layout.planes[C2PlanarLayout::PLANE_Y]; C2PlaneInfo uPlane = layout.planes[C2PlanarLayout::PLANE_U]; C2PlaneInfo vPlane = layout.planes[C2PlanarLayout::PLANE_V]; diff --git a/media/codec2/sfplugin/utils/Codec2BufferUtils.cpp b/media/codec2/sfplugin/utils/Codec2BufferUtils.cpp index a3a023a3d2..807841e4c6 100644 --- a/media/codec2/sfplugin/utils/Codec2BufferUtils.cpp +++ b/media/codec2/sfplugin/utils/Codec2BufferUtils.cpp @@ -121,7 +121,10 @@ static status_t _ImageCopy(View &view, const MediaImage2 *img, ImagePixel *imgBa } // namespace status_t ImageCopy(uint8_t *imgBase, const MediaImage2 *img, const C2GraphicView &view) { - if (view.crop().width != img->mWidth || view.crop().height != img->mHeight) { + if (img == nullptr + || imgBase == nullptr + || view.crop().width != img->mWidth + || view.crop().height != img->mHeight) { return BAD_VALUE; } const uint8_t* src_y = view.data()[0]; @@ -203,7 +206,10 @@ status_t ImageCopy(uint8_t *imgBase, const MediaImage2 *img, const C2GraphicView } status_t ImageCopy(C2GraphicView &view, const uint8_t *imgBase, const MediaImage2 *img) { - if (view.crop().width != img->mWidth || view.crop().height != img->mHeight) { + if (img == nullptr + || imgBase == nullptr + || view.crop().width != img->mWidth + || view.crop().height != img->mHeight) { return BAD_VALUE; } const uint8_t* src_y = imgBase + img->mPlane[0].mOffset; |