diff options
author | Bent Bisballe Nyeng <deva@aasimon.org> | 2014-01-06 08:07:56 +0100 |
---|---|---|
committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2014-01-06 08:07:56 +0100 |
commit | 0f900a2b4d7707dddeddadd62ac5a109aed93e7e (patch) | |
tree | c7b125951de8d4e6ee045449d03b3772e84f8bac /test | |
parent | 06cd551da9405a220b170ffaf77d6554cbace69d (diff) |
Fix round robin frame selector. Add l16 and jpeg profiles. Add timestamp to lrtp_enqueue_frame.
Diffstat (limited to 'test')
-rw-r--r-- | test/Makefile.am | 14 | ||||
-rw-r--r-- | test/test1.jpg | bin | 0 -> 7484 bytes | |||
-rw-r--r-- | test/test2.jpg | bin | 0 -> 7728 bytes | |||
-rw-r--r-- | test/test3.jpg | bin | 0 -> 7604 bytes | |||
-rw-r--r-- | test/test4.jpg | bin | 0 -> 7768 bytes | |||
-rw-r--r-- | test/test_amrwb.cc | 18 | ||||
-rw-r--r-- | test/test_asc2bin.cc | 2 | ||||
-rw-r--r-- | test/test_init.cc | 10 | ||||
-rw-r--r-- | test/test_jpeg.cc | 165 | ||||
-rw-r--r-- | test/test_l16.cc | 148 | ||||
-rw-r--r-- | test/test_opus.cc | 27 | ||||
-rw-r--r-- | test/test_raw.cc | 30 | ||||
-rw-r--r-- | test/test_rtp.cc | 2 | ||||
-rw-r--r-- | test/test_srtp.cc | 2 |
14 files changed, 370 insertions, 48 deletions
diff --git a/test/Makefile.am b/test/Makefile.am index b735c3c..00dc707 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -1,7 +1,11 @@ -TESTS = amrwb opus init rtp srtp raw asc2bin +TESTS = jpeg amrwb opus init rtp srtp raw l16 asc2bin framelist check_PROGRAMS = $(TESTS) +jpeg_CXXFLAGS = $(CPPUNIT_CFLAGS) -DOUTPUT=\"jpeg\" -I../src +jpeg_LDFLAGS = $(CPPUNIT_LIBS) -L../src/.libs/ -llrtp +jpeg_SOURCES = test.cc test_jpeg.cc + amrwb_CXXFLAGS = $(CPPUNIT_CFLAGS) -DOUTPUT=\"amrwb\" -I../src amrwb_LDFLAGS = $(CPPUNIT_LIBS) -L../src/.libs/ -llrtp amrwb_SOURCES = test.cc test_amrwb.cc @@ -26,9 +30,17 @@ raw_CXXFLAGS = $(CPPUNIT_CFLAGS) -DOUTPUT=\"raw\" -I../src raw_LDFLAGS = $(CPPUNIT_LIBS) -L../src/.libs/ -llrtp raw_SOURCES = test.cc test_raw.cc +l16_CXXFLAGS = $(CPPUNIT_CFLAGS) -DOUTPUT=\"l16\" -I../src +l16_LDFLAGS = $(CPPUNIT_LIBS) -L../src/.libs/ -llrtp +l16_SOURCES = test.cc test_l16.cc + asc2bin_CXXFLAGS = $(CPPUNIT_CFLAGS) -DOUTPUT=\"asc2bin\" -I../src asc2bin_LDFLAGS = $(CPPUNIT_LIBS) asc2bin_SOURCES = test.cc test_asc2bin.cc +framelist_CXXFLAGS = $(CPPUNIT_CFLAGS) -DOUTPUT=\"framelist\" -I../src +framelist_LDFLAGS = $(CPPUNIT_LIBS) -L../src/.libs/ -llrtp +framelist_SOURCES = test.cc test_framelist.cc + clean-local: -rm -f result_*.xml diff --git a/test/test1.jpg b/test/test1.jpg Binary files differnew file mode 100644 index 0000000..96071a2 --- /dev/null +++ b/test/test1.jpg diff --git a/test/test2.jpg b/test/test2.jpg Binary files differnew file mode 100644 index 0000000..fda292b --- /dev/null +++ b/test/test2.jpg diff --git a/test/test3.jpg b/test/test3.jpg Binary files differnew file mode 100644 index 0000000..ad9ad2d --- /dev/null +++ b/test/test3.jpg diff --git a/test/test4.jpg b/test/test4.jpg Binary files differnew file mode 100644 index 0000000..cc86495 --- /dev/null +++ b/test/test4.jpg diff --git a/test/test_amrwb.cc b/test/test_amrwb.cc index adefda1..d6a0731 100644 --- a/test/test_amrwb.cc +++ b/test/test_amrwb.cc @@ -68,7 +68,7 @@ public: std::vector<std::string> packets; unsigned int csrc = 42; - int sent = 0; + // int sent = 0; size_t num_frames = NUM_PKGS; size_t framesize = wb_frame_size[frame_type_index] * num_frames; @@ -76,24 +76,25 @@ public: { // Encode struct lrtp_t *lrtp = lrtp_init(KEY, SSRC); - struct lrtp_profile_t *profile = + int x = lrtp_create_profile(lrtp, PROFILE_AMRWB, csrc, OPTION_AMRWB_FRAME_TYPE_INDEX, frame_type_index, OPTION_END); + CPPUNIT_ASSERT_EQUAL(0, x); char packet[PKG_SIZE]; - size_t packetsize = sizeof(packet); + //size_t packetsize = sizeof(packet); char cnt = 0; + int timestamp = 0; + for(int i = 0; i < NUM_PKGS; i++) { char frame[wb_frame_size[frame_type_index] * num_frames]; - for(int i = 0; i < framesize; i++) frame[i] = cnt++; - - int timestamp = 0; + for(size_t j = 0; j < framesize; j++) frame[j] = cnt++; - int ret = lrtp_enqueue_frame(profile, frame, framesize); + int ret = lrtp_enqueue_frame(lrtp, csrc, frame, framesize, timestamp++); while( (ret = lrtp_pack(lrtp, packet, sizeof(packet))) != 0) { std::string p; p.append(packet, ret); @@ -108,10 +109,11 @@ public: { // Decode struct lrtp_t *lrtp = lrtp_init(KEY, SSRC); - struct lrtp_profile_t *profile = + int x = lrtp_create_profile(lrtp, PROFILE_AMRWB, csrc, OPTION_AMRWB_FRAME_TYPE_INDEX, frame_type_index, OPTION_END); + CPPUNIT_ASSERT_EQUAL(0, x); char frame[16*1024]; diff --git a/test/test_asc2bin.cc b/test/test_asc2bin.cc index 1663c70..f214a5a 100644 --- a/test/test_asc2bin.cc +++ b/test/test_asc2bin.cc @@ -30,8 +30,6 @@ #include "../src/asc2bin.h" #include "../src/asc2bin.cc" -static int g_i = -1; - class test_asc2bin_class : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(test_asc2bin_class); diff --git a/test/test_init.cc b/test/test_init.cc index 3281183..13ca874 100644 --- a/test/test_init.cc +++ b/test/test_init.cc @@ -50,12 +50,10 @@ public: CPPUNIT_ASSERT(lrtp); unsigned int csrc = 42; - struct lrtp_profile_t *profile = - lrtp_create_profile(lrtp, PROFILE_RAW, csrc, - OPTION_RAW_PKG_SIZE, 100, - OPTION_END); - - CPPUNIT_ASSERT(profile); + int x = lrtp_create_profile(lrtp, PROFILE_RAW, csrc, + OPTION_RAW_PKG_SIZE, 100, + OPTION_END); + CPPUNIT_ASSERT_EQUAL(0, x); lrtp_destroy_profile(lrtp, csrc); diff --git a/test/test_jpeg.cc b/test/test_jpeg.cc new file mode 100644 index 0000000..894ae3a --- /dev/null +++ b/test/test_jpeg.cc @@ -0,0 +1,165 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set et sw=2 ts=2: */ +/*************************************************************************** + * test_jpeg.cc + * + * Wed Dec 18 08:59:12 CET 2013 + * Copyright 2013 Bent Bisballe Nyeng + * deva@aasimon.org + ****************************************************************************/ + +/* + * This file is part of lrtp. + * + * lrtp is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * lrtp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with lrtp; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +#include <cppunit/extensions/HelperMacros.h> + +#include <lrtp.h> + +#include <stdio.h> + +#include <string> +#include <vector> + +#define KEY "123456789012345678901234567890123456789012345678901234567890" +#define SSRC 1234567890 + +class test_jpeg_class : public CppUnit::TestFixture +{ + CPPUNIT_TEST_SUITE(test_jpeg_class); + CPPUNIT_TEST(test_jpeg); + CPPUNIT_TEST_SUITE_END(); + +public: + void setUp() {} + void tearDown() {} + + void test_jpeg() { + + std::vector<std::string> packets; + unsigned int csrc = 42; + + { // Encode + struct lrtp_t *lrtp = lrtp_init(KEY, SSRC); + + int x = lrtp_create_profile(lrtp, PROFILE_JPEG, csrc, + OPTION_END); + CPPUNIT_ASSERT_EQUAL(0, x); + //char num = 0; + + char packet[16*1024]; + + + for(int n = 1; n < 5; n++) { + char filename[32]; + sprintf(filename, "test%d.jpg", n); + + //printf("----------- Image %d -----------\n", n); + + FILE *fp = fopen(filename, "r"); + CPPUNIT_ASSERT(fp); + fseek(fp, 0, SEEK_END); + int imagesize = ftell(fp); + fseek(fp, 0, SEEK_SET); + char *image = (char*)malloc(imagesize); + fread(image, imagesize, 1, fp); + fclose(fp); + + int ret = 0; + ret = lrtp_enqueue_frame(lrtp, csrc, image, imagesize, n); + CPPUNIT_ASSERT_EQUAL(0, ret); + + while( (ret = lrtp_pack(lrtp, packet, sizeof(packet))) != 0) { + std::string p; + p.append(packet, ret); + packets.push_back(p); + //dump("pkg", packet, ret); + } + + free(image); + } + + lrtp_destroy_profile(lrtp, csrc); + + lrtp_close(lrtp); + } + + //printf("\nPackets: %d\n", packets.size()); + + { // Decode + //FILE *fp = fopen("output.jpg", "w"); + + // Write SIO and JFIF from original image: + // fwrite(image, 2 + 16, 1, fp); + + struct lrtp_t *lrtp = lrtp_init(KEY, SSRC); + + int x = lrtp_create_profile(lrtp, PROFILE_JPEG, csrc, + OPTION_END); + CPPUNIT_ASSERT_EQUAL(0, x); + + char frame[16*1024]; + size_t framesize = sizeof(frame); + + //int cnt = 0; + + // int num = 2 + 16; // Skip SOI and JFIF in comparison + + std::vector<std::string>::iterator i = packets.begin(); + while(i != packets.end()) { + size_t packetsize = i->size(); + // printf("unpack sz: %d\n", packetsize); + const char *packet = i->data(); + unsigned int ts; + + framesize = sizeof(frame); + + lrtp_unpack(lrtp, packet, packetsize); + int ret; + while((ret = lrtp_dequeue_frame(lrtp, frame, framesize, &csrc, &ts)) + != 0) { + //printf("Got %d bytes, csrc %d, ts: %d\n", ret, csrc, ts); + + //fwrite(frame, ret, 1, fp); + /* + int err = 0; + for(int i = 0; i < ret; i++) { + err += abs(frame[i] - image[num++]); + } + CPPUNIT_ASSERT_EQUAL(0, err); + */ + //dump("pkg", frame, ret); + } + + i++; + } + + // CPPUNIT_ASSERT_EQUAL((int)imagesize, num); + + lrtp_destroy_profile(lrtp, csrc); + lrtp_close(lrtp); + + //fclose(fp); + } + + //free(image); + } +}; + +// Registers the fixture into the 'registry' +CPPUNIT_TEST_SUITE_REGISTRATION(test_jpeg_class); + + diff --git a/test/test_l16.cc b/test/test_l16.cc new file mode 100644 index 0000000..0cdb4b2 --- /dev/null +++ b/test/test_l16.cc @@ -0,0 +1,148 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set et sw=2 ts=2: */ +/*************************************************************************** + * test_l16.cc + * + * Mon Sep 2 14:02:16 CEST 2013 + * Copyright 2013 Bent Bisballe Nyeng + * deva@aasimon.org + ****************************************************************************/ + +/* + * This file is part of lrtp. + * + * lrtp is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * lrtp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with lrtp; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +#include <cppunit/extensions/HelperMacros.h> + +#include <lrtp.h> + +#include <stdio.h> + +#include <string> +#include <vector> + +#define KEY "123456789012345678901234567890123456789012345678901234567890" +#define SSRC 1234567890 + +class test_conn_class : public CppUnit::TestFixture +{ + CPPUNIT_TEST_SUITE(test_conn_class); + CPPUNIT_TEST(test_l16); + CPPUNIT_TEST_SUITE_END(); + +public: + void setUp() {} + void tearDown() {} + + void test_l16() { + char frame[5]; + int pkg_size = 4; + + std::vector<std::string> packets; + unsigned int csrc = 42; + + CPPUNIT_ASSERT(false); // We need to actually test the profile options here... + + { // Encode + struct lrtp_t *lrtp = lrtp_init(KEY, SSRC); + + /* + OPTION_L16_SAMPLES_PER_CHANNEL_PER_PACKET + OPTION_L16_CHANNELS + OPTION_L16_LITTLE_ENDIAN + */ + + int x = + lrtp_create_profile(lrtp, PROFILE_L16, csrc, + OPTION_L16_SAMPLES_PER_CHANNEL_PER_PACKET, pkg_size, + OPTION_END); + CPPUNIT_ASSERT_EQUAL(0, x); + + char num = 0; + + char packet[16*1024]; + //size_t size = sizeof(packet); + + for(unsigned int ts = 0; ts < 8; ts++) { + + for(size_t i = 0; i < sizeof(frame); i++) frame[i] = num++; + + int ret = 0; + ret = lrtp_enqueue_frame(lrtp, csrc, frame, sizeof(frame), ts); + while( (ret = lrtp_pack(lrtp, packet, sizeof(packet))) != 0) { + std::string p; + p.append(packet, ret); + packets.push_back(p); + //dump("pkg", packet, ret); + } + } + + lrtp_destroy_profile(lrtp, csrc); + + lrtp_close(lrtp); + } + + { // Decode + struct lrtp_t *lrtp = lrtp_init(KEY, SSRC); + + int x = + lrtp_create_profile(lrtp, PROFILE_L16, csrc, + OPTION_L16_SAMPLES_PER_CHANNEL_PER_PACKET, pkg_size, + OPTION_END); + CPPUNIT_ASSERT_EQUAL(0, x); + + char frame[16*1024]; + size_t framesize = sizeof(frame); + + //int cnt = 0; + + char num = 0; + + std::vector<std::string>::iterator i = packets.begin(); + while(i != packets.end()) { + size_t packetsize = i->size(); + // printf("unpack sz: %d\n", packetsize); + const char *packet = i->data(); + unsigned int ts; + + framesize = sizeof(frame); + + lrtp_unpack(lrtp, packet, packetsize); + int ret; + while((ret = lrtp_dequeue_frame(lrtp, frame, framesize, &csrc, &ts)) + != 0) { + //printf("Got %d bytes, csrc %d, ts: %d\n", ret, csrc, ts); + + int err = 0; + for(int i = 0; i < ret; i++) { + err += abs(frame[i] - num++); + } + CPPUNIT_ASSERT_EQUAL(0, err); + + //dump("pkg", frame, ret); + } + + i++; + } + + lrtp_destroy_profile(lrtp, csrc); + lrtp_close(lrtp); + } + } +}; + +// Registers the fixture into the 'registry' +CPPUNIT_TEST_SUITE_REGISTRATION(test_conn_class); diff --git a/test/test_opus.cc b/test/test_opus.cc index ea6a5b4..380e7b9 100644 --- a/test/test_opus.cc +++ b/test/test_opus.cc @@ -81,20 +81,19 @@ public: int32_t lookahead; - size_t ts = 0; + //size_t ts = 0; int sent = 0; { // Encode struct lrtp_t *lrtp = lrtp_init(KEY, SSRC); - struct lrtp_profile_t *profile = - lrtp_create_profile(lrtp, PROFILE_OPUS, csrc, - //OPTION_RAW_PKG_SIZE, pkg_size, - OPTION_END); + int x = lrtp_create_profile(lrtp, PROFILE_OPUS, csrc, + OPTION_END); + CPPUNIT_ASSERT_EQUAL(0, x); char packet[16*1024]; - size_t packetsize = sizeof(packet); + //size_t packetsize = sizeof(packet); int err; OpusEncoder *opus = opus_encoder_create(FS, channels, @@ -108,14 +107,14 @@ public: long long int sin_x = 0; - int cnt = 0; + //int cnt = 0; size_t timestamp = 0; size_t idx = 0; for(unsigned int ts = 0; ts < FS / 10; ts++) { size_t pcmsize = ms[idx] / (48000.0 / FS); // Number of samples pr channel sent += pcmsize; short *pcm = new short[100000/*pcmsize * channels*/]; - for(int i = 0 ; i < pcmsize; i++) { + for(size_t i = 0 ; i < pcmsize; i++) { sin_x++; if((int)sin_x % FS == 0) { @@ -138,7 +137,7 @@ public: printf("Opus error: %s\n", opus_strerror(framesize)); } - int ret = lrtp_enqueue_frame(profile, frame, framesize); + int ret = lrtp_enqueue_frame(lrtp, csrc, frame, framesize, timestamp); while( (ret = lrtp_pack(lrtp, packet, sizeof(packet))) != 0) { std::string p; p.append(packet, ret); @@ -156,15 +155,15 @@ public: { // Decode struct lrtp_t *lrtp = lrtp_init(KEY, SSRC); - struct lrtp_profile_t *profile = - lrtp_create_profile(lrtp, PROFILE_OPUS, csrc, - OPTION_END); + int x = lrtp_create_profile(lrtp, PROFILE_OPUS, csrc, + OPTION_END); + CPPUNIT_ASSERT_EQUAL(0, x); int err; OpusDecoder *opus = opus_decoder_create(FS, channels, &err); CPPUNIT_ASSERT_EQUAL(0, err); - int idx = (sizeof(ms)/sizeof(size_t)) - 1; + //int idx = (sizeof(ms)/sizeof(size_t)) - 1; char frame[16*1024]; @@ -173,7 +172,7 @@ public: long long int errl = 0; long long int errr = 0; - int cnt = 0; + //int cnt = 0; std::vector<std::string>::iterator i = packets.begin(); while(i != packets.end()) { size_t packetsize = i->size(); diff --git a/test/test_raw.cc b/test/test_raw.cc index d3910d3..e219ffa 100644 --- a/test/test_raw.cc +++ b/test/test_raw.cc @@ -1,7 +1,7 @@ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set et sw=2 ts=2: */ /*************************************************************************** - * test_init.cc + * test_raw.cc * * Mon Sep 2 14:02:16 CEST 2013 * Copyright 2013 Bent Bisballe Nyeng @@ -57,22 +57,22 @@ public: { // Encode struct lrtp_t *lrtp = lrtp_init(KEY, SSRC); - struct lrtp_profile_t *profile = - lrtp_create_profile(lrtp, PROFILE_RAW, csrc, - OPTION_RAW_PKG_SIZE, pkg_size, - OPTION_END); - + int x = lrtp_create_profile(lrtp, PROFILE_RAW, csrc, + OPTION_RAW_PKG_SIZE, pkg_size, + OPTION_END); + CPPUNIT_ASSERT_EQUAL(0, x); + char num = 0; char packet[16*1024]; - size_t size = sizeof(packet); + //size_t size = sizeof(packet); for(unsigned int ts = 0; ts < 8; ts++) { - for(int i = 0; i < sizeof(frame); i++) frame[i] = num++; + for(size_t i = 0; i < sizeof(frame); i++) frame[i] = num++; int ret = 0; - ret = lrtp_enqueue_frame(profile, frame, sizeof(frame)); + ret = lrtp_enqueue_frame(lrtp, csrc, frame, sizeof(frame), ts); while( (ret = lrtp_pack(lrtp, packet, sizeof(packet))) != 0) { std::string p; p.append(packet, ret); @@ -89,15 +89,15 @@ public: { // Decode struct lrtp_t *lrtp = lrtp_init(KEY, SSRC); - struct lrtp_profile_t *profile = - lrtp_create_profile(lrtp, PROFILE_RAW, csrc, - OPTION_RAW_PKG_SIZE, pkg_size, - OPTION_END); - + int x = lrtp_create_profile(lrtp, PROFILE_RAW, csrc, + OPTION_RAW_PKG_SIZE, pkg_size, + OPTION_END); + CPPUNIT_ASSERT_EQUAL(0, x); + char frame[16*1024]; size_t framesize = sizeof(frame); - int cnt = 0; + //int cnt = 0; char num = 0; diff --git a/test/test_rtp.cc b/test/test_rtp.cc index 489cd42..4703740 100644 --- a/test/test_rtp.cc +++ b/test/test_rtp.cc @@ -105,7 +105,7 @@ public: CPPUNIT_ASSERT_EQUAL(sz, sz2); int err = 0; - for(int i = 0; i < sz; i++) { + for(size_t i = 0; i < sz; i++) { err += abs(buf[i] - buf2[i]); } CPPUNIT_ASSERT_EQUAL(0, err); diff --git a/test/test_srtp.cc b/test/test_srtp.cc index c7b82e5..7c0dc60 100644 --- a/test/test_srtp.cc +++ b/test/test_srtp.cc @@ -78,7 +78,7 @@ public: CPPUNIT_ASSERT_EQUAL(sz, sz0); int err = 0; - for(int i = 0; i < sz0; i++) { + for(size_t i = 0; i < sz0; i++) { err += abs(buf0[i] - buf[i]); } |