You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.0 KiB
62 lines
2.0 KiB
#include <stddef.h>
|
|
#include <stdio.h>
|
|
#include "oi_codec_sbc.h"
|
|
|
|
#define CODEC_DATA_WORDS(numChannels, numBuffers) \
|
|
(((sizeof(int32_t) * SBC_MAX_BLOCKS * (numChannels)*SBC_MAX_BANDS) + \
|
|
(sizeof(SBC_BUFFER_T) * SBC_MAX_CHANNELS * SBC_MAX_BANDS * (numBuffers)) + \
|
|
(sizeof(uint32_t) - 1)) / \
|
|
sizeof(uint32_t))
|
|
|
|
#define SBC_CODEC_FAST_FILTER_BUFFERS 27
|
|
|
|
#define SBC_MAX_CHANNELS 2
|
|
#define SBC_MAX_BANDS 8
|
|
#define SBC_MAX_BLOCKS 16
|
|
/* Minimum size of the bit allocation pool used to encode the stream */
|
|
#define SBC_MIN_BITPOOL 2
|
|
/* Maximum size of the bit allocation pool used to encode the stream */
|
|
#define SBC_MAX_BITPOOL 250
|
|
#define SBC_MAX_ONE_CHANNEL_BPS 320000
|
|
#define SBC_MAX_TWO_CHANNEL_BPS 512000
|
|
|
|
#define SBC_WBS_BITRATE 62000
|
|
#define SBC_WBS_BITPOOL 27
|
|
#define SBC_WBS_NROF_BLOCKS 16
|
|
#define SBC_WBS_FRAME_LEN 62
|
|
#define SBC_WBS_SAMPLES_PER_FRAME 128
|
|
|
|
#define SBC_HEADER_LEN 4
|
|
#define SBC_MAX_SAMPLES_PER_FRAME (SBC_MAX_BANDS * SBC_MAX_BLOCKS)
|
|
|
|
static OI_CODEC_SBC_DECODER_CONTEXT btif_a2dp_sink_context;
|
|
static uint32_t btif_a2dp_sink_context_data[CODEC_DATA_WORDS(
|
|
2, SBC_CODEC_FAST_FILTER_BUFFERS)];
|
|
|
|
static int16_t
|
|
btif_a2dp_sink_pcm_data[15 * SBC_MAX_SAMPLES_PER_FRAME * SBC_MAX_CHANNELS];
|
|
|
|
int LLVMFuzzerInitialize(int argc, char** argv) {
|
|
(void)argc;
|
|
(void)argv;
|
|
OI_CODEC_SBC_DecoderReset(&btif_a2dp_sink_context,
|
|
btif_a2dp_sink_context_data,
|
|
sizeof(btif_a2dp_sink_context_data), 2, 2, 0);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int LLVMFuzzerTestOneInput(const uint8_t* buf, size_t len) {
|
|
uint32_t pcmBytes, availPcmBytes;
|
|
int16_t* pcmDataPointer =
|
|
btif_a2dp_sink_pcm_data; /* Will be overwritten on next packet receipt */
|
|
availPcmBytes = sizeof(btif_a2dp_sink_pcm_data);
|
|
|
|
pcmBytes = availPcmBytes;
|
|
OI_CODEC_SBC_DecodeFrame(&btif_a2dp_sink_context, (const OI_BYTE**)&buf,
|
|
(uint32_t*)&len, (int16_t*)pcmDataPointer,
|
|
(uint32_t*)&pcmBytes);
|
|
|
|
return 0;
|
|
}
|