Loading media/codec2/components/vpx/C2SoftVpxDec.cpp +36 −0 Original line number Diff line number Diff line Loading @@ -446,6 +446,7 @@ status_t C2SoftVpxDec::initDecoder() { { IntfImpl::Lock lock = mIntf->lock(); mPixelFormatInfo = mIntf->getPixelFormat_l(); mColorAspects = mIntf->getDefaultColorAspects_l(); } mWidth = 320; Loading Loading @@ -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; Loading media/codec2/components/vpx/C2SoftVpxDec.h +1 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading
media/codec2/components/vpx/C2SoftVpxDec.cpp +36 −0 Original line number Diff line number Diff line Loading @@ -446,6 +446,7 @@ status_t C2SoftVpxDec::initDecoder() { { IntfImpl::Lock lock = mIntf->lock(); mPixelFormatInfo = mIntf->getPixelFormat_l(); mColorAspects = mIntf->getDefaultColorAspects_l(); } mWidth = 320; Loading Loading @@ -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; Loading
media/codec2/components/vpx/C2SoftVpxDec.h +1 −0 Original line number Diff line number Diff line Loading @@ -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; Loading