mirror of https://github.com/sipwise/rtpengine.git
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.
60 lines
1.6 KiB
60 lines
1.6 KiB
#include <libavutil/frame.h>
|
|
#include <libavutil/opt.h>
|
|
#include <assert.h>
|
|
#include "resample.h"
|
|
#include "codeclib.h"
|
|
#include "fix_frame_channel_layout.h"
|
|
|
|
void test_1(int in_samples, int in_format, int in_rate, int in_channels, bool no_filter,
|
|
int out_format, int out_rate, int out_channels,
|
|
int out_exp_samples)
|
|
{
|
|
printf("testing %i %i %i %i %i %i %i %i\n", in_samples, in_format, in_rate, in_channels,
|
|
out_format, out_rate, out_channels,
|
|
out_exp_samples);
|
|
|
|
AVFrame *in_f = av_frame_alloc();
|
|
in_f->nb_samples = in_samples;
|
|
in_f->format = in_format;
|
|
in_f->sample_rate = in_rate;
|
|
DEF_CH_LAYOUT(&in_f->CH_LAYOUT, in_channels);
|
|
int ret = av_frame_get_buffer(in_f, 0);
|
|
assert(ret == 0);
|
|
memset(in_f->extended_data[0], 0, in_f->nb_samples * av_get_bytes_per_sample(in_f->format));
|
|
|
|
resample_t resampler;
|
|
ZERO(resampler);
|
|
resampler.no_filter = no_filter;
|
|
|
|
format_t out_fmt = {
|
|
.channels = out_channels,
|
|
.clockrate = out_rate,
|
|
.format = out_format,
|
|
};
|
|
AVFrame *out_f = resample_frame(&resampler, in_f, &out_fmt);
|
|
assert(out_f != NULL);
|
|
|
|
printf("received samples %i\n", out_f->nb_samples);
|
|
assert(out_f->nb_samples == out_exp_samples);
|
|
|
|
av_frame_free(&in_f);
|
|
av_frame_free(&out_f);
|
|
resample_shutdown(&resampler);
|
|
}
|
|
|
|
int main(void) {
|
|
codeclib_init(0);
|
|
|
|
test_1(320, AV_SAMPLE_FMT_S16, 16000, 1, false, AV_SAMPLE_FMT_S16, 8000, 1, 144);
|
|
test_1(160, AV_SAMPLE_FMT_S16, 8000, 1, false, AV_SAMPLE_FMT_S16, 16000, 1, 288);
|
|
|
|
test_1(320, AV_SAMPLE_FMT_S16, 16000, 1, true, AV_SAMPLE_FMT_S16, 8000, 1, 160);
|
|
test_1(160, AV_SAMPLE_FMT_S16, 8000, 1, true, AV_SAMPLE_FMT_S16, 16000, 1, 320);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int get_local_log_level(unsigned int u) {
|
|
return 7;
|
|
}
|