diff options
| -rw-r--r-- | test/test_opus.cc | 29 | 
1 files changed, 20 insertions, 9 deletions
| diff --git a/test/test_opus.cc b/test/test_opus.cc index 68ea0f4..9e41a42 100644 --- a/test/test_opus.cc +++ b/test/test_opus.cc @@ -40,7 +40,7 @@  #define KEY "123456789012345678901234567890123456789012345678901234567890"  #define SSRC 1234567890 -#define FS 8000 +#define FS 48000  #define F1 440  #define AF1 0.3 @@ -127,21 +127,27 @@ int main()                                              OPUS_APPLICATION_AUDIO, &err);      printf("Opus create err: %d\n", err); -    opus_encoder_ctl(opus, OPUS_SET_BITRATE(64000));// [500;512000] +    opus_encoder_ctl(opus, OPUS_SET_BITRATE(32000));// [500;512000]      opus_encoder_ctl(opus, OPUS_SET_COMPLEXITY(10)); // [0;10] -    opus_encoder_ctl(opus, OPUS_SET_SIGNAL(OPUS_SIGNAL_MUSIC));	 +    opus_encoder_ctl(opus, OPUS_SET_SIGNAL(OPUS_AUTO));	 +    //opus_encoder_ctl(opus, OPUS_SET_MAX_BANDWIDTH(OPUS_BANDWIDTH_NARROWBAND));      int cnt = 0;      size_t timestamp = 0; -    for(unsigned int ts = 0; ts < 120; ts++) { +    size_t idx = 0; +    for(unsigned int ts = 0; ts < FS / 10; ts++) {        printf("packet #%d\n", ts); -      size_t idx = rand() % (sizeof(ms)/sizeof(size_t));        printf("idx: %d\n", idx);        size_t pcmsize = ms[idx] / (48000.0 / FS); // Number of samples pr channel        short *pcm = new short[100000/*pcmsize * channels*/];        for(int i = 0 ; i < pcmsize; i++) {          sin_x++; + +        if((int)sin_x % FS == 0) { +          idx++;// = rand() % (sizeof(ms)/sizeof(size_t)); +          idx = idx % (sizeof(ms)/sizeof(size_t)); +        }          double amp1 = sin((2*M_PI/(double)FS)*(double)sin_x * AF1) * SHRT_MAX;          double amp2 = sin((2*M_PI/(double)FS)*(double)sin_x * AF2) * SHRT_MAX; @@ -164,7 +170,8 @@ int main()          printf("Opus error: %s\n", opus_strerror(framesize));	        } -      printf("Opus Packet: %d bytes from %d bytes\n", pcmsize, framesize); +      printf("Opus Packet: %d bytes compressed to %d bytes\n", +             channels * pcmsize * sizeof(short), framesize);        int ret = lrtp_enqueue_frame(profile, frame, framesize);        while( (ret = lrtp_pack(lrtp, packet, sizeof(packet))) != 0) { @@ -209,19 +216,21 @@ int main()        const char *packet = i->data();        unsigned int ts; -      printf("unpack sz: %d - %p\n", packetsize, packet); +      //      printf("unpack sz: %d - %p\n", packetsize, packet);        lrtp_unpack(lrtp, packet, packetsize); +      int n = 0;        int ret;        while((ret = lrtp_dequeue_frame(lrtp, frame, sizeof(frame), &csrc, &ts))              != 0) {          size_t pcmsize = 16*1024;//ms[idx] / (48000 / FS);          short *pcm = new short[pcmsize * channels]; -        printf("pcmsize %d\n", pcmsize); fflush(stdout); +        //printf("pcmsize %d\n", pcmsize); fflush(stdout);          int res = opus_decode(opus, (const unsigned char*)frame, ret,                                pcm, pcmsize, 0); -        printf("Decompressed %d bytes\n", res); +        //        printf("Decompressed %d bytes\n", res); +        n += res;          //      pcmsize = res * channels * sizeof(short);          audio.play((char *)pcm, res * channels * sizeof(short)); @@ -229,6 +238,8 @@ int main()          delete[] pcm;        } +      printf("ratio: %d => %d\n", packetsize, n * channels); +        i++;      } | 
