Loading apex/ld.config.txt +2 −0 Original line number Diff line number Diff line Loading @@ -127,3 +127,5 @@ namespace.sphal.links = platform # namespace.sphal.link.platform.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.sphal.link.platform.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libc.so:libcgrouprc.so:libclang_rt.asan-aarch64-android.so:libclang_rt.asan-arm-android.so:libclang_rt.hwasan-aarch64-android.so:libclang_rt.asan-i686-android.so:libclang_rt.asan-x86_64-android.so:libdl.so:libft2.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so # Add a link for libz.so which is llndk on devices where VNDK is not enforced. namespace.sphal.link.platform.shared_libs += libz.so media/codec2/components/flac/C2SoftFlacEnc.cpp +12 −3 Original line number Diff line number Diff line Loading @@ -73,6 +73,14 @@ public: .withFields({C2F(mBitrate, value).inRange(1, 21000000)}) .withSetter(Setter<decltype(*mBitrate)>::NonStrictValueWithNoDeps) .build()); addParameter( DefineParam(mComplexity, C2_PARAMKEY_COMPLEXITY) .withDefault(new C2StreamComplexityTuning::output(0u, FLAC_COMPRESSION_LEVEL_DEFAULT)) .withFields({C2F(mComplexity, value).inRange( FLAC_COMPRESSION_LEVEL_MIN, FLAC_COMPRESSION_LEVEL_MAX)}) .withSetter(Setter<decltype(*mComplexity)>::NonStrictValueWithNoDeps) .build()); addParameter( DefineParam(mInputMaxBufSize, C2_PARAMKEY_INPUT_MAX_BUFFER_SIZE) .withConstValue(new C2StreamMaxBufferSizeInfo::input(0u, 4608)) Loading @@ -93,12 +101,14 @@ public: uint32_t getSampleRate() const { return mSampleRate->value; } uint32_t getChannelCount() const { return mChannelCount->value; } uint32_t getBitrate() const { return mBitrate->value; } uint32_t getComplexity() const { return mComplexity->value; } int32_t getPcmEncodingInfo() const { return mPcmEncodingInfo->value; } private: std::shared_ptr<C2StreamSampleRateInfo::input> mSampleRate; std::shared_ptr<C2StreamChannelCountInfo::input> mChannelCount; std::shared_ptr<C2StreamBitrateInfo::output> mBitrate; std::shared_ptr<C2StreamComplexityTuning::output> mComplexity; std::shared_ptr<C2StreamMaxBufferSizeInfo::input> mInputMaxBufSize; std::shared_ptr<C2StreamPcmEncodingInfo::input> mPcmEncodingInfo; }; Loading Loading @@ -127,7 +137,6 @@ c2_status_t C2SoftFlacEnc::onInit() { mSignalledError = false; mSignalledOutputEos = false; mCompressionLevel = FLAC_COMPRESSION_LEVEL_DEFAULT; mIsFirstFrame = true; mAnchorTimeStamp = 0ull; mProcessedSamples = 0u; Loading @@ -153,7 +162,6 @@ void C2SoftFlacEnc::onRelease() { } void C2SoftFlacEnc::onReset() { mCompressionLevel = FLAC_COMPRESSION_LEVEL_DEFAULT; (void) onStop(); } Loading Loading @@ -369,7 +377,8 @@ status_t C2SoftFlacEnc::configureEncoder() { ok = ok && FLAC__stream_encoder_set_channels(mFlacStreamEncoder, mIntf->getChannelCount()); ok = ok && FLAC__stream_encoder_set_sample_rate(mFlacStreamEncoder, mIntf->getSampleRate()); ok = ok && FLAC__stream_encoder_set_bits_per_sample(mFlacStreamEncoder, bitsPerSample); ok = ok && FLAC__stream_encoder_set_compression_level(mFlacStreamEncoder, mCompressionLevel); ok = ok && FLAC__stream_encoder_set_compression_level(mFlacStreamEncoder, mIntf->getComplexity()); ok = ok && FLAC__stream_encoder_set_verify(mFlacStreamEncoder, false); if (!ok) { ALOGE("unknown error when configuring encoder"); Loading media/codec2/components/flac/C2SoftFlacEnc.h +0 −1 Original line number Diff line number Diff line Loading @@ -69,7 +69,6 @@ private: std::shared_ptr<C2LinearBlock> mOutputBlock; bool mSignalledError; bool mSignalledOutputEos; uint32_t mCompressionLevel; uint32_t mBlockSize; bool mIsFirstFrame; uint64_t mAnchorTimeStamp; Loading media/codec2/components/hevc/C2SoftHevcEnc.cpp +21 −9 Original line number Diff line number Diff line Loading @@ -390,27 +390,23 @@ C2SoftHevcEnc::C2SoftHevcEnc(const char* name, c2_node_id_t id, } C2SoftHevcEnc::~C2SoftHevcEnc() { releaseEncoder(); onRelease(); } c2_status_t C2SoftHevcEnc::onInit() { return initEncoder(); return C2_OK; } c2_status_t C2SoftHevcEnc::onStop() { if (!mStarted) { return C2_OK; } return releaseEncoder(); } void C2SoftHevcEnc::onReset() { onStop(); initEncoder(); releaseEncoder(); } void C2SoftHevcEnc::onRelease() { onStop(); releaseEncoder(); } c2_status_t C2SoftHevcEnc::onFlush_sm() { Loading Loading @@ -865,6 +861,22 @@ void C2SoftHevcEnc::process(const std::unique_ptr<C2Work>& work, return; } } // handle dynamic config parameters { IntfImpl::Lock lock = mIntf->lock(); std::shared_ptr<C2StreamBitrateInfo::output> bitrate = mIntf->getBitrate_l(); lock.unlock(); if (bitrate != mBitrate) { mBitrate = bitrate; mEncParams.s_tgt_lyr_prms.as_tgt_params[0].ai4_tgt_bitrate[0] = mBitrate->value; mEncParams.s_tgt_lyr_prms.as_tgt_params[0].ai4_peak_bitrate[0] = mBitrate->value << 1; } } ihevce_inp_buf_t s_encode_ip{}; ihevce_out_buf_t s_encode_op{}; uint64_t workIndex = work->input.ordinal.frameIndex.peekull(); Loading media/codec2/sfplugin/C2OMXNode.cpp +20 −14 Original line number Diff line number Diff line Loading @@ -50,14 +50,8 @@ public: } // namespace C2OMXNode::C2OMXNode(const std::shared_ptr<Codec2Client::Component> &comp) : mComp(comp), mFrameIndex(0), mWidth(0), mHeight(0), : mComp(comp), mFrameIndex(0), mWidth(0), mHeight(0), mUsage(0), mAdjustTimestampGapUs(0), mFirstInputFrame(true) { // TODO: read from intf() if (!strncmp(comp->getName().c_str(), "c2.android.", 11)) { mUsage = GRALLOC_USAGE_SW_READ_OFTEN; } else { mUsage = GRALLOC_USAGE_HW_VIDEO_ENCODER; } } status_t C2OMXNode::freeNode() { Loading Loading @@ -103,13 +97,25 @@ status_t C2OMXNode::getParameter(OMX_INDEXTYPE index, void *params, size_t size) } status_t C2OMXNode::setParameter(OMX_INDEXTYPE index, const void *params, size_t size) { if (params == NULL) { return BAD_VALUE; } switch ((uint32_t)index) { case OMX_IndexParamMaxFrameDurationForBitrateControl: // handle max/fixed frame duration control if (index == (OMX_INDEXTYPE)OMX_IndexParamMaxFrameDurationForBitrateControl && params != NULL && size == sizeof(OMX_PARAM_U32TYPE)) { if (size != sizeof(OMX_PARAM_U32TYPE)) { return BAD_VALUE; } // The incoming number is an int32_t contained in OMX_U32. mAdjustTimestampGapUs = (int32_t)((OMX_PARAM_U32TYPE*)params)->nU32; return OK; case OMX_IndexParamConsumerUsageBits: if (size != sizeof(OMX_U32)) { return BAD_VALUE; } mUsage = *((OMX_U32 *)params); return OK; } return ERROR_UNSUPPORTED; } Loading Loading
apex/ld.config.txt +2 −0 Original line number Diff line number Diff line Loading @@ -127,3 +127,5 @@ namespace.sphal.links = platform # namespace.sphal.link.platform.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.sphal.link.platform.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libc.so:libcgrouprc.so:libclang_rt.asan-aarch64-android.so:libclang_rt.asan-arm-android.so:libclang_rt.hwasan-aarch64-android.so:libclang_rt.asan-i686-android.so:libclang_rt.asan-x86_64-android.so:libdl.so:libft2.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so # Add a link for libz.so which is llndk on devices where VNDK is not enforced. namespace.sphal.link.platform.shared_libs += libz.so
media/codec2/components/flac/C2SoftFlacEnc.cpp +12 −3 Original line number Diff line number Diff line Loading @@ -73,6 +73,14 @@ public: .withFields({C2F(mBitrate, value).inRange(1, 21000000)}) .withSetter(Setter<decltype(*mBitrate)>::NonStrictValueWithNoDeps) .build()); addParameter( DefineParam(mComplexity, C2_PARAMKEY_COMPLEXITY) .withDefault(new C2StreamComplexityTuning::output(0u, FLAC_COMPRESSION_LEVEL_DEFAULT)) .withFields({C2F(mComplexity, value).inRange( FLAC_COMPRESSION_LEVEL_MIN, FLAC_COMPRESSION_LEVEL_MAX)}) .withSetter(Setter<decltype(*mComplexity)>::NonStrictValueWithNoDeps) .build()); addParameter( DefineParam(mInputMaxBufSize, C2_PARAMKEY_INPUT_MAX_BUFFER_SIZE) .withConstValue(new C2StreamMaxBufferSizeInfo::input(0u, 4608)) Loading @@ -93,12 +101,14 @@ public: uint32_t getSampleRate() const { return mSampleRate->value; } uint32_t getChannelCount() const { return mChannelCount->value; } uint32_t getBitrate() const { return mBitrate->value; } uint32_t getComplexity() const { return mComplexity->value; } int32_t getPcmEncodingInfo() const { return mPcmEncodingInfo->value; } private: std::shared_ptr<C2StreamSampleRateInfo::input> mSampleRate; std::shared_ptr<C2StreamChannelCountInfo::input> mChannelCount; std::shared_ptr<C2StreamBitrateInfo::output> mBitrate; std::shared_ptr<C2StreamComplexityTuning::output> mComplexity; std::shared_ptr<C2StreamMaxBufferSizeInfo::input> mInputMaxBufSize; std::shared_ptr<C2StreamPcmEncodingInfo::input> mPcmEncodingInfo; }; Loading Loading @@ -127,7 +137,6 @@ c2_status_t C2SoftFlacEnc::onInit() { mSignalledError = false; mSignalledOutputEos = false; mCompressionLevel = FLAC_COMPRESSION_LEVEL_DEFAULT; mIsFirstFrame = true; mAnchorTimeStamp = 0ull; mProcessedSamples = 0u; Loading @@ -153,7 +162,6 @@ void C2SoftFlacEnc::onRelease() { } void C2SoftFlacEnc::onReset() { mCompressionLevel = FLAC_COMPRESSION_LEVEL_DEFAULT; (void) onStop(); } Loading Loading @@ -369,7 +377,8 @@ status_t C2SoftFlacEnc::configureEncoder() { ok = ok && FLAC__stream_encoder_set_channels(mFlacStreamEncoder, mIntf->getChannelCount()); ok = ok && FLAC__stream_encoder_set_sample_rate(mFlacStreamEncoder, mIntf->getSampleRate()); ok = ok && FLAC__stream_encoder_set_bits_per_sample(mFlacStreamEncoder, bitsPerSample); ok = ok && FLAC__stream_encoder_set_compression_level(mFlacStreamEncoder, mCompressionLevel); ok = ok && FLAC__stream_encoder_set_compression_level(mFlacStreamEncoder, mIntf->getComplexity()); ok = ok && FLAC__stream_encoder_set_verify(mFlacStreamEncoder, false); if (!ok) { ALOGE("unknown error when configuring encoder"); Loading
media/codec2/components/flac/C2SoftFlacEnc.h +0 −1 Original line number Diff line number Diff line Loading @@ -69,7 +69,6 @@ private: std::shared_ptr<C2LinearBlock> mOutputBlock; bool mSignalledError; bool mSignalledOutputEos; uint32_t mCompressionLevel; uint32_t mBlockSize; bool mIsFirstFrame; uint64_t mAnchorTimeStamp; Loading
media/codec2/components/hevc/C2SoftHevcEnc.cpp +21 −9 Original line number Diff line number Diff line Loading @@ -390,27 +390,23 @@ C2SoftHevcEnc::C2SoftHevcEnc(const char* name, c2_node_id_t id, } C2SoftHevcEnc::~C2SoftHevcEnc() { releaseEncoder(); onRelease(); } c2_status_t C2SoftHevcEnc::onInit() { return initEncoder(); return C2_OK; } c2_status_t C2SoftHevcEnc::onStop() { if (!mStarted) { return C2_OK; } return releaseEncoder(); } void C2SoftHevcEnc::onReset() { onStop(); initEncoder(); releaseEncoder(); } void C2SoftHevcEnc::onRelease() { onStop(); releaseEncoder(); } c2_status_t C2SoftHevcEnc::onFlush_sm() { Loading Loading @@ -865,6 +861,22 @@ void C2SoftHevcEnc::process(const std::unique_ptr<C2Work>& work, return; } } // handle dynamic config parameters { IntfImpl::Lock lock = mIntf->lock(); std::shared_ptr<C2StreamBitrateInfo::output> bitrate = mIntf->getBitrate_l(); lock.unlock(); if (bitrate != mBitrate) { mBitrate = bitrate; mEncParams.s_tgt_lyr_prms.as_tgt_params[0].ai4_tgt_bitrate[0] = mBitrate->value; mEncParams.s_tgt_lyr_prms.as_tgt_params[0].ai4_peak_bitrate[0] = mBitrate->value << 1; } } ihevce_inp_buf_t s_encode_ip{}; ihevce_out_buf_t s_encode_op{}; uint64_t workIndex = work->input.ordinal.frameIndex.peekull(); Loading
media/codec2/sfplugin/C2OMXNode.cpp +20 −14 Original line number Diff line number Diff line Loading @@ -50,14 +50,8 @@ public: } // namespace C2OMXNode::C2OMXNode(const std::shared_ptr<Codec2Client::Component> &comp) : mComp(comp), mFrameIndex(0), mWidth(0), mHeight(0), : mComp(comp), mFrameIndex(0), mWidth(0), mHeight(0), mUsage(0), mAdjustTimestampGapUs(0), mFirstInputFrame(true) { // TODO: read from intf() if (!strncmp(comp->getName().c_str(), "c2.android.", 11)) { mUsage = GRALLOC_USAGE_SW_READ_OFTEN; } else { mUsage = GRALLOC_USAGE_HW_VIDEO_ENCODER; } } status_t C2OMXNode::freeNode() { Loading Loading @@ -103,13 +97,25 @@ status_t C2OMXNode::getParameter(OMX_INDEXTYPE index, void *params, size_t size) } status_t C2OMXNode::setParameter(OMX_INDEXTYPE index, const void *params, size_t size) { if (params == NULL) { return BAD_VALUE; } switch ((uint32_t)index) { case OMX_IndexParamMaxFrameDurationForBitrateControl: // handle max/fixed frame duration control if (index == (OMX_INDEXTYPE)OMX_IndexParamMaxFrameDurationForBitrateControl && params != NULL && size == sizeof(OMX_PARAM_U32TYPE)) { if (size != sizeof(OMX_PARAM_U32TYPE)) { return BAD_VALUE; } // The incoming number is an int32_t contained in OMX_U32. mAdjustTimestampGapUs = (int32_t)((OMX_PARAM_U32TYPE*)params)->nU32; return OK; case OMX_IndexParamConsumerUsageBits: if (size != sizeof(OMX_U32)) { return BAD_VALUE; } mUsage = *((OMX_U32 *)params); return OK; } return ERROR_UNSUPPORTED; } Loading