Loading media/codec2/hal/common/MultiAccessUnitHelper.cpp +29 −34 Original line number Diff line number Diff line Loading @@ -96,18 +96,23 @@ C2Component::kind_t MultiAccessUnitInterface::kind() const { return (C2Component::kind_t)(mKind.value); } void MultiAccessUnitInterface::getDecoderSampleRateAndChannelCount( uint32_t &sampleRate_, uint32_t &channelCount_) const { bool MultiAccessUnitInterface::getDecoderSampleRateAndChannelCount( uint32_t * const sampleRate_, uint32_t * const channelCount_) const { if (sampleRate_ == nullptr || sampleRate_ == nullptr) { return false; } if (mC2ComponentIntf) { C2StreamSampleRateInfo::output sampleRate; C2StreamChannelCountInfo::output channelCount; c2_status_t res = mC2ComponentIntf->query_vb( {&sampleRate, &channelCount}, {}, C2_MAY_BLOCK, nullptr); if (res == C2_OK) { sampleRate_ = sampleRate.value; channelCount_ = channelCount.value; if (res == C2_OK && sampleRate.value > 0 && channelCount.value > 0) { *sampleRate_ = sampleRate.value; *channelCount_ = channelCount.value; return true; } } return false; } //C2MultiAccessUnitBuffer Loading Loading @@ -320,28 +325,12 @@ c2_status_t MultiAccessUnitHelper::scatter( } } if (!processedWork->empty()) { { C2LargeFrame::output multiAccessParams = mInterface->getLargeFrameParam(); if (mInterface->kind() == C2Component::KIND_DECODER) { uint32_t sampleRate = 0; uint32_t channelCount = 0; uint32_t frameSize = 0; mInterface->getDecoderSampleRateAndChannelCount( sampleRate, channelCount); if (sampleRate > 0 && channelCount > 0) { frameSize = channelCount * 2; multiAccessParams.maxSize = (multiAccessParams.maxSize / frameSize) * frameSize; multiAccessParams.thresholdSize = (multiAccessParams.thresholdSize / frameSize) * frameSize; } } frameInfo.mLargeFrameTuning = multiAccessParams; std::lock_guard<std::mutex> l(mLock); mFrameHolder.push_back(std::move(frameInfo)); } } } return C2_OK; } Loading Loading @@ -506,6 +495,20 @@ c2_status_t MultiAccessUnitHelper::processWorklets(MultiAccessUnitInfo &frame, frame.reset(); return C2_OK; } int64_t sampleTimeUs = 0; uint32_t frameSize = 0; uint32_t sampleRate = 0; uint32_t channelCount = 0; if (mInterface->getDecoderSampleRateAndChannelCount(&sampleRate, &channelCount)) { sampleTimeUs = (1000000u) / (sampleRate * channelCount * 2); frameSize = channelCount * 2; if (mInterface->kind() == C2Component::KIND_DECODER) { frame.mLargeFrameTuning.maxSize = (frame.mLargeFrameTuning.maxSize / frameSize) * frameSize; frame.mLargeFrameTuning.thresholdSize = (frame.mLargeFrameTuning.thresholdSize / frameSize) * frameSize; } } c2_status_t c2ret = allocateWork(frame, true); if (c2ret != C2_OK) { return c2ret; Loading @@ -520,15 +523,7 @@ c2_status_t MultiAccessUnitHelper::processWorklets(MultiAccessUnitInfo &frame, outputFramedata.infoBuffers.insert(outputFramedata.infoBuffers.begin(), (*worklet)->output.infoBuffers.begin(), (*worklet)->output.infoBuffers.end()); int64_t sampleTimeUs = 0; uint32_t frameSize = 0; uint32_t sampleRate = 0; uint32_t channelCount = 0; mInterface->getDecoderSampleRateAndChannelCount(sampleRate, channelCount); if (sampleRate > 0 && channelCount > 0) { sampleTimeUs = (1000000u) / (sampleRate * channelCount * 2); frameSize = channelCount * 2; } LOG(DEBUG) << "maxOutSize " << frame.mLargeFrameTuning.maxSize << " threshold " << frame.mLargeFrameTuning.thresholdSize; if ((*worklet)->output.buffers.size() > 0) { Loading media/codec2/hal/common/include/codec2/common/MultiAccessUnitHelper.h +2 −2 Original line number Diff line number Diff line Loading @@ -44,8 +44,8 @@ struct MultiAccessUnitInterface : public C2InterfaceHelper { bool isValidField(const C2ParamField &field) const; protected: void getDecoderSampleRateAndChannelCount( uint32_t &sampleRate_, uint32_t &channelCount_) const; bool getDecoderSampleRateAndChannelCount( uint32_t * const sampleRate_, uint32_t * const channelCount_) const; const std::shared_ptr<C2ComponentInterface> mC2ComponentIntf; std::shared_ptr<C2LargeFrame::output> mLargeFrameParams; C2ComponentKindSetting mKind; Loading Loading
media/codec2/hal/common/MultiAccessUnitHelper.cpp +29 −34 Original line number Diff line number Diff line Loading @@ -96,18 +96,23 @@ C2Component::kind_t MultiAccessUnitInterface::kind() const { return (C2Component::kind_t)(mKind.value); } void MultiAccessUnitInterface::getDecoderSampleRateAndChannelCount( uint32_t &sampleRate_, uint32_t &channelCount_) const { bool MultiAccessUnitInterface::getDecoderSampleRateAndChannelCount( uint32_t * const sampleRate_, uint32_t * const channelCount_) const { if (sampleRate_ == nullptr || sampleRate_ == nullptr) { return false; } if (mC2ComponentIntf) { C2StreamSampleRateInfo::output sampleRate; C2StreamChannelCountInfo::output channelCount; c2_status_t res = mC2ComponentIntf->query_vb( {&sampleRate, &channelCount}, {}, C2_MAY_BLOCK, nullptr); if (res == C2_OK) { sampleRate_ = sampleRate.value; channelCount_ = channelCount.value; if (res == C2_OK && sampleRate.value > 0 && channelCount.value > 0) { *sampleRate_ = sampleRate.value; *channelCount_ = channelCount.value; return true; } } return false; } //C2MultiAccessUnitBuffer Loading Loading @@ -320,28 +325,12 @@ c2_status_t MultiAccessUnitHelper::scatter( } } if (!processedWork->empty()) { { C2LargeFrame::output multiAccessParams = mInterface->getLargeFrameParam(); if (mInterface->kind() == C2Component::KIND_DECODER) { uint32_t sampleRate = 0; uint32_t channelCount = 0; uint32_t frameSize = 0; mInterface->getDecoderSampleRateAndChannelCount( sampleRate, channelCount); if (sampleRate > 0 && channelCount > 0) { frameSize = channelCount * 2; multiAccessParams.maxSize = (multiAccessParams.maxSize / frameSize) * frameSize; multiAccessParams.thresholdSize = (multiAccessParams.thresholdSize / frameSize) * frameSize; } } frameInfo.mLargeFrameTuning = multiAccessParams; std::lock_guard<std::mutex> l(mLock); mFrameHolder.push_back(std::move(frameInfo)); } } } return C2_OK; } Loading Loading @@ -506,6 +495,20 @@ c2_status_t MultiAccessUnitHelper::processWorklets(MultiAccessUnitInfo &frame, frame.reset(); return C2_OK; } int64_t sampleTimeUs = 0; uint32_t frameSize = 0; uint32_t sampleRate = 0; uint32_t channelCount = 0; if (mInterface->getDecoderSampleRateAndChannelCount(&sampleRate, &channelCount)) { sampleTimeUs = (1000000u) / (sampleRate * channelCount * 2); frameSize = channelCount * 2; if (mInterface->kind() == C2Component::KIND_DECODER) { frame.mLargeFrameTuning.maxSize = (frame.mLargeFrameTuning.maxSize / frameSize) * frameSize; frame.mLargeFrameTuning.thresholdSize = (frame.mLargeFrameTuning.thresholdSize / frameSize) * frameSize; } } c2_status_t c2ret = allocateWork(frame, true); if (c2ret != C2_OK) { return c2ret; Loading @@ -520,15 +523,7 @@ c2_status_t MultiAccessUnitHelper::processWorklets(MultiAccessUnitInfo &frame, outputFramedata.infoBuffers.insert(outputFramedata.infoBuffers.begin(), (*worklet)->output.infoBuffers.begin(), (*worklet)->output.infoBuffers.end()); int64_t sampleTimeUs = 0; uint32_t frameSize = 0; uint32_t sampleRate = 0; uint32_t channelCount = 0; mInterface->getDecoderSampleRateAndChannelCount(sampleRate, channelCount); if (sampleRate > 0 && channelCount > 0) { sampleTimeUs = (1000000u) / (sampleRate * channelCount * 2); frameSize = channelCount * 2; } LOG(DEBUG) << "maxOutSize " << frame.mLargeFrameTuning.maxSize << " threshold " << frame.mLargeFrameTuning.thresholdSize; if ((*worklet)->output.buffers.size() > 0) { Loading
media/codec2/hal/common/include/codec2/common/MultiAccessUnitHelper.h +2 −2 Original line number Diff line number Diff line Loading @@ -44,8 +44,8 @@ struct MultiAccessUnitInterface : public C2InterfaceHelper { bool isValidField(const C2ParamField &field) const; protected: void getDecoderSampleRateAndChannelCount( uint32_t &sampleRate_, uint32_t &channelCount_) const; bool getDecoderSampleRateAndChannelCount( uint32_t * const sampleRate_, uint32_t * const channelCount_) const; const std::shared_ptr<C2ComponentInterface> mC2ComponentIntf; std::shared_ptr<C2LargeFrame::output> mLargeFrameParams; C2ComponentKindSetting mKind; Loading