diff options
author | Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> | 2024-04-19 04:17:31 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2024-04-19 04:17:31 +0000 |
commit | 02e64af2cdf51ba02ced5e36f1501bda8ddb9693 (patch) | |
tree | 517e21b41864564485d94527897118658ffa7fb6 | |
parent | d9ae2399d2b9dc7e41b6e4a60897e33a5facde7b (diff) | |
parent | 9f0a032fe00722b364553c08e09605aaacecb2df (diff) | |
download | av-02e64af2cdf51ba02ced5e36f1501bda8ddb9693.tar.gz |
Merge "C2SoftVpxDec: Add dynamic color aspects support" into main
-rw-r--r-- | media/codec2/components/vpx/C2SoftVpxDec.cpp | 36 | ||||
-rw-r--r-- | media/codec2/components/vpx/C2SoftVpxDec.h | 1 |
2 files changed, 37 insertions, 0 deletions
diff --git a/media/codec2/components/vpx/C2SoftVpxDec.cpp b/media/codec2/components/vpx/C2SoftVpxDec.cpp index dab7b89e65..318f093aff 100644 --- a/media/codec2/components/vpx/C2SoftVpxDec.cpp +++ b/media/codec2/components/vpx/C2SoftVpxDec.cpp @@ -446,6 +446,7 @@ status_t C2SoftVpxDec::initDecoder() { { IntfImpl::Lock lock = mIntf->lock(); mPixelFormatInfo = mIntf->getPixelFormat_l(); + mColorAspects = mIntf->getDefaultColorAspects_l(); } mWidth = 320; @@ -591,6 +592,41 @@ void C2SoftVpxDec::process( return; } + // handle dynamic config parameters + { + IntfImpl::Lock lock = mIntf->lock(); + std::shared_ptr<C2StreamColorAspectsTuning::output> defaultColorAspects = + mIntf->getDefaultColorAspects_l(); + lock.unlock(); + + if (mColorAspects->range != defaultColorAspects->range || + mColorAspects->primaries != defaultColorAspects->primaries || + mColorAspects->matrix != defaultColorAspects->matrix || + mColorAspects->transfer != defaultColorAspects->transfer) { + + mColorAspects->range = defaultColorAspects->range; + mColorAspects->primaries = defaultColorAspects->primaries; + mColorAspects->matrix = defaultColorAspects->matrix; + mColorAspects->transfer = defaultColorAspects->transfer; + + C2StreamColorAspectsTuning::output colorAspect(0u, defaultColorAspects->range, + defaultColorAspects->primaries, defaultColorAspects->transfer, + defaultColorAspects->matrix); + std::vector<std::unique_ptr<C2SettingResult>> failures; + c2_status_t err = mIntf->config({&colorAspect}, C2_MAY_BLOCK, &failures); + if (err == C2_OK) { + work->worklets.front()->output.configUpdate.push_back( + C2Param::Copy(colorAspect)); + } else { + ALOGE("Config update colorAspect failed"); + mSignalledError = true; + work->workletsProcessed = 1u; + work->result = C2_CORRUPTED; + return; + } + } + } + size_t inOffset = 0u; size_t inSize = 0u; C2ReadView rView = mDummyReadView; diff --git a/media/codec2/components/vpx/C2SoftVpxDec.h b/media/codec2/components/vpx/C2SoftVpxDec.h index e9d6dc9519..93cc213811 100644 --- a/media/codec2/components/vpx/C2SoftVpxDec.h +++ b/media/codec2/components/vpx/C2SoftVpxDec.h @@ -66,6 +66,7 @@ struct C2SoftVpxDec : public SimpleC2Component { // configurations used by component in process // (TODO: keep this in intf but make them internal only) std::shared_ptr<C2StreamPixelFormatInfo::output> mPixelFormatInfo; + std::shared_ptr<C2StreamColorAspectsTuning::output> mColorAspects; std::shared_ptr<IntfImpl> mIntf; vpx_codec_ctx_t *mCodecCtx; |