diff --git a/t/.gitignore b/t/.gitignore index 5fab6dab6..67373fb58 100644 --- a/t/.gitignore +++ b/t/.gitignore @@ -82,3 +82,5 @@ audio_player.c mix_in_x64_avx2.S mix_in_x64_avx512bw.S mix_in_x64_sse2.S +test-amr-decode +test-amr-encode diff --git a/t/Makefile b/t/Makefile index e910ffefc..4e19617ba 100644 --- a/t/Makefile +++ b/t/Makefile @@ -29,7 +29,7 @@ CFLAGS+= $(shell pkg-config --cflags libevent_pthreads) CFLAGS+= $(shell pkg-config xmlrpc_client --cflags 2> /dev/null || xmlrpc-c-config client --cflags) CFLAGS+= $(shell pkg-config xmlrpc --cflags 2> /dev/null) CFLAGS+= $(shell pkg-config xmlrpc_util --cflags 2> /dev/null) -ifeq ($(with_amr_tests),yes) +ifeq ($(RTPENGINE_EXTENDED_TESTS),1) CFLAGS+= -DWITH_AMR_TESTS endif CFLAGS+= $(shell mysql_config --cflags) @@ -72,7 +72,7 @@ ifeq ($(with_transcoding),yes) SRCS+= test-transcode.c test-dtmf-detect.c test-payload-tracker.c test-resample.c test-stats.c SRCS+= spandsp_recv_fax_pcm.c spandsp_recv_fax_t38.c spandsp_send_fax_pcm.c \ spandsp_send_fax_t38.c test-mix-buffer.c -ifeq ($(with_amr_tests),yes) +ifeq ($(RTPENGINE_EXTENDED_TESTS),1) SRCS+= test-amr-decode.c test-amr-encode.c endif LIBSRCS+= codeclib.strhash.c resample.c socket.c streambuf.c dtmflib.c poller.c @@ -99,7 +99,7 @@ include ../lib/common.Makefile TESTS= test-bitstr aes-crypt aead-aes-crypt test-const_str_hash.strhash ifeq ($(with_transcoding),yes) TESTS+= test-transcode test-dtmf-detect test-payload-tracker test-resample test-stats test-mix-buffer -ifeq ($(with_amr_tests),yes) +ifeq ($(RTPENGINE_EXTENDED_TESTS),1) TESTS+= test-amr-decode test-amr-encode endif endif @@ -197,9 +197,11 @@ spandsp_recv_fax_t38: spandsp_recv_fax_t38.o spandsp_raw_fax_tests: spandsp_send_fax_pcm spandsp_recv_fax_pcm spandsp_send_fax_t38 spandsp_recv_fax_t38 -test-amr-decode: test-amr-decode-test.o $(COMMONOBJS) codeclib.strhash.o resample.o dtmflib.o resample.o +test-amr-decode: test-amr-decode.o $(COMMONOBJS) codeclib.strhash.o resample.o dtmflib.o resample.o \ + mvr2s_x64_avx2.o mvr2s_x64_avx512.o -test-amr-encode: test-amr-encode-test.o $(COMMONOBJS) codeclib.strhash.o resample.o dtmflib.o +test-amr-encode: test-amr-encode.o $(COMMONOBJS) codeclib.strhash.o resample.o dtmflib.o \ + mvr2s_x64_avx2.o mvr2s_x64_avx512.o test-dtmf-detect: test-dtmf-detect.o diff --git a/t/test-amr-decode.c b/t/test-amr-decode.c index e085737f9..f27c1d4bb 100644 --- a/t/test-amr-decode.c +++ b/t/test-amr-decode.c @@ -1,39 +1,54 @@ #include "codeclib.h" #include "str.h" +#include "main.h" #include -static void hexdump(const unsigned char *buf, int len) { - for (int i = 0; i < len; i++) +struct rtpengine_config rtpe_config; +struct rtpengine_config initial_rtpe_config; + +static void hexdump(const unsigned char *buf, size_t len) { + for (size_t i = 0; i < len; i++) printf("%02x", buf[i]); printf("\n"); } +struct cb_args { + const unsigned char *expect_s; + size_t expect_len; + const unsigned char *expect2_s; + size_t expect2_len; + bool done; +}; + static int frame_cb(decoder_t *dec, AVFrame *frame, void *u1, void *u2) { - char **expect = u1; - int *expect_len = u2; - assert(expect); - assert(expect_len); - assert(*expect); - if (*expect_len != frame->linesize[0] - || memcmp(frame->data[0], *expect, *expect_len)) + struct cb_args *args = u1; + assert(args); + assert(args->expect_s); + assert(args->expect_len); + if (args->expect_len != frame->linesize[0] + || memcmp(frame->data[0], args->expect_s, args->expect_len)) { + if (!args->expect2_s || args->expect2_len != frame->linesize[0] + || memcmp(frame->data[0], args->expect2_s, args->expect2_len)) + { printf( "packet content mismatch\n" - "expected %i bytes, received %i bytes\n" + "expected %zu bytes, received %i bytes\n" "expected:\n", - *expect_len, frame->linesize[0]); - hexdump((unsigned char *) *expect, *expect_len); - printf("received:\n"); - hexdump((unsigned char *) frame->data[0], frame->linesize[0]); - exit(1); + args->expect_len, frame->linesize[0]); + hexdump(args->expect_s, args->expect_len); + printf("received:\n"); + hexdump((unsigned char *) frame->data[0], frame->linesize[0]); + exit(1); + } } - *expect = NULL; - *expect_len = 0; + args->done = true; return 0; } static void do_test_amr_xx(const char *file, int line, - char *fmtp_s, char *data_s, int data_len, char *expect_s, int expect_len, + char *fmtp_s, char *data_s, int data_len, + struct cb_args args, char *codec, int clockrate) { printf("running test %s:%i\n", file, line); @@ -50,56 +65,77 @@ static void do_test_amr_xx(const char *file, int line, str_init(&fmtp_str, fmtp_s); fmtp = &fmtp_str; } - decoder_t *d = decoder_new_fmtp(def, clockrate, 1, 0, &fmt, fmtp); + decoder_t *d = decoder_new_fmtp(def, clockrate, 1, 0, &fmt, NULL, NULL, fmtp); assert(d); const str data = { data_s, data_len }; - int ret = decoder_input_data(d, &data, 1, frame_cb, &expect_s, &expect_len); + int ret = decoder_input_data(d, &data, 1, frame_cb, &args, NULL); assert(!ret); - assert(expect_s == NULL); + assert(args.done == true); decoder_close(d); printf("test ok: %s:%i\n", file, line); } static void do_test_amr_wb(const char *file, int line, - char *fmtp_s, char *data_s, int data_len, char *expect_s, int expect_len) + char *fmtp_s, char *data_s, size_t data_len, + struct cb_args args) { - do_test_amr_xx(file, line, fmtp_s, data_s, data_len, expect_s, expect_len, + do_test_amr_xx(file, line, fmtp_s, data_s, data_len, + args, "AMR-WB", 16000); } -//static void do_test_amr_nb(const char *file, int line, -// char *fmtp_s, char *data_s, int data_len, char *expect_s, int expect_len) -//{ -// do_test_amr_xx(file, line, fmtp_s, data_s, data_len, expect_s, expect_len, -// "AMR", 8000); -//} +static void do_test_amr_nb(const char *file, int line, + char *fmtp_s, char *data_s, int data_len, + struct cb_args args) +{ + do_test_amr_xx(file, line, fmtp_s, data_s, data_len, + args, + "AMR", 8000); +} -#define do_test_wb(in, out, fmt) \ - do_test_amr_wb(__FILE__, __LINE__, fmt, in, sizeof(in)-1, out, sizeof(out)-1) -#define do_test_nb(in, out, fmt) \ - do_test_amr_nb(__FILE__, __LINE__, fmt, in, sizeof(in)-1, out, sizeof(out)-1) +#define do_test_wb(in, out, out2, fmt) \ + do_test_amr_wb(__FILE__, __LINE__, fmt, in, sizeof(in)-1, \ + (struct cb_args) { \ + .expect_s = (const unsigned char *) out, .expect_len = sizeof(out)-1, \ + .expect2_s = (const unsigned char *) out2, .expect2_len = sizeof(out2)-1, \ + } ) +#define do_test_nb(in, out, out2, fmt) \ + do_test_amr_nb(__FILE__, __LINE__, fmt, in, sizeof(in)-1, \ + (struct cb_args) { \ + .expect_s = (const unsigned char *) out, .expect_len = sizeof(out)-1, \ + .expect2_s = (const unsigned char *) out2, .expect2_len = sizeof(out2)-1, \ + } ) int main(void) { + rtpe_common_config_ptr = &rtpe_config.common; codeclib_init(0); do_test_wb( "\xf0\x44\xf1\x46\x18\x1d\xd1\x57\x23\x13\x42\xf0\x00\x0c\x50\x33\xdd\xff\x0b\x99\x89\x2c\x68\x52\xf8\xf8\xd9\x59\x16\xd7\x45\xe7\x01\xec\x1f\xfe\x5b\xc6\xf9\x01\xa4\xb5\xe0\x6c\x91\x41\xfe\x52\x2c\xce\x44\xbb\x5a\xdf\x76\x29\xf8\xdb\xca\x18\xd6\x50", "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\xff\xff\x02\x00\xff\xff\xff\xff\x02\x00\xfd\xff\x03\x00\x00\x00\xfd\xff\x04\x00\xfc\xff\x02\x00\x01\x00\xfd\xff\x03\x00\xfe\xff\x01\x00\x01\x00\xff\xff\x01\x00\xff\xff\x01\x00\xff\xff\x00\x00\x01\x00\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x01\x00\xfe\xff\x02\x00\xff\xff\xff\xff\x03\x00\xfd\xff\x03\x00\xff\xff\xff\xff\x03\x00\xfe\xff\x01\x00\x00\x00\xff\xff\x02\x00\xfe\xff\x01\x00\x00\x00\xff\xff\x02\x00\xfe\xff\x01\x00\x00\x00\xff\xff\x04\x00\xfe\xff\xfd\xff\x00\x00\x02\x00\xfe\xff\xf8\xff\x01\x00\x04\x00\xff\xff\xff\xff\xfc\xff\x06\x00\x00\x00\xf8\xff\x11\x00\x09\x00\x06\x00\x3f\x00\x37\x00\xf9\xff\x11\x00\x4e\x00\x34\x00\xf4\xff\x17\x00\x5d\x00\x31\x00\xe0\xff\x0b\x00\x71\x00\x42\x00\xd3\xff\x09\x00\x74\x00\x3c\x00\xc8\xff\x03\x00\x78\x00\x35\x00\xbc\xff\xff\xff\x7a\x00\x2e\x00\xb0\xff\x00\x00\x77\x00\x26\x00\xaa\xff\xfc\xff\x78\x00\x1c\x00\xa3\xff\xfe\xff\x72\x00\x14\x00\xa0\xff\xfc\xff\x6f\x00\x09\x00\x8e\xff\xfc\xff\x72\x00\xff\xff\x89\xff\xff\xff\x7e\x00\xfe\xff\x7b\xff\x19\x00\xa9\x00\xfa\xff\x62\xff\x14\x00\xae\x00\xf5\xff\x54\xff\x16\x00\xb6\x00\xe8\xff\x3f\xff\x0b\x00\xb9\x00\xee\xff\x34\xff\xfd\xff\xb8\x00\xe9\xff\x2d\xff\x00\x00\xb8\x00\xe4\xff\x2c\xff\xff\xff\xb9\x00\xdf\xff\x25\xff\xff\xff\xb2\x00\xda\xff\x28\xff\xfc\xff\xae\x00\xd6\xff\x2a\xff\xff\xff\xa5\x00\xd8\xff\x30\xff\xfc\xff\xa1\x00\xd5\xff\x35\xff\xf9\xff\x97\x00\xd4\xff\x37\xff\xfa\xff\x92\x00\xcd\xff\x38\xff\xfe\xff\x8e\x00\xcb\xff\x3e\xff\xfe\xff\x88\x00\xcc\xff\x40\xff\xfa\xff\x89\x00\xcf\xff\x41\xff\xfa\xff\x87\x00\xd0\xff\x44\xff\xfa\xff\x89\x00\xd6\xff\x48\xff\xf9\xff\x88\x00\xdd\xff\x4d\xff\xf2\xff\x81\x00\xde\xff\x54\xff\xf4\xff\x7b\x00\xde\xff\x5c\xff\xf6\xff\x73\x00\xe0\xff\x65\xff\xf6\xff\x6d\x00\xe0\xff\x6f\xff\xf7\xff\x63\x00\xe0\xff\x78\xff\xf7\xff\x5d\x00\xde\xff\x76\xff\xf9\xff\x60\x00\xdf\xff\x7f\xff\xfb\xff\x5c\x00\xe8\xff\x85\xff\xfb\xff\x60\x00\xea\xff\x87\xff\xfe\xff\x63\x00\xee\xff\x8b\xff\x00\x00\x64\x00\xf3\xff\x8d\xff\xfe\xff\x66\x00\xf7\xff\x8f\xff\xfd\xff\x68\x00\xf9\xff\x8c\xff\xfd\xff\x6d\x00\xfc\xff\x8c\xff\xfd\xff\x71\x00\xff\xff\x89\xff\xfe\xff\x75\x00\x02\x00\x88\xff\xfc\xff\x78\x00\x03\x00\x87\xff\xfd\xff\x7b\x00\x03\x00\x86\xff\x00\x00\x7e\x00\x03\x00\x84\xff\xfe\xff\x81\x00\x07\x00\x82\xff\x01\x00\x84\x00\x03\x00\x82\xff\x05\x00\x88\x00\x05\x00\x81\xff\x04\x00\x88\x00\x05\x00\x80\xff\x05\x00\x8a\x00\x05\x00", + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\x00\x00\x00\x00\xfc\xff\x04\x00\xfc\xff\x00\x00\x04\x00\xf0\xff\x14\x00\x64\x00\x48\x00\xa0\xff\x84\xff\x14\x00\x58\x00\x18\x00\xa8\xff\x0c\x00\xc4\x00\x38\x00\x34\xff\x7c\xff\x78\x00\x78\x00\xb8\xff\x80\xff\x40\x00\xa4\x00\xc4\xff\x44\xff\x10\x00\xa8\x00\x0c\x00\x60\xff\xcc\xff\x98\x00\x54\x00\x64\xff\x84\xff\x70\x00\x88\x00\xb0\xff\x6c\xff\x30\x00\x88\x00\xf8\xff\x5c\xff\xec\xff\x9c\x00\x1c\x00\x84\xff\xac\xff\x70\x00\x60\x00\x98\xff\x90\xff\x38\x00\x80\x00\xd8\xff\x78\xff\x08\x00\x78\x00\x14\x00\x84\xff\xd0\xff\x6c\x00\x3c\x00\xa0\xff\xa8\xff\x44\x00\x64\x00\xc8\xff\x94\xff\x14\x00\x6c\x00\x00\x00\x8c\xff\xf0\xff\x58\x00\x2c\x00\xa4\xff\xc0\xff\x4c\x00\x44\x00\xc4\xff\xb0\xff\x28\x00\x38\x00\xfc\xff\xb0\xff\x18\x00\xdc\x00\xfc\x00\x20\x00\x98\xfe\x10\xff\xbc\x00\xe8\x00\xe8\xff\x2c\xff\xf4\xff\xe4\x00\x1c\x00\x14\xff\xa8\xff\xf4\x00\x80\x00\xec\xfe\x90\xff\xdc\x00\x9c\x00\x4c\xff\xd0\xfe\xa4\x00\x60\x01\xa4\xff\xcc\xfe\x1c\x00\xd8\x00\xf8\xff\x44\xff\xc0\xff\x40\x01\x60\x01\xbc\xff\x94\xfe\x48\xff\xbc\x00\xa0\x00\x98\xff\x88\xff\x58\x00\x98\x00\xac\xff\x40\xff\x1c\x00\x94\x00\x00\x00\x2c\xff\xf4\xff\xf8\x00\x20\x00\x24\xff\x50\xff\xa8\x00\xdc\x00\x64\xff\x38\xff\x54\x00\xb8\x00\xd0\xff\x34\xff\xf8\xff\xa4\x00\x44\x00\x40\xff\x9c\xff\xac\x00\x30\x00\xac\xff\x88\xff\x0c\x00\x94\x00\xf0\xff\xac\xff\x08\x00\x04\x00\xf4\xff\x0c\x00\xc8\xff\xe0\xff\xa4\x00\xd0\x00\xe4\xff\x20\xff\x78\xff\x7c\x00\x78\x00\x64\xff\x98\xff\xc8\x00\x24\x01\x2c\x00\x48\xff\x8c\xff\xe8\xff\x0c\x00\xf0\xff\xf8\xff\x4c\x00\x40\x00\xc0\xff\xc8\xff\x0c\x00\xe0\xff\xe8\xff\xec\xff\x2c\x00\x44\x00\xe8\xff\xb8\xff\xc4\xff\xf8\xff\x20\x00\x40\x00\xf4\xff\xa4\xff\xec\xff\x38\x00\x1c\x00\xfc\xff\xa0\xff\x80\x00\xcc\x01\x98\x00\xb4\xfe\x74\xfe\x24\x00\x20\x01\x28\x00\x08\xff\xe0\xff\x30\x01\xf4\xff\xf0\xfe\xbc\xff\xcc\x00\x68\x00\xd4\xfe\x38\xff\x00\x01\x58\x01\x78\xff\x28\xfe\xe4\xff\x3c\x01\x5c\x00\x2c\xff\x94\xff\xcc\x00\x34\x00\x0c\xff\x58\xff\xd8\x00\xe0\x00\x5c\xff\xf8\xfe\x1c\x00\x18\x01\xf0\xff\xe0\xfe\x00\x00\x04\x01\xf4\xff\xe0\xfe\xb8\xff\xf4\x00\xa0\x00\x14\xff\x44\xff\x54\x01\x48\x01\xe4\xfe\x7c\xfe\x6c\x00\x0c\x01\xe8\xff\x30\xff\x08\x00\x08\x01\x40\x00\xac\xff\x90\x00\xa4\x00\x1c\xff\x74\xfe\x3c\x00\x5c\x01\x74\x00\x08\xff\x40\xff\xbc\x00\x88\x00\x64\xff\x78\xff\x68\x00\x6c\x00\x78\xff\x6c\xff\x8c\x00\xc4\x00\x78\xff\x20\xff\xbc\x00\x40\x01\x94\xff\x9c\xfe\xa4\xff\x14\x01\x5c\x00\x3c\xff\x94\x00\xb4\x01\x6c\x00\x48\xfe\x70\xfe\xc8\x00\x7c\x01\x7c\xff", "octet-align=1"); do_test_wb( "\xf4\x7c\x51\x86\x07\x74\x55\xc8\xc4\xd0\xbc\x00\x03\x14\x0c\xf7\x7f\xc2\xe6\x62\x4b\x1a\x14\xbe\x3e\x36\x56\x45\xb5\xd1\x79\xc0\x7b\x07\xff\x96\xf1\xbe\x40\x69\x2d\x78\x1b\x24\x50\x7f\x94\x8b\x33\x91\x2e\xd6\xb7\xdd\x8a\x7e\x36\xf2\x86\x35\x94", "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\xff\xff\x02\x00\xff\xff\xff\xff\x02\x00\xfd\xff\x03\x00\x00\x00\xfd\xff\x04\x00\xfc\xff\x02\x00\x01\x00\xfd\xff\x03\x00\xfe\xff\x01\x00\x01\x00\xff\xff\x01\x00\xff\xff\x01\x00\xff\xff\x00\x00\x01\x00\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x01\x00\xfe\xff\x02\x00\xff\xff\xff\xff\x03\x00\xfd\xff\x03\x00\xff\xff\xff\xff\x03\x00\xfe\xff\x01\x00\x00\x00\xff\xff\x02\x00\xfe\xff\x01\x00\x00\x00\xff\xff\x02\x00\xfe\xff\x01\x00\x00\x00\xff\xff\x04\x00\xfe\xff\xfd\xff\x00\x00\x02\x00\xfe\xff\xf8\xff\x01\x00\x04\x00\xff\xff\xff\xff\xfc\xff\x06\x00\x00\x00\xf8\xff\x11\x00\x09\x00\x06\x00\x3f\x00\x37\x00\xf9\xff\x11\x00\x4e\x00\x34\x00\xf4\xff\x17\x00\x5d\x00\x31\x00\xe0\xff\x0b\x00\x71\x00\x42\x00\xd3\xff\x09\x00\x74\x00\x3c\x00\xc8\xff\x03\x00\x78\x00\x35\x00\xbc\xff\xff\xff\x7a\x00\x2e\x00\xb0\xff\x00\x00\x77\x00\x26\x00\xaa\xff\xfc\xff\x78\x00\x1c\x00\xa3\xff\xfe\xff\x72\x00\x14\x00\xa0\xff\xfc\xff\x6f\x00\x09\x00\x8e\xff\xfc\xff\x72\x00\xff\xff\x89\xff\xff\xff\x7e\x00\xfe\xff\x7b\xff\x19\x00\xa9\x00\xfa\xff\x62\xff\x14\x00\xae\x00\xf5\xff\x54\xff\x16\x00\xb6\x00\xe8\xff\x3f\xff\x0b\x00\xb9\x00\xee\xff\x34\xff\xfd\xff\xb8\x00\xe9\xff\x2d\xff\x00\x00\xb8\x00\xe4\xff\x2c\xff\xff\xff\xb9\x00\xdf\xff\x25\xff\xff\xff\xb2\x00\xda\xff\x28\xff\xfc\xff\xae\x00\xd6\xff\x2a\xff\xff\xff\xa5\x00\xd8\xff\x30\xff\xfc\xff\xa1\x00\xd5\xff\x35\xff\xf9\xff\x97\x00\xd4\xff\x37\xff\xfa\xff\x92\x00\xcd\xff\x38\xff\xfe\xff\x8e\x00\xcb\xff\x3e\xff\xfe\xff\x88\x00\xcc\xff\x40\xff\xfa\xff\x89\x00\xcf\xff\x41\xff\xfa\xff\x87\x00\xd0\xff\x44\xff\xfa\xff\x89\x00\xd6\xff\x48\xff\xf9\xff\x88\x00\xdd\xff\x4d\xff\xf2\xff\x81\x00\xde\xff\x54\xff\xf4\xff\x7b\x00\xde\xff\x5c\xff\xf6\xff\x73\x00\xe0\xff\x65\xff\xf6\xff\x6d\x00\xe0\xff\x6f\xff\xf7\xff\x63\x00\xe0\xff\x78\xff\xf7\xff\x5d\x00\xde\xff\x76\xff\xf9\xff\x60\x00\xdf\xff\x7f\xff\xfb\xff\x5c\x00\xe8\xff\x85\xff\xfb\xff\x60\x00\xea\xff\x87\xff\xfe\xff\x63\x00\xee\xff\x8b\xff\x00\x00\x64\x00\xf3\xff\x8d\xff\xfe\xff\x66\x00\xf7\xff\x8f\xff\xfd\xff\x68\x00\xf9\xff\x8c\xff\xfd\xff\x6d\x00\xfc\xff\x8c\xff\xfd\xff\x71\x00\xff\xff\x89\xff\xfe\xff\x75\x00\x02\x00\x88\xff\xfc\xff\x78\x00\x03\x00\x87\xff\xfd\xff\x7b\x00\x03\x00\x86\xff\x00\x00\x7e\x00\x03\x00\x84\xff\xfe\xff\x81\x00\x07\x00\x82\xff\x01\x00\x84\x00\x03\x00\x82\xff\x05\x00\x88\x00\x05\x00\x81\xff\x04\x00\x88\x00\x05\x00\x80\xff\x05\x00\x8a\x00\x05\x00", + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\x00\x00\x00\x00\xfc\xff\x00\x00\xfc\xff\x00\x00\x00\x00\xfc\xff\x00\x00\xfc\xff\x00\x00\x00\x00\xfc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\x00\x00\xfc\xff\x00\x00\x00\x00\xfc\xff\x00\x00\xfc\xff\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\x00\x00\xfc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\x00\x00\xfc\xff\x00\x00\x00\x00\xfc\xff\x00\x00\xfc\xff\x00\x00\x00\x00\xfc\xff\x00\x00\xf8\xff\x00\x00\x04\x00\xfc\xff\xf8\xff\x00\x00\x04\x00\x00\x00\xfc\xff\xfc\xff\x04\x00\x00\x00\xf8\xff\x10\x00\x08\x00\x04\x00\x40\x00\x34\x00\xf8\xff\x10\x00\x4c\x00\x34\x00\xf4\xff\x14\x00\x5c\x00\x30\x00\xdc\xff\x0c\x00\x70\x00\x40\x00\xd4\xff\x04\x00\x74\x00\x38\x00\xc4\xff\x00\x00\x74\x00\x34\x00\xb8\xff\xfc\xff\x78\x00\x2c\x00\xb0\xff\xfc\xff\x78\x00\x24\x00\xa4\xff\xfc\xff\x74\x00\x18\x00\xa4\xff\xf8\xff\x70\x00\x10\x00\x9c\xff\xfc\xff\x6c\x00\x08\x00\x8c\xff\xf8\xff\x70\x00\x00\x00\x88\xff\xfc\xff\x7c\x00\xfc\xff\x78\xff\x18\x00\xa4\x00\xfc\xff\x60\xff\x10\x00\xac\x00\xf4\xff\x54\xff\x14\x00\xb4\x00\xe8\xff\x40\xff\x08\x00\xb4\x00\xf0\xff\x34\xff\xfc\xff\xb8\x00\xe8\xff\x30\xff\xfc\xff\xb8\x00\xe4\xff\x28\xff\x00\x00\xb4\x00\xe0\xff\x24\xff\xfc\xff\xb4\x00\xd8\xff\x28\xff\xf8\xff\xac\x00\xd8\xff\x24\xff\xfc\xff\xa4\x00\xd8\xff\x30\xff\xf8\xff\xa0\x00\xd4\xff\x30\xff\xf8\xff\x94\x00\xd4\xff\x38\xff\xf8\xff\x94\x00\xcc\xff\x34\xff\xfc\xff\x8c\x00\xcc\xff\x3c\xff\xfc\xff\x88\x00\xcc\xff\x40\xff\xf8\xff\x8c\x00\xd0\xff\x40\xff\xf8\xff\x88\x00\xd0\xff\x40\xff\xf8\xff\x88\x00\xd8\xff\x48\xff\xf8\xff\x88\x00\xe0\xff\x4c\xff\xf0\xff\x84\x00\xe0\xff\x50\xff\xf0\xff\x7c\x00\xe0\xff\x58\xff\xf4\xff\x74\x00\xe0\xff\x64\xff\xf4\xff\x6c\x00\xe4\xff\x6c\xff\xf4\xff\x64\x00\xe0\xff\x74\xff\xf4\xff\x60\x00\xe0\xff\x74\xff\xf8\xff\x64\x00\xe0\xff\x7c\xff\xf8\xff\x5c\x00\xe8\xff\x80\xff\xf8\xff\x64\x00\xec\xff\x84\xff\xf8\xff\x64\x00\xec\xff\x88\xff\xfc\xff\x68\x00\xf4\xff\x88\xff\xfc\xff\x68\x00\xf8\xff\x88\xff\xf8\xff\x6c\x00\xfc\xff\x88\xff\xf8\xff\x74\x00\xfc\xff\x84\xff\xfc\xff\x74\x00\x00\x00\x84\xff\xf8\xff\x78\x00\x04\x00\x80\xff\xf8\xff\x7c\x00\x04\x00\x80\xff\xf8\xff\x80\x00\x04\x00\x7c\xff\xfc\xff\x84\x00\x04\x00\x7c\xff\xf8\xff\x88\x00\x08\x00\x7c\xff\x00\x00\x88\x00\x04\x00\x78\xff\x04\x00\x8c\x00\x04\x00\x78\xff\x04\x00\x90\x00\x04\x00\x78\xff\x00\x00\x90\x00\x04\x00", NULL); do_test_wb( "\xf4\x7c\x51\x86\x07\x74\x55\xc8\xc4\xd0\xbc\x00\x03\x14\x0c\xf7\x7f\xc2\xe6\x62\x4b\x1a\x14\xbe\x3e\x36\x56\x45\xb5\xd1\x79\xc0\x7b\x07\xff\x96\xf1\xbe\x40\x69\x2d\x78\x1b\x24\x50\x7f\x94\x8b\x33\x91\x2e\xd6\xb7\xdd\x8a\x7e\x36\xf2\x86\x35\x94", "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\xff\xff\x02\x00\xff\xff\xff\xff\x02\x00\xfd\xff\x03\x00\x00\x00\xfd\xff\x04\x00\xfc\xff\x02\x00\x01\x00\xfd\xff\x03\x00\xfe\xff\x01\x00\x01\x00\xff\xff\x01\x00\xff\xff\x01\x00\xff\xff\x00\x00\x01\x00\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x01\x00\xfe\xff\x02\x00\xff\xff\xff\xff\x03\x00\xfd\xff\x03\x00\xff\xff\xff\xff\x03\x00\xfe\xff\x01\x00\x00\x00\xff\xff\x02\x00\xfe\xff\x01\x00\x00\x00\xff\xff\x02\x00\xfe\xff\x01\x00\x00\x00\xff\xff\x04\x00\xfe\xff\xfd\xff\x00\x00\x02\x00\xfe\xff\xf8\xff\x01\x00\x04\x00\xff\xff\xff\xff\xfc\xff\x06\x00\x00\x00\xf8\xff\x11\x00\x09\x00\x06\x00\x3f\x00\x37\x00\xf9\xff\x11\x00\x4e\x00\x34\x00\xf4\xff\x17\x00\x5d\x00\x31\x00\xe0\xff\x0b\x00\x71\x00\x42\x00\xd3\xff\x09\x00\x74\x00\x3c\x00\xc8\xff\x03\x00\x78\x00\x35\x00\xbc\xff\xff\xff\x7a\x00\x2e\x00\xb0\xff\x00\x00\x77\x00\x26\x00\xaa\xff\xfc\xff\x78\x00\x1c\x00\xa3\xff\xfe\xff\x72\x00\x14\x00\xa0\xff\xfc\xff\x6f\x00\x09\x00\x8e\xff\xfc\xff\x72\x00\xff\xff\x89\xff\xff\xff\x7e\x00\xfe\xff\x7b\xff\x19\x00\xa9\x00\xfa\xff\x62\xff\x14\x00\xae\x00\xf5\xff\x54\xff\x16\x00\xb6\x00\xe8\xff\x3f\xff\x0b\x00\xb9\x00\xee\xff\x34\xff\xfd\xff\xb8\x00\xe9\xff\x2d\xff\x00\x00\xb8\x00\xe4\xff\x2c\xff\xff\xff\xb9\x00\xdf\xff\x25\xff\xff\xff\xb2\x00\xda\xff\x28\xff\xfc\xff\xae\x00\xd6\xff\x2a\xff\xff\xff\xa5\x00\xd8\xff\x30\xff\xfc\xff\xa1\x00\xd5\xff\x35\xff\xf9\xff\x97\x00\xd4\xff\x37\xff\xfa\xff\x92\x00\xcd\xff\x38\xff\xfe\xff\x8e\x00\xcb\xff\x3e\xff\xfe\xff\x88\x00\xcc\xff\x40\xff\xfa\xff\x89\x00\xcf\xff\x41\xff\xfa\xff\x87\x00\xd0\xff\x44\xff\xfa\xff\x89\x00\xd6\xff\x48\xff\xf9\xff\x88\x00\xdd\xff\x4d\xff\xf2\xff\x81\x00\xde\xff\x54\xff\xf4\xff\x7b\x00\xde\xff\x5c\xff\xf6\xff\x73\x00\xe0\xff\x65\xff\xf6\xff\x6d\x00\xe0\xff\x6f\xff\xf7\xff\x63\x00\xe0\xff\x78\xff\xf7\xff\x5d\x00\xde\xff\x76\xff\xf9\xff\x60\x00\xdf\xff\x7f\xff\xfb\xff\x5c\x00\xe8\xff\x85\xff\xfb\xff\x60\x00\xea\xff\x87\xff\xfe\xff\x63\x00\xee\xff\x8b\xff\x00\x00\x64\x00\xf3\xff\x8d\xff\xfe\xff\x66\x00\xf7\xff\x8f\xff\xfd\xff\x68\x00\xf9\xff\x8c\xff\xfd\xff\x6d\x00\xfc\xff\x8c\xff\xfd\xff\x71\x00\xff\xff\x89\xff\xfe\xff\x75\x00\x02\x00\x88\xff\xfc\xff\x78\x00\x03\x00\x87\xff\xfd\xff\x7b\x00\x03\x00\x86\xff\x00\x00\x7e\x00\x03\x00\x84\xff\xfe\xff\x81\x00\x07\x00\x82\xff\x01\x00\x84\x00\x03\x00\x82\xff\x05\x00\x88\x00\x05\x00\x81\xff\x04\x00\x88\x00\x05\x00\x80\xff\x05\x00\x8a\x00\x05\x00", + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\x00\x00\x00\x00\xfc\xff\x00\x00\xfc\xff\x00\x00\x00\x00\xfc\xff\x00\x00\xfc\xff\x00\x00\x00\x00\xfc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\x00\x00\xfc\xff\x00\x00\x00\x00\xfc\xff\x00\x00\xfc\xff\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\x00\x00\xfc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\x00\x00\xfc\xff\x00\x00\x00\x00\xfc\xff\x00\x00\xfc\xff\x00\x00\x00\x00\xfc\xff\x00\x00\xf8\xff\x00\x00\x04\x00\xfc\xff\xf8\xff\x00\x00\x04\x00\x00\x00\xfc\xff\xfc\xff\x04\x00\x00\x00\xf8\xff\x10\x00\x08\x00\x04\x00\x40\x00\x34\x00\xf8\xff\x10\x00\x4c\x00\x34\x00\xf4\xff\x14\x00\x5c\x00\x30\x00\xdc\xff\x0c\x00\x70\x00\x40\x00\xd4\xff\x04\x00\x74\x00\x38\x00\xc4\xff\x00\x00\x74\x00\x34\x00\xb8\xff\xfc\xff\x78\x00\x2c\x00\xb0\xff\xfc\xff\x78\x00\x24\x00\xa4\xff\xfc\xff\x74\x00\x18\x00\xa4\xff\xf8\xff\x70\x00\x10\x00\x9c\xff\xfc\xff\x6c\x00\x08\x00\x8c\xff\xf8\xff\x70\x00\x00\x00\x88\xff\xfc\xff\x7c\x00\xfc\xff\x78\xff\x18\x00\xa4\x00\xfc\xff\x60\xff\x10\x00\xac\x00\xf4\xff\x54\xff\x14\x00\xb4\x00\xe8\xff\x40\xff\x08\x00\xb4\x00\xf0\xff\x34\xff\xfc\xff\xb8\x00\xe8\xff\x30\xff\xfc\xff\xb8\x00\xe4\xff\x28\xff\x00\x00\xb4\x00\xe0\xff\x24\xff\xfc\xff\xb4\x00\xd8\xff\x28\xff\xf8\xff\xac\x00\xd8\xff\x24\xff\xfc\xff\xa4\x00\xd8\xff\x30\xff\xf8\xff\xa0\x00\xd4\xff\x30\xff\xf8\xff\x94\x00\xd4\xff\x38\xff\xf8\xff\x94\x00\xcc\xff\x34\xff\xfc\xff\x8c\x00\xcc\xff\x3c\xff\xfc\xff\x88\x00\xcc\xff\x40\xff\xf8\xff\x8c\x00\xd0\xff\x40\xff\xf8\xff\x88\x00\xd0\xff\x40\xff\xf8\xff\x88\x00\xd8\xff\x48\xff\xf8\xff\x88\x00\xe0\xff\x4c\xff\xf0\xff\x84\x00\xe0\xff\x50\xff\xf0\xff\x7c\x00\xe0\xff\x58\xff\xf4\xff\x74\x00\xe0\xff\x64\xff\xf4\xff\x6c\x00\xe4\xff\x6c\xff\xf4\xff\x64\x00\xe0\xff\x74\xff\xf4\xff\x60\x00\xe0\xff\x74\xff\xf8\xff\x64\x00\xe0\xff\x7c\xff\xf8\xff\x5c\x00\xe8\xff\x80\xff\xf8\xff\x64\x00\xec\xff\x84\xff\xf8\xff\x64\x00\xec\xff\x88\xff\xfc\xff\x68\x00\xf4\xff\x88\xff\xfc\xff\x68\x00\xf8\xff\x88\xff\xf8\xff\x6c\x00\xfc\xff\x88\xff\xf8\xff\x74\x00\xfc\xff\x84\xff\xfc\xff\x74\x00\x00\x00\x84\xff\xf8\xff\x78\x00\x04\x00\x80\xff\xf8\xff\x7c\x00\x04\x00\x80\xff\xf8\xff\x80\x00\x04\x00\x7c\xff\xfc\xff\x84\x00\x04\x00\x7c\xff\xf8\xff\x88\x00\x08\x00\x7c\xff\x00\x00\x88\x00\x04\x00\x78\xff\x04\x00\x8c\x00\x04\x00\x78\xff\x04\x00\x90\x00\x04\x00\x78\xff\x00\x00\x90\x00\x04\x00", ""); -// do_test_nb( -// "\xf0\x3c\x53\xff\x3a\xe8\x30\x41\xa5\xa8\xa4\x1d\x2f\xf2\x03\x60\x35\xc0\x00\x07\xc5\x53\xf4\xbc\x98\x00\x01\x14\x2f\xf0\x00\x0f\x70", -// "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\xff\xf8\xff\x10\x00\x00\x00\xe8\xff\xf8\xff\x28\x00\x00\x00\xc8\xff\x00\x00\x38\x00\xf8\xff\xb0\xff\x08\x00\x48\x00\xf0\xff\xa8\xff\x08\x00\x60\x00\xf8\xff\x98\xff\x08\x00\x88\x00\xf0\xff\x88\xff\x10\x00\x88\x00\xe8\xff\x70\xff\x18\x00\x80\x00\xd8\xff\x70\xff\x08\x00\x78\x00\xd8\xff\x88\xff\x08\x00\x78\x00\xe8\xff\x90\xff\x10\x00\x70\x00\xe0\xff\x90\xff\x08\x00\x68\x00\xf8\xff\x88\xff\x00\x00\x80\x00\xf8\xff\x88\xff\x00\x00\x80\x00\xf8\xff\x78\xff\x08\x00\x80\x00\xe8\xff\x78\xff\x08\x00\x78\x00\xe0\xff\x88\xff\x10\x00\x70\x00\xe8\xff\x90\xff\x10\x00\x68\x00\xe0\xff\x98\xff\x08\x00\x70\x00\xe8\xff\xa8\xff\xf8\xff\x70\x00\xf0\xff\x98\xff\xf8\xff\x68\x00\x00\x00\x80\xff\xf8\xff\x68\x00\xf8\xff\x90\xff\x00\x00\x70\x00\xf8\xff\x90\xff\x00\x00\x78\x00\xf0\xff\x88\xff\x00\x00\x80\x00\xf8\xff\x80\xff\x00\x00\x88\x00\xf8\xff\x80\xff\xf8\xff\x88\x00\xf8\xff\x70\xff\x00\x00\x80\x00\xf0\xff\x80\xff\xf8\xff\x80\x00\xe8\xff\x80\xff\xf0\xff\x88\x00", -// "octet-align=1"); + do_test_nb( + "\xf0\x3c\x53\xff\x3a\xe8\x30\x41\xa5\xa8\xa4\x1d\x2f\xf2\x03\x60\x35\xc0\x00\x07\xc5\x53\xf4\xbc\x98\x00\x01\x14\x2f\xf0\x00\x0f\x70", + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\xff\xf8\xff\x10\x00\x00\x00\xe8\xff\xf8\xff\x28\x00\x00\x00\xc8\xff\x00\x00\x38\x00\xf8\xff\xb0\xff\x08\x00\x48\x00\xf0\xff\xa8\xff\x08\x00\x60\x00\xf8\xff\x98\xff\x08\x00\x88\x00\xf0\xff\x88\xff\x10\x00\x88\x00\xe8\xff\x70\xff\x18\x00\x80\x00\xd8\xff\x70\xff\x08\x00\x78\x00\xd8\xff\x88\xff\x08\x00\x78\x00\xe8\xff\x90\xff\x10\x00\x70\x00\xe0\xff\x90\xff\x08\x00\x68\x00\xf8\xff\x88\xff\x00\x00\x80\x00\xf8\xff\x88\xff\x00\x00\x80\x00\xf8\xff\x78\xff\x08\x00\x80\x00\xe8\xff\x78\xff\x08\x00\x78\x00\xe0\xff\x88\xff\x10\x00\x70\x00\xe8\xff\x90\xff\x10\x00\x68\x00\xe0\xff\x98\xff\x08\x00\x70\x00\xe8\xff\xa8\xff\xf8\xff\x70\x00\xf0\xff\x98\xff\xf8\xff\x68\x00\x00\x00\x80\xff\xf8\xff\x68\x00\xf8\xff\x90\xff\x00\x00\x70\x00\xf8\xff\x90\xff\x00\x00\x78\x00\xf0\xff\x88\xff\x00\x00\x80\x00\xf8\xff\x80\xff\x00\x00\x88\x00\xf8\xff\x80\xff\xf8\xff\x88\x00\xf8\xff\x70\xff\x00\x00\x80\x00\xf0\xff\x80\xff\xf8\xff\x80\x00\xe8\xff\x80\xff\xf0\xff\x88\x00", + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\xff\xe8\xff\xe8\xff\x00\x00\xf8\xff\xf0\xff\x08\x00\x10\x00\x08\x00\x00\x00\xf8\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\xff\x00\x00\x00\x00\x00\x00\x00\x00\xf8\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\xff\xf8\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\xb8\xff\xf8\xff\x18\x00\x20\x00\x10\x00\xf8\xff\xc8\xff\xc8\xff\x08\x00\x30\x00\x28\x00\x10\x00\xf0\xff\xf8\xff\x08\x00\x10\x00\x10\x00\x08\x00\xf8\xff\xf8\xff\xf8\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\xff\xf8\xff\x60\x00\x98\x00\x48\x00\xf8\xff\xc8\xff\xd0\xff\x10\x00\x18\x00\xe8\xff\xc8\xff\xa8\xff\xb8\xff\xd0\xff\xe0\xff\xe8\xff\xe8\xff\xe8\xff\xe8\xff\xf8\xff\x00\x00\x10\x00\x18\x00\x10\x00\x08\x00\x00\x00\x00\x00\x08\x00\x08\x00\x60\x00\x90\x00\x38\x00\xe8\xff\xb8\xff\xc0\xff\x00\x00\x08\x00\xe0\xff\xc0\xff\xa8\xff\xa8\xff\xc0\xff\xc8\xff\xd0\xff\x10\xff\x78\xfe\xc8\xfe\x40\xff\xd8\xff\x00\x00\x98\xff\x68\xff\x98\xff\xf8\xff\x80\x00\xc0\x00\xc8\x00\xc0\x00\xc0\x00\xd0\x00\xf0\x00\x08\x01\x18\x01\x00\x01\xd0\x00\xa0\x00\x58\x00\x30\x00\x28\x00\x00\x00\xd0\xff\xa0\xff\x70\xff\x58\xff\x58\xff\x48\xff\x10\x00\xa8\x00\x68\x00\x10\x00", + "octet-align=1"); return 0; } + +int get_local_log_level(unsigned int u) { + return -1; +} diff --git a/t/test-amr-encode.c b/t/test-amr-encode.c index d5a24a336..0f612d1b5 100644 --- a/t/test-amr-encode.c +++ b/t/test-amr-encode.c @@ -1,7 +1,12 @@ #include "codeclib.h" #include "str.h" +#include "fix_frame_channel_layout.h" +#include "main.h" #include +struct rtpengine_config rtpe_config; +struct rtpengine_config initial_rtpe_config; + static void hexdump(const unsigned char *buf, int len) { for (int i = 0; i < len; i++) printf("%02x", buf[i]); @@ -19,14 +24,14 @@ static int dec_cb(encoder_t *e, void *u1, void *u2) { int plen = 256; char payload[plen]; str inout = { payload, plen }; - e->def->packetizer(&e->avpkt, buf, &inout, e); + e->def->packetizer(e->avpkt, buf, &inout, e); if (inout.len != *expect_len || memcmp(inout.s, *expect, *expect_len)) { printf( "packet content mismatch\n" - "expected %i bytes, received %i bytes\n" + "expected %i bytes, received %zu bytes\n" "expected:\n", *expect_len, inout.len); hexdump((unsigned char *) *expect, *expect_len); @@ -65,7 +70,7 @@ static void do_test_amr_xx(const char *file, int line, encoder_t *e = encoder_new(); assert(e); format_t actual_fmt; - int ret = encoder_config_fmtp(e, def, bitrate, 20, &fmt, &actual_fmt, fmtp); + int ret = encoder_config_fmtp(e, def, bitrate, 20, &fmt, &fmt, &actual_fmt, NULL, fmtp, NULL); assert(actual_fmt.clockrate == clockrate); assert(actual_fmt.channels == 1); assert(actual_fmt.format == AV_SAMPLE_FMT_S16); @@ -75,7 +80,7 @@ static void do_test_amr_xx(const char *file, int line, frame->nb_samples = 20 * clockrate / 1000; frame->format = actual_fmt.format; frame->sample_rate = actual_fmt.clockrate; - frame->channel_layout = av_get_default_channel_layout(actual_fmt.channels); + DEF_CH_LAYOUT(&frame->CH_LAYOUT, actual_fmt.channels); ret = av_frame_get_buffer(frame, 0); assert(ret >= 0); @@ -118,6 +123,7 @@ static void do_test_amr_nb(const char *file, int line, "\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x01\x00\x01\x01" int main(void) { + rtpe_common_config_ptr = &rtpe_config.common; codeclib_init(0); do_test_wb( @@ -144,3 +150,7 @@ int main(void) { return 0; } + +int get_local_log_level(unsigned int u) { + return -1; +} diff --git a/t/test-transcode.c b/t/test-transcode.c index 0e879c453..81b560534 100644 --- a/t/test-transcode.c +++ b/t/test-transcode.c @@ -121,10 +121,10 @@ static void codec_set(char *c) { while (1) { g_hash_table_replace(flags.codec_set, str_dup(&splitter), str_dup(&s)); - char *c = memrchr(splitter.s, '/', splitter.len); - if (!c) + char *cp = memrchr(splitter.s, '/', splitter.len); + if (!cp) break; - splitter.len = c - splitter.s; + splitter.len = cp - splitter.s; } } #endif @@ -143,6 +143,7 @@ static void codec_set(char *c) { #define sdp_pt_fmt_s(num, codec, clockrate, fmt) sdp_pt_fmt_ch(num, codec, clockrate, 2, fmt) static void __sdp_pt_fmt(int num, str codec, int clockrate, int channels, str full_codec, str full_full, str fmt) { + str *fmtdup = str_dup(&fmt); struct rtp_payload_type pt = (struct rtp_payload_type) { .payload_type = num, .encoding_with_params = full_codec, @@ -151,7 +152,7 @@ static void __sdp_pt_fmt(int num, str codec, int clockrate, int channels, str fu .clock_rate = clockrate, .encoding_parameters = STR_CONST_INIT(""), .channels = channels, - .format_parameters = fmt, + .format_parameters = *fmtdup, .codec_opts = STR_NULL, .rtcp_fb = G_QUEUE_INIT, .ptime = 0, @@ -159,6 +160,7 @@ static void __sdp_pt_fmt(int num, str codec, int clockrate, int channels, str fu .codec_def = NULL, }; codec_store_add_raw(&rtp_types_sp.codecs, rtp_payload_type_dup(&pt)); + free(fmtdup); } #define sdp_pt(num, codec, clockrate) sdp_pt_fmt(num, codec, clockrate, "") @@ -200,14 +202,16 @@ static void __expect(const char *file, int line, GQueue *dumper, const char *cod } #ifdef WITH_AMR_TESTS -#define check_encoder(side, in_pt, out_pt, out_bitrate) \ - __check_encoder(__FILE__, __LINE__, media_ ## side, in_pt, out_pt, out_bitrate) +#define check_encoder(side, otherside, in_pt, out_pt, out_bitrate) \ + __check_encoder(__FILE__, __LINE__, media_ ## side, media_ ## otherside, in_pt, out_pt, out_bitrate) -static void __check_encoder(const char *file, int line, struct call_media *m, int in_pt, int out_pt, +static void __check_encoder(const char *file, int line, struct call_media *m, + struct call_media *out_m, int in_pt, int out_pt, int out_bitrate) { - struct codec_handler *ch = g_hash_table_lookup(m->codec_handlers, GINT_TO_POINTER(in_pt)); + struct codec_handler *ch = codec_handler_lookup(m->codec_handlers, in_pt, out_m); printf("running test %s:%i\n", file, line); + assert(ch); assert(ch->source_pt.payload_type == in_pt); if (ch->dest_pt.payload_type != out_pt || ch->dest_pt.bitrate != out_bitrate) { printf("test failed: %s:%i\n", file, line); @@ -541,15 +545,11 @@ int main(void) { sdp_pt(0, PCMU, 8000); transcode(AMR-WB); offer(); - expect(A, ""); expect(A, "0/PCMU/8000"); - expect(B, "0/PCMU/8000 96/AMR-WB/16000/octet-align=1"); - expect(B, ""); + expect(B, "0/PCMU/8000 96/AMR-WB/16000/octet-align=1;mode-change-capability=2"); sdp_pt_fmt(96, AMR-WB, 16000, "octet-align=1"); answer(); expect(A, "0/PCMU/8000"); - expect(A, "0/PCMU/8000"); - expect(B, "96/AMR-WB/16000/octet-align=1"); expect(B, "96/AMR-WB/16000/octet-align=1"); packet_seq(A, 0, PCMU_payload, 0, 0, -1, ""); // nothing due to resampling buffer packet_seq_nf(A, 0, PCMU_payload, 160, 1, 96, AMR_WB_payload); @@ -562,15 +562,11 @@ int main(void) { sdp_pt_fmt(96, AMR-WB, 16000, "octet-align=1"); transcode(PCMU); offer(); - expect(A, ""); expect(A, "96/AMR-WB/16000/octet-align=1"); expect(B, "96/AMR-WB/16000/octet-align=1 0/PCMU/8000"); - expect(B, ""); sdp_pt(0, PCMU, 8000); answer(); expect(A, "96/AMR-WB/16000/octet-align=1"); - expect(A, "96/AMR-WB/16000/octet-align=1"); - expect(B, "0/PCMU/8000"); expect(B, "0/PCMU/8000"); packet_seq(B, 0, PCMU_payload, 0, 0, -1, ""); // nothing due to resampling buffer packet_seq_nf(B, 0, PCMU_payload, 160, 1, 96, AMR_WB_payload); @@ -583,15 +579,11 @@ int main(void) { sdp_pt(96, AMR-WB, 16000); transcode(PCMU); offer(); - expect(A, ""); expect(A, "96/AMR-WB/16000"); expect(B, "96/AMR-WB/16000 0/PCMU/8000"); - expect(B, ""); sdp_pt(0, PCMU, 8000); answer(); expect(A, "96/AMR-WB/16000"); - expect(A, "96/AMR-WB/16000"); - expect(B, "0/PCMU/8000"); expect(B, "0/PCMU/8000"); packet_seq(B, 0, PCMU_payload, 0, 0, -1, ""); // nothing due to resampling buffer packet_seq_nf(B, 0, PCMU_payload, 160, 1, 96, AMR_WB_payload_noe); @@ -611,18 +603,14 @@ int main(void) { sdp_pt(0, PCMU, 8000); transcode(AMR); offer(); - expect(A, ""); expect(A, "0/PCMU/8000"); - expect(B, "0/PCMU/8000 96/AMR/8000/octet-align=1"); - expect(B, ""); + expect(B, "0/PCMU/8000 96/AMR/8000/octet-align=1;mode-change-capability=2"); sdp_pt_fmt(96, AMR, 8000, "octet-align=1"); answer(); expect(A, "0/PCMU/8000"); - expect(A, "0/PCMU/8000"); expect(B, "96/AMR/8000/octet-align=1"); - expect(B, "96/AMR/8000/octet-align=1"); - check_encoder(A, 0, 96, 0); // uses codec default - check_encoder(B, 96, 0, 0); + check_encoder(A, B, 0, 96, 0); // uses codec default + check_encoder(B, A, 96, 0, 0); end(); // default bitrate reverse @@ -630,18 +618,14 @@ int main(void) { sdp_pt(96, AMR, 8000); transcode(PCMU); offer(); - expect(A, ""); expect(A, "96/AMR/8000"); expect(B, "96/AMR/8000 0/PCMU/8000"); - expect(B, ""); sdp_pt(0, PCMU, 8000); answer(); expect(A, "96/AMR/8000"); - expect(A, "96/AMR/8000"); expect(B, "0/PCMU/8000"); - expect(B, "0/PCMU/8000"); - check_encoder(A, 96, 0, 0); - check_encoder(B, 0, 96, 0); // uses codec default + check_encoder(A, B, 96, 0, 0); + check_encoder(B, A, 0, 96, 0); // uses codec default end(); // specify forward bitrate @@ -649,18 +633,14 @@ int main(void) { sdp_pt(0, PCMU, 8000); transcode(AMR/8000/1/6700); offer(); - expect(A, ""); expect(A, "0/PCMU/8000"); - expect(B, "0/PCMU/8000 96/AMR/8000/octet-align=1"); - expect(B, ""); + expect(B, "0/PCMU/8000 96/AMR/8000/octet-align=1;mode-change-capability=2"); sdp_pt_fmt(96, AMR, 8000, "octet-align=1"); answer(); expect(A, "0/PCMU/8000"); - expect(A, "0/PCMU/8000"); - expect(B, "96/AMR/8000/octet-align=1"); expect(B, "96/AMR/8000/octet-align=1"); - check_encoder(A, 0, 96, 6700); - check_encoder(B, 96, 0, 0); + check_encoder(A, B, 0, 96, 6700); + check_encoder(B, A, 96, 0, 0); end(); // specify non-default forward bitrate @@ -668,18 +648,14 @@ int main(void) { sdp_pt(0, PCMU, 8000); transcode(AMR/8000/1/7400); offer(); - expect(A, ""); expect(A, "0/PCMU/8000"); - expect(B, "0/PCMU/8000 96/AMR/8000/octet-align=1"); - expect(B, ""); + expect(B, "0/PCMU/8000 96/AMR/8000/octet-align=1;mode-change-capability=2"); sdp_pt_fmt(96, AMR, 8000, "octet-align=1"); answer(); expect(A, "0/PCMU/8000"); - expect(A, "0/PCMU/8000"); - expect(B, "96/AMR/8000/octet-align=1"); expect(B, "96/AMR/8000/octet-align=1"); - check_encoder(A, 0, 96, 7400); - check_encoder(B, 96, 0, 0); + check_encoder(A, B, 0, 96, 7400); + check_encoder(B, A, 96, 0, 0); end(); // specify reverse bitrate @@ -688,18 +664,14 @@ int main(void) { transcode(PCMU); codec_set("AMR/8000/1/6700"); offer(); - expect(A, ""); expect(A, "96/AMR/8000"); expect(B, "96/AMR/8000 0/PCMU/8000"); - expect(B, ""); sdp_pt(0, PCMU, 8000); answer(); expect(A, "96/AMR/8000"); - expect(A, "96/AMR/8000"); - expect(B, "0/PCMU/8000"); expect(B, "0/PCMU/8000"); - check_encoder(A, 96, 0, 0); - check_encoder(B, 0, 96, 6700); + check_encoder(A, B, 96, 0, 0); + check_encoder(B, A, 0, 96, 6700); end(); // specify non-default reverse bitrate @@ -708,18 +680,14 @@ int main(void) { transcode(PCMU); codec_set("AMR/8000/1/7400"); offer(); - expect(A, ""); expect(A, "96/AMR/8000"); expect(B, "96/AMR/8000 0/PCMU/8000"); - expect(B, ""); sdp_pt(0, PCMU, 8000); answer(); expect(A, "96/AMR/8000"); - expect(A, "96/AMR/8000"); - expect(B, "0/PCMU/8000"); expect(B, "0/PCMU/8000"); - check_encoder(A, 96, 0, 0); - check_encoder(B, 0, 96, 7400); + check_encoder(A, B, 96, 0, 0); + check_encoder(B, A, 0, 96, 7400); end(); } }