Browse Source

TT#122401 disable sample filter for CN resampler

Change-Id: I42085cc7952d86f2da1efa2d29ea85321b001da4
rfuchs/1283
Richard Fuchs 5 years ago
parent
commit
c7431aa846
5 changed files with 18 additions and 6 deletions
  1. +1
    -0
      lib/codeclib.c
  2. +2
    -0
      lib/codeclib.h
  3. +4
    -0
      lib/resample.c
  4. +3
    -3
      t/auto-daemon-tests-dtx-cn.pl
  5. +8
    -3
      t/test-resample.c

+ 1
- 0
lib/codeclib.c View File

@ -2595,6 +2595,7 @@ static const char *cn_decoder_init(decoder_t *dec, const str *fmtp, const str *o
// the ffmpeg cngdec always runs at 8000
dec->in_format.clockrate = 8000;
dec->in_format.channels = 1;
dec->resampler.no_filter = true;
return avc_decoder_init(dec, fmtp, opts);
}
static int cn_decoder_input(decoder_t *dec, const str *data, GQueue *out) {


+ 2
- 0
lib/codeclib.h View File

@ -38,6 +38,7 @@ INLINE enum media_type codec_get_type(const str *type) {
#include <stdbool.h>
#include <libswresample/swresample.h>
#include <libavcodec/avcodec.h>
#include <libavutil/audio_fifo.h>
@ -174,6 +175,7 @@ struct format_s {
struct resample_s {
SwrContext *swresample;
bool no_filter;
};
enum codec_event {


+ 4
- 0
lib/resample.c View File

@ -43,10 +43,14 @@ resample:
frame->format,
frame->sample_rate,
0, NULL);
err = "failed to alloc resample context";
if (!resample->swresample)
goto err;
if (resample->no_filter)
av_opt_set_int(resample->swresample, "filter_size", 0, AV_OPT_SEARCH_CHILDREN);
err = "failed to init resample context";
if ((errcode = swr_init(resample->swresample)) < 0)
goto err;


+ 3
- 3
t/auto-daemon-tests-dtx-cn.pl View File

@ -273,11 +273,11 @@ snd($sock_a, $port_b, rtp(0, 2001, 4160, 0x5678, "\x40" x 160));
snd($sock_a, $port_b, rtp(0, 2002, 4320, 0x5678, "\x40" x 160));
rcv($sock_b, $port_a, rtpm(9, 2001, 4160, $ssrc, "\xd7\xfe\xd5\xdd\xda\xdc\xdd\xd7\xf9\xd6\xdc\xd7\xf9\xdb\xd9\xff\xd7\xfc\xd6\xfc\xde\xd8\xdd\xd9\xde\xd9\xde\xfe\xd7\xfc\xdb\xdd\xd9\xdd\xff\xd7\xf9\xd9\xdb\xff\xd8\xde\xdd\xfe\xd9\xda\xfc\xdd\xdb\xfc\xfd\xda\xda\xfb\xd9\xdc\xdc\xfe\xda\xdb\xf8\xda\xdd\xda\xfb\xd6\xfe\xdc\xd9\xfe\xd6\xf9\xd9\xdc\xdb\xff\xdb\xdc\xda\xdf\xfe\xd5\xde\xdf\xdf\xdb\xde\xdf\xdb\xdc\xd9\xdd\xda\xfe\xd7\xfe\xd8\xd7\xf9\xd7\xfa\xd5\xdf\xfe\xd3\xf8\xda\xde\xda\xdd\xdc\xd6\xfc\xdc\xd7\xfd\xda\xde\xd8\xd8\xde\xdc\xd9\xdb\xfa\xd5\xd8\xdc\xda\xdf\xde\xdf\xdc\xd3\xfa\xd6\xff\xd9\xde\xde\xd7\xff\xd6\xfe\xd7\xfa\xd8\xd6\xff\xd8\xd9\xdb\xf9\xda\xd7\xff\xd9\xd8\xda\xfa"));
# DTX -> CN
rcv($sock_b, $port_a, rtpm(9, 2002, 4320, $ssrc, "\xd8\xd6\xff\xd9\xd8\xda\xfa\xd8\xd6\xfc\xda\xda\xdc\xdb\xfb\xd3\xfc\xdc\xd5\xdd\xdd\xde\xd8\xda\xfe\xd5\xda\xfd\xdb\xdd\xd8\xdb\xdd\xd8\xda\xfe\xd8\xd8\xd9\xdc\xda\xdd\xde\xdc\xd6\xdc\xd9\xda\xdf\xff\xd7\xde\xd9\xd7\xfe\xd9\xde\xdc\xd8\xd6\xdb\xfc\xda\xdd\xdc\xd7\xdd\xd5\xde\xdf\xfe\xd7\xdc\xd6\xdd\xd9\xde\xfb\xd4\xd7\xff\xd7\xfe\xd9\xfc\xd9\xd5\xdc\xd8\xdc\xdc\xdc\xd9\xd7\xff\xd5\xdb\xf9\xdb\xdd\xd5\xdc\xd8\xd7\xf5\xdb\xde\xd8\xd7\xff\xd6\xf8\xde\xdc\xd5\xd8\xdc\xd7\xf5\xdd\xd9\xd7\xde\xdc\xd5\xfa\xfe\xd6\xdc\xd6\xff\xd6\xf9\xdf\xdc\xd6\xdb\xfe\xd5\xfe\xde\xde\xd8\xd4\x9c\x34\x85\x21\x85\x20\x97\x06\x20\x99\x11\x8e\x29\xb4\x06\xa0"));
rcv($sock_b, $port_a, rtpm(9, 2003, 4480, $ssrc, "\xa8\x0c\x8d\x32\xb6\x08\xb9\x61\x6a\x46\x8a\x27\x93\x27\x9b\x39\xfb\xc8\x6e\x88\x24\xb7\x31\xda\xd3\xed\x46\x6d\xe3\xd9\x79\xcb\x2e\x85\x39\xa3\x6a\xcf\x3b\xd4\xca\xd9\x71\x60\xf8\x4c\xf7\xc5\x53\xe1\x6a\xf5\xdb\x53\x86\x2c\xb6\x24\xbe\x27\x89\x45\x62\xc9\x74\xe6\x72\x4d\xca\x65\x73\xc7\x62\xb7\x1b\x89\x2a\xd4\x51\xe9\x5a\xdc\xfb\xb4\x6d\xca\x35\xdf\x72\xea\xce\x33\xce\x59\x9b\xe4\x64\x51\xd3\x5a\x8c\x73\xee\x6e\x6d\xd6\xc8\x4f\xef\x2f\xfe\x2b\xbd\x7d\x8a\xda\x70\x8f\x2c\xec\x73\xcc\xf6\x6a\x86\x74\xe4\xfb\x53\xfd\x30\x8a\x30\xdf\x6a\xee\x56\x8d\x74\xdd\x1f\x6b\xf7\x54\x8a\x2c\x9c\x67\x96\xdf\x6d\xcf\x4e\x55\xf7\x6b\xf3\x6b\x98\x57"));
rcv($sock_b, $port_a, rtpm(9, 2002, 4320, $ssrc, "\xd8\xd6\xff\xd9\xd8\xda\xfa\xd8\xd6\xfc\xda\xda\xdc\xdb\xfb\xd3\xfc\xdc\xd5\xdd\xdd\xde\xd8\xda\xfe\xd5\xda\xfd\xdb\xdd\xd8\xdb\xdd\xd8\xda\xfe\xd8\xd8\xd9\xdc\xda\xdd\xde\xdc\xd6\xdc\xd9\xda\xdf\xff\xd7\xde\xd9\xd7\xfe\xd9\xde\xdc\xd8\xd6\xdb\xfc\xda\xdd\xdc\xd7\xdd\xd5\xde\xdf\xfe\xd7\xdc\xd6\xdd\xd9\xde\xfb\xd4\xd7\xff\xd7\xfe\xd9\xfc\xd9\xd5\xdc\xd8\xdc\xdc\xdc\xd9\xd7\xff\xd5\xdb\xf9\xdb\xdd\xd5\xdc\xd8\xd7\xf5\xdb\xde\xd8\xd7\xff\xd6\xf8\xde\xdc\xd5\xd8\xdc\xd7\xf5\xdd\xd9\xd7\xde\xdc\xd5\xfa\xfe\xd6\xdc\xd6\xff\xd6\xf9\xdf\xdc\xd6\xdb\xfe\xd5\xfe\xde\xde\xd8\xd4\x9b\x2c\x84\x22\x86\x20\x12\x90\x25\x15\x3c\x93\xaa\x98\x8d\xa6"));
rcv($sock_b, $port_a, rtpm(9, 2003, 4480, $ssrc, "\x94\x9a\x3f\x2f\x17\x53\xb2\xb2\x37\x14\x91\xb1\x5a\x2e\xd9\xbd\xf8\x58\x36\x8b\x66\x94\x37\x9a\x36\x7b\x8a\x73\x6d\x7a\x7c\xd9\x37\x87\xea\xf2\x2e\x96\x33\x92\x11\x9c\x76\x24\xbe\x56\x3a\x89\xd7\x27\xf0\x78\x7b\xd6\x88\x3f\xb8\x26\x98\x2a\x90\xca\x2f\xd7\xf3\x6f\xf3\xd2\x8f\x2f\x79\x90\x2c\xf0\x7b\x8c\x35\x95\x5d\x71\xf6\x9c\x7c\x7d\x37\x8d\x77\xfc\x71\x30\xd7\xfd\xd2\xda\xbe\x27\x30\xd7\xd9\x5d\x90\x36\xef\x76\x78\x5f\x8e\xd6\x76\x71\xfb\x72\xfe\x3e\xcf\xde\x74\x97\xf2\x71\xfa\x90\x38\x2f\x8c\xde\x2a\xdd\xd6\xfc\x74\x92\x35\xbd\x71\x34\xdc\x8f\x73\xdf\x7c\x73\x77\x95\x8f\x70\xff\x2e\xdc\x7f\x34\xd3\x92\xdf\xbb\x70\x74\x2d\xdc\x5c"));
# start audio again
snd($sock_a, $port_b, rtp(0, 2003, 4800, 0x5678, "\x40" x 160));
rcv($sock_b, $port_a, rtpm(9, 2004, 4640, $ssrc, "\x8c\x52\xd6\x27\x73\xce\x7b\xb3\x6b\xdb\x33\xd4\x4f\x17\xd6\x24\x96\xec\xad\xd5\xc9\x37\x59\x53\x67\x6d\xd3\x53\x5f\xb0\xe9\xd1\xcf\x6b\x96\x19\x90\x69\xbf\xf3\x6f\xca\x6f\xba\xf4\xd8\x18\xd7\xef\xed\xdc\x2e\x4f\xd6\x73\xff\x99\x2a\xd0\x3c\x8d\x28\x94\x7a\xe9\xcc\x5f\xcd\x6a\x72\x50\x7d\xf6\x34\x4d\x73\x2a\xd3\x2d\x55\xcc\x6a\xdc\x2d\xb1\x2a\xcd\x37\x98\xd2\xf6\x52\xf1\x69\xd7\x8a\x6d\xde\x6f\xf4\xd3\x6f\x54\x8b\x70\xee\x3e\x4f\xd4\xef\xf5\x5f\xcf\xfd\x29\x99\x7c\x6a\xee\x33\x8a\x7f\x8d\x15\x6e\x28\xf1\x74\x9e\x39\xcb\x38\xee\x5b\x3f\x1c\x7f\x57\x5b\xdd\xde\x5e\x5f\xfe\xdd\x5c\x5b\xdc\xdb\x5d\x5d\xde\xdd\xdc\xdc\x5a\x5c\xda\xdd\xdb"));
rcv($sock_b, $port_a, rtpm(9, 2004, 4640, $ssrc, "\xd0\xd7\x97\x2b\xfa\x94\xfc\x72\x33\x5d\x36\xd6\xd5\xd9\x99\x29\xd8\x72\x34\xda\x8d\x74\xdc\x98\x6e\x71\xd5\xda\xfe\x76\x30\xd5\x94\x70\xdb\xdc\x95\x2c\xdd\x74\x32\x8f\x74\x36\x79\xdb\xdf\x99\x32\x72\x5d\x32\xd3\xd8\x34\xfd\xda\x2d\x93\x78\x91\x2a\xd5\x79\x70\x92\xdd\x96\x6f\x75\x95\xfe\x78\x78\x92\x74\x2c\xd7\x31\xdb\x90\x30\xfd\x73\x75\x2e\xd0\x37\xd9\xd9\x7b\xd9\x79\x2c\xd8\x8e\x70\xdf\x34\x76\x97\x74\xda\x8f\x72\x73\xde\x94\x99\x74\x79\xfe\x94\xfc\x2c\xd9\x7f\x2e\x31\x37\xcd\x7a\xd2\xd9\x73\x2b\x7a\x37\x5c\x38\xce\x37\x75\x7c\x31\x7e\x2c\xd0\x79\xd4\x7a\x94\x75\x2b\x76\x91\xd7\x93\x79\xfd\xde\xff\xfe\xdc\xd9\xda\xdb\x5b\x5c\xdd"));
rtpe_req('delete', 'G.722 DTX', { 'from-tag' => ft() });


+ 8
- 3
t/test-resample.c View File

@ -4,7 +4,7 @@
#include "resample.h"
#include "codeclib.h"
void test_1(int in_samples, int in_format, int in_rate, int in_channels,
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)
{
@ -23,6 +23,8 @@ void test_1(int in_samples, int in_format, int in_rate, int in_channels,
resample_t resampler;
ZERO(resampler);
resampler.no_filter = no_filter;
format_t out_fmt = {
.channels = out_channels,
.clockrate = out_rate,
@ -42,8 +44,11 @@ void test_1(int in_samples, int in_format, int in_rate, int in_channels,
int main(void) {
codeclib_init(0);
test_1(320, AV_SAMPLE_FMT_S16, 16000, 1, AV_SAMPLE_FMT_S16, 8000, 1, 144);
test_1(160, AV_SAMPLE_FMT_S16, 8000, 1, AV_SAMPLE_FMT_S16, 16000, 1, 288);
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;
}


Loading…
Cancel
Save