From 2846a8c43520fcf8470646fc5f1bb2af23c2483c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=BE=E6=9C=89=E6=9E=97?= <15945141+zeng-youlin@user.noreply.gitee.com> Date: Mon, 8 Sep 2025 07:01:45 +0000 Subject: [PATCH] add test/fuzztest/audiodecoderaac_fuzzer/audio_decoder_aac_new_demo.h. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 曾有林 <15945141+zeng-youlin@user.noreply.gitee.com> --- .../audio_decoder_aac_new_demo.h | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 test/fuzztest/audiodecoderaac_fuzzer/audio_decoder_aac_new_demo.h diff --git a/test/fuzztest/audiodecoderaac_fuzzer/audio_decoder_aac_new_demo.h b/test/fuzztest/audiodecoderaac_fuzzer/audio_decoder_aac_new_demo.h new file mode 100644 index 000000000..95a91f349 --- /dev/null +++ b/test/fuzztest/audiodecoderaac_fuzzer/audio_decoder_aac_new_demo.h @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef AVCODEC_AUDIO_AVBUFFER_DECODER_NEW_DEMO_H +#define AVCODEC_AUDIO_AVBUFFER_DECODER_NEW_DEMO_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "native_avcodec_audiocodec.h" +#include "nocopyable.h" +#include "common/native_mfmagic.h" +#include "avcodec_audio_common.h" + +namespace OHOS { +namespace MediaAVCodec { +namespace AudioBufferNewDemo { + +using namespace std; +using namespace OHOS::Media; + +class ADecBufferSignal { +public: + std::mutex inMutex_; + std::mutex outMutex_; + std::mutex startMutex_; + std::condition_variable inCond_; + std::condition_variable outCond_; + std::condition_variable startCond_; + std::queue inQueue_; + std::queue outQueue_; + std::queue inBufferQueue_; + std::queue outBufferQueue_; +}; + +class AacFuzzDemo : public NoCopyable { +public: + void RandomSetMeta(const uint8_t *data); + bool DoAacParserWithParserAPI(const uint8_t *data, size_t size); +private: + void WriteData(); + + OH_AVErrCode Start(); + OH_AVErrCode Stop(); + OH_AVErrCode Flush(); + OH_AVErrCode Reset(); + int32_t Release(); + void InputFunc(); + void OutputFunc(); + + int32_t decodeMaxInput; + int32_t decodeMaxOutput; + shared_ptr inputBuffer; + shared_ptr outputBuffer; + OH_AVCodec *audioDec_; + struct OH_AVCodecCallback cb_; + ADecBufferSignal *signal_; + OH_AVFormat *format; + std::atomic isRunning_ = false; + std::unique_ptr inputLoop_; + std::unique_ptr outputLoop_; + const uint8_t *data_; + size_t size_; +}; +} // namespace AudioBufferNewDemo +} // namespace MediaAVCodec +} // namespace OHOS +#endif // AVCODEC_AUDIO_AVBUFFER_DECODER_NEW_DEMO_H \ No newline at end of file -- Gitee