Loading media/codec2/components/hevc/C2SoftHevcEnc.cpp +22 −1 Original line number Diff line number Diff line Loading @@ -628,6 +628,7 @@ c2_status_t C2SoftHevcEnc::initEncoder() { mComplexity = mIntf->getComplexity_l(); mQuality = mIntf->getQuality_l(); mGop = mIntf->getGop_l(); mRequestSync = mIntf->getRequestSync_l(); } c2_status_t status = initEncParams(); Loading Loading @@ -956,7 +957,7 @@ void C2SoftHevcEnc::process(const std::unique_ptr<C2Work>& work, } } // handle dynamic config parameters // handle dynamic bitrate change { IntfImpl::Lock lock = mIntf->lock(); std::shared_ptr<C2StreamBitrateInfo::output> bitrate = mIntf->getBitrate_l(); Loading @@ -983,6 +984,26 @@ void C2SoftHevcEnc::process(const std::unique_ptr<C2Work>& work, work->workletsProcessed = 1u; return; } // handle request key frame { IntfImpl::Lock lock = mIntf->lock(); std::shared_ptr<C2StreamRequestSyncFrameTuning::output> requestSync; requestSync = mIntf->getRequestSync_l(); lock.unlock(); if (requestSync != mRequestSync) { // we can handle IDR immediately if (requestSync->value) { // unset request C2StreamRequestSyncFrameTuning::output clearSync(0u, C2_FALSE); std::vector<std::unique_ptr<C2SettingResult>> failures; mIntf->config({ &clearSync }, C2_MAY_BLOCK, &failures); ALOGV("Got sync request"); //Force this as an IDR frame s_encode_ip.i4_force_idr_flag = 1; } mRequestSync = requestSync; } } uint64_t timeDelay = 0; uint64_t timeTaken = 0; Loading media/codec2/components/hevc/C2SoftHevcEnc.h +1 −0 Original line number Diff line number Diff line Loading @@ -88,6 +88,7 @@ struct C2SoftHevcEnc : public SimpleC2Component { std::shared_ptr<C2StreamComplexityTuning::output> mComplexity; std::shared_ptr<C2StreamQualityTuning::output> mQuality; std::shared_ptr<C2StreamGopTuning::output> mGop; std::shared_ptr<C2StreamRequestSyncFrameTuning::output> mRequestSync; #ifdef FILE_DUMP_ENABLE char mInFile[200]; char mOutFile[200]; Loading Loading
media/codec2/components/hevc/C2SoftHevcEnc.cpp +22 −1 Original line number Diff line number Diff line Loading @@ -628,6 +628,7 @@ c2_status_t C2SoftHevcEnc::initEncoder() { mComplexity = mIntf->getComplexity_l(); mQuality = mIntf->getQuality_l(); mGop = mIntf->getGop_l(); mRequestSync = mIntf->getRequestSync_l(); } c2_status_t status = initEncParams(); Loading Loading @@ -956,7 +957,7 @@ void C2SoftHevcEnc::process(const std::unique_ptr<C2Work>& work, } } // handle dynamic config parameters // handle dynamic bitrate change { IntfImpl::Lock lock = mIntf->lock(); std::shared_ptr<C2StreamBitrateInfo::output> bitrate = mIntf->getBitrate_l(); Loading @@ -983,6 +984,26 @@ void C2SoftHevcEnc::process(const std::unique_ptr<C2Work>& work, work->workletsProcessed = 1u; return; } // handle request key frame { IntfImpl::Lock lock = mIntf->lock(); std::shared_ptr<C2StreamRequestSyncFrameTuning::output> requestSync; requestSync = mIntf->getRequestSync_l(); lock.unlock(); if (requestSync != mRequestSync) { // we can handle IDR immediately if (requestSync->value) { // unset request C2StreamRequestSyncFrameTuning::output clearSync(0u, C2_FALSE); std::vector<std::unique_ptr<C2SettingResult>> failures; mIntf->config({ &clearSync }, C2_MAY_BLOCK, &failures); ALOGV("Got sync request"); //Force this as an IDR frame s_encode_ip.i4_force_idr_flag = 1; } mRequestSync = requestSync; } } uint64_t timeDelay = 0; uint64_t timeTaken = 0; Loading
media/codec2/components/hevc/C2SoftHevcEnc.h +1 −0 Original line number Diff line number Diff line Loading @@ -88,6 +88,7 @@ struct C2SoftHevcEnc : public SimpleC2Component { std::shared_ptr<C2StreamComplexityTuning::output> mComplexity; std::shared_ptr<C2StreamQualityTuning::output> mQuality; std::shared_ptr<C2StreamGopTuning::output> mGop; std::shared_ptr<C2StreamRequestSyncFrameTuning::output> mRequestSync; #ifdef FILE_DUMP_ENABLE char mInFile[200]; char mOutFile[200]; Loading