Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7777cd64 authored by Fyodor Kyslov's avatar Fyodor Kyslov
Browse files

APV: Set output format correctly

Set output format based on supported formats from the best P210 to YV12

Bug: 395537698, 393445771
Test: CodecDecoderTest, EncodeDecodeAccuracyTest
Change-Id: Ifff3a9df8b10b7504a5a6016ca334b0daf1235a2
parent 31d9a1ab
Loading
Loading
Loading
Loading
+8 −12
Original line number Diff line number Diff line
@@ -1243,19 +1243,15 @@ status_t C2SoftApvDec::outputBuffer(const std::shared_ptr<C2BlockPool>& pool,
    getHDR10PlusInfoData(&hdrInfo, work);

    uint32_t format = HAL_PIXEL_FORMAT_YV12;
    std::shared_ptr<C2StreamColorAspectsInfo::output> codedColorAspects;
    if (OAPV_CS_GET_BIT_DEPTH(imgbOutput->cs) == 10 &&
        mPixelFormatInfo->value != HAL_PIXEL_FORMAT_YCBCR_420_888) {
        IntfImpl::Lock lock = mIntf->lock();
        codedColorAspects = mIntf->getColorAspects_l();

        bool allowRGBA1010102 = false;
        if (codedColorAspects->primaries == C2Color::PRIMARIES_BT2020 &&
            codedColorAspects->matrix == C2Color::MATRIX_BT2020 &&
            codedColorAspects->transfer == C2Color::TRANSFER_ST2084) {
            allowRGBA1010102 = true;
    if (mPixelFormatInfo->value != HAL_PIXEL_FORMAT_YCBCR_420_888) {
        if (isHalPixelFormatSupported((AHardwareBuffer_Format)AHARDWAREBUFFER_FORMAT_YCbCr_P210)) {
            format = AHARDWAREBUFFER_FORMAT_YCbCr_P210;
        } else if (isHalPixelFormatSupported(
                        (AHardwareBuffer_Format)HAL_PIXEL_FORMAT_YCBCR_P010)) {
            format = HAL_PIXEL_FORMAT_YCBCR_P010;
        } else {
            format = HAL_PIXEL_FORMAT_YV12;
        }
        format = getHalPixelFormatForBitDepth10(allowRGBA1010102);
    }

    if (mHalPixelFormat != format) {