Loading media/codec2/components/avc/C2SoftAvcDec.cpp +26 −3 Original line number Diff line number Diff line Loading @@ -33,7 +33,8 @@ namespace android { namespace { constexpr char COMPONENT_NAME[] = "c2.android.avc.decoder"; constexpr uint32_t kDefaultOutputDelay = 8; constexpr uint32_t kMaxOutputDelay = 16; } // namespace class C2SoftAvcDec::IntfImpl : public SimpleInterface<void>::BaseParams { Loading @@ -54,7 +55,9 @@ public: // TODO: Proper support for reorder depth. addParameter( DefineParam(mActualOutputDelay, C2_PARAMKEY_OUTPUT_DELAY) .withConstValue(new C2PortActualDelayTuning::output(8u)) .withDefault(new C2PortActualDelayTuning::output(kDefaultOutputDelay)) .withFields({C2F(mActualOutputDelay, value).inRange(0, kMaxOutputDelay)}) .withSetter(Setter<decltype(*mActualOutputDelay)>::StrictValueWithNoDeps) .build()); // TODO: output latency and reordering Loading Loading @@ -196,7 +199,6 @@ public: 0u, HAL_PIXEL_FORMAT_YCBCR_420_888)) .build()); } static C2R SizeSetter(bool mayBlock, const C2P<C2StreamPictureSizeInfo::output> &oldMe, C2P<C2StreamPictureSizeInfo::output> &me) { (void)mayBlock; Loading Loading @@ -333,6 +335,7 @@ C2SoftAvcDec::C2SoftAvcDec( mDecHandle(nullptr), mOutBufferFlush(nullptr), mIvColorFormat(IV_YUV_420P), mOutputDelay(kDefaultOutputDelay), mWidth(320), mHeight(240), mHeaderDecoded(false), Loading Loading @@ -882,6 +885,26 @@ void C2SoftAvcDec::process( work->result = C2_CORRUPTED; return; } if (s_decode_op.i4_reorder_depth >= 0 && mOutputDelay != s_decode_op.i4_reorder_depth) { mOutputDelay = s_decode_op.i4_reorder_depth; ALOGV("New Output delay %d ", mOutputDelay); C2PortActualDelayTuning::output outputDelay(mOutputDelay); std::vector<std::unique_ptr<C2SettingResult>> failures; c2_status_t err = mIntf->config({&outputDelay}, C2_MAY_BLOCK, &failures); if (err == OK) { work->worklets.front()->output.configUpdate.push_back( C2Param::Copy(outputDelay)); } else { ALOGE("Cannot set output delay"); mSignalledError = true; work->workletsProcessed = 1u; work->result = C2_CORRUPTED; return; } continue; } if (0 < s_decode_op.u4_pic_wd && 0 < s_decode_op.u4_pic_ht) { if (mHeaderDecoded == false) { mHeaderDecoded = true; Loading media/codec2/components/avc/C2SoftAvcDec.h +1 −1 Original line number Diff line number Diff line Loading @@ -157,7 +157,7 @@ private: size_t mNumCores; IV_COLOR_FORMAT_T mIvColorFormat; uint32_t mOutputDelay; uint32_t mWidth; uint32_t mHeight; uint32_t mStride; Loading media/codec2/components/hevc/C2SoftHevcDec.cpp +26 −2 Original line number Diff line number Diff line Loading @@ -33,7 +33,8 @@ namespace android { namespace { constexpr char COMPONENT_NAME[] = "c2.android.hevc.decoder"; constexpr uint32_t kDefaultOutputDelay = 8; constexpr uint32_t kMaxOutputDelay = 16; } // namespace class C2SoftHevcDec::IntfImpl : public SimpleInterface<void>::BaseParams { Loading @@ -54,7 +55,9 @@ public: // TODO: Proper support for reorder depth. addParameter( DefineParam(mActualOutputDelay, C2_PARAMKEY_OUTPUT_DELAY) .withConstValue(new C2PortActualDelayTuning::output(8u)) .withDefault(new C2PortActualDelayTuning::output(kDefaultOutputDelay)) .withFields({C2F(mActualOutputDelay, value).inRange(0, kMaxOutputDelay)}) .withSetter(Setter<decltype(*mActualOutputDelay)>::StrictValueWithNoDeps) .build()); addParameter( Loading Loading @@ -327,6 +330,7 @@ C2SoftHevcDec::C2SoftHevcDec( mDecHandle(nullptr), mOutBufferFlush(nullptr), mIvColorformat(IV_YUV_420P), mOutputDelay(kDefaultOutputDelay), mWidth(320), mHeight(240), mHeaderDecoded(false), Loading Loading @@ -877,6 +881,26 @@ void C2SoftHevcDec::process( work->result = C2_CORRUPTED; return; } if (s_decode_op.i4_reorder_depth >= 0 && mOutputDelay != s_decode_op.i4_reorder_depth) { mOutputDelay = s_decode_op.i4_reorder_depth; ALOGV("New Output delay %d ", mOutputDelay); C2PortActualDelayTuning::output outputDelay(mOutputDelay); std::vector<std::unique_ptr<C2SettingResult>> failures; c2_status_t err = mIntf->config({&outputDelay}, C2_MAY_BLOCK, &failures); if (err == OK) { work->worklets.front()->output.configUpdate.push_back( C2Param::Copy(outputDelay)); } else { ALOGE("Cannot set output delay"); mSignalledError = true; work->workletsProcessed = 1u; work->result = C2_CORRUPTED; return; } continue; } if (0 < s_decode_op.u4_pic_wd && 0 < s_decode_op.u4_pic_ht) { if (mHeaderDecoded == false) { mHeaderDecoded = true; Loading media/codec2/components/hevc/C2SoftHevcDec.h +1 −1 Original line number Diff line number Diff line Loading @@ -115,7 +115,7 @@ struct C2SoftHevcDec : public SimpleC2Component { size_t mNumCores; IV_COLOR_FORMAT_T mIvColorformat; uint32_t mOutputDelay; uint32_t mWidth; uint32_t mHeight; uint32_t mStride; Loading Loading
media/codec2/components/avc/C2SoftAvcDec.cpp +26 −3 Original line number Diff line number Diff line Loading @@ -33,7 +33,8 @@ namespace android { namespace { constexpr char COMPONENT_NAME[] = "c2.android.avc.decoder"; constexpr uint32_t kDefaultOutputDelay = 8; constexpr uint32_t kMaxOutputDelay = 16; } // namespace class C2SoftAvcDec::IntfImpl : public SimpleInterface<void>::BaseParams { Loading @@ -54,7 +55,9 @@ public: // TODO: Proper support for reorder depth. addParameter( DefineParam(mActualOutputDelay, C2_PARAMKEY_OUTPUT_DELAY) .withConstValue(new C2PortActualDelayTuning::output(8u)) .withDefault(new C2PortActualDelayTuning::output(kDefaultOutputDelay)) .withFields({C2F(mActualOutputDelay, value).inRange(0, kMaxOutputDelay)}) .withSetter(Setter<decltype(*mActualOutputDelay)>::StrictValueWithNoDeps) .build()); // TODO: output latency and reordering Loading Loading @@ -196,7 +199,6 @@ public: 0u, HAL_PIXEL_FORMAT_YCBCR_420_888)) .build()); } static C2R SizeSetter(bool mayBlock, const C2P<C2StreamPictureSizeInfo::output> &oldMe, C2P<C2StreamPictureSizeInfo::output> &me) { (void)mayBlock; Loading Loading @@ -333,6 +335,7 @@ C2SoftAvcDec::C2SoftAvcDec( mDecHandle(nullptr), mOutBufferFlush(nullptr), mIvColorFormat(IV_YUV_420P), mOutputDelay(kDefaultOutputDelay), mWidth(320), mHeight(240), mHeaderDecoded(false), Loading Loading @@ -882,6 +885,26 @@ void C2SoftAvcDec::process( work->result = C2_CORRUPTED; return; } if (s_decode_op.i4_reorder_depth >= 0 && mOutputDelay != s_decode_op.i4_reorder_depth) { mOutputDelay = s_decode_op.i4_reorder_depth; ALOGV("New Output delay %d ", mOutputDelay); C2PortActualDelayTuning::output outputDelay(mOutputDelay); std::vector<std::unique_ptr<C2SettingResult>> failures; c2_status_t err = mIntf->config({&outputDelay}, C2_MAY_BLOCK, &failures); if (err == OK) { work->worklets.front()->output.configUpdate.push_back( C2Param::Copy(outputDelay)); } else { ALOGE("Cannot set output delay"); mSignalledError = true; work->workletsProcessed = 1u; work->result = C2_CORRUPTED; return; } continue; } if (0 < s_decode_op.u4_pic_wd && 0 < s_decode_op.u4_pic_ht) { if (mHeaderDecoded == false) { mHeaderDecoded = true; Loading
media/codec2/components/avc/C2SoftAvcDec.h +1 −1 Original line number Diff line number Diff line Loading @@ -157,7 +157,7 @@ private: size_t mNumCores; IV_COLOR_FORMAT_T mIvColorFormat; uint32_t mOutputDelay; uint32_t mWidth; uint32_t mHeight; uint32_t mStride; Loading
media/codec2/components/hevc/C2SoftHevcDec.cpp +26 −2 Original line number Diff line number Diff line Loading @@ -33,7 +33,8 @@ namespace android { namespace { constexpr char COMPONENT_NAME[] = "c2.android.hevc.decoder"; constexpr uint32_t kDefaultOutputDelay = 8; constexpr uint32_t kMaxOutputDelay = 16; } // namespace class C2SoftHevcDec::IntfImpl : public SimpleInterface<void>::BaseParams { Loading @@ -54,7 +55,9 @@ public: // TODO: Proper support for reorder depth. addParameter( DefineParam(mActualOutputDelay, C2_PARAMKEY_OUTPUT_DELAY) .withConstValue(new C2PortActualDelayTuning::output(8u)) .withDefault(new C2PortActualDelayTuning::output(kDefaultOutputDelay)) .withFields({C2F(mActualOutputDelay, value).inRange(0, kMaxOutputDelay)}) .withSetter(Setter<decltype(*mActualOutputDelay)>::StrictValueWithNoDeps) .build()); addParameter( Loading Loading @@ -327,6 +330,7 @@ C2SoftHevcDec::C2SoftHevcDec( mDecHandle(nullptr), mOutBufferFlush(nullptr), mIvColorformat(IV_YUV_420P), mOutputDelay(kDefaultOutputDelay), mWidth(320), mHeight(240), mHeaderDecoded(false), Loading Loading @@ -877,6 +881,26 @@ void C2SoftHevcDec::process( work->result = C2_CORRUPTED; return; } if (s_decode_op.i4_reorder_depth >= 0 && mOutputDelay != s_decode_op.i4_reorder_depth) { mOutputDelay = s_decode_op.i4_reorder_depth; ALOGV("New Output delay %d ", mOutputDelay); C2PortActualDelayTuning::output outputDelay(mOutputDelay); std::vector<std::unique_ptr<C2SettingResult>> failures; c2_status_t err = mIntf->config({&outputDelay}, C2_MAY_BLOCK, &failures); if (err == OK) { work->worklets.front()->output.configUpdate.push_back( C2Param::Copy(outputDelay)); } else { ALOGE("Cannot set output delay"); mSignalledError = true; work->workletsProcessed = 1u; work->result = C2_CORRUPTED; return; } continue; } if (0 < s_decode_op.u4_pic_wd && 0 < s_decode_op.u4_pic_ht) { if (mHeaderDecoded == false) { mHeaderDecoded = true; Loading
media/codec2/components/hevc/C2SoftHevcDec.h +1 −1 Original line number Diff line number Diff line Loading @@ -115,7 +115,7 @@ struct C2SoftHevcDec : public SimpleC2Component { size_t mNumCores; IV_COLOR_FORMAT_T mIvColorformat; uint32_t mOutputDelay; uint32_t mWidth; uint32_t mHeight; uint32_t mStride; Loading