Index: tests/test_opus_api.c |
diff --git a/tests/test_opus_api.c b/tests/test_opus_api.c |
index b5348c3ab2dde2f19aaddd1f504bdd15f591851c..c2d7e10381323f013f723ff272c6d037696c242b 100644 |
--- a/tests/test_opus_api.c |
+++ b/tests/test_opus_api.c |
@@ -126,6 +126,9 @@ opus_int32 test_dec_api(void) |
dec = opus_decoder_create(fs, c, &err); |
if(err!=OPUS_BAD_ARG || dec!=NULL)test_failed(); |
cfgs++; |
+ dec = opus_decoder_create(fs, c, 0); |
+ if(dec!=NULL)test_failed(); |
+ cfgs++; |
dec=malloc(opus_decoder_get_size(2)); |
if(dec==NULL)test_failed(); |
err = opus_decoder_init(dec,fs,c); |
@@ -224,12 +227,19 @@ opus_int32 test_dec_api(void) |
VG_UNDEF(packet,sizeof(packet)); |
packet[0]=0; |
if(opus_decoder_get_nb_samples(dec,packet,1)!=480)test_failed(); |
- cfgs++; |
+ if(opus_packet_get_nb_samples(packet,1,48000)!=480)test_failed(); |
+ if(opus_packet_get_nb_samples(packet,1,96000)!=960)test_failed(); |
+ if(opus_packet_get_nb_samples(packet,1,32000)!=320)test_failed(); |
+ if(opus_packet_get_nb_samples(packet,1,8000)!=80)test_failed(); |
+ packet[0]=3; |
+ if(opus_packet_get_nb_samples(packet,1,24000)!=OPUS_INVALID_PACKET)test_failed(); |
packet[0]=(63<<2)|3; |
packet[1]=63; |
+ if(opus_packet_get_nb_samples(packet,0,24000)!=OPUS_BAD_ARG)test_failed(); |
+ if(opus_packet_get_nb_samples(packet,2,48000)!=OPUS_INVALID_PACKET)test_failed(); |
if(opus_decoder_get_nb_samples(dec,packet,2)!=OPUS_INVALID_PACKET)test_failed(); |
- fprintf(stdout," opus_decoder_get_nb_samples() ................ OK.\n"); |
- cfgs++; |
+ fprintf(stdout," opus_{packet,decoder}_get_nb_samples() ....... OK.\n"); |
+ cfgs+=9; |
if(OPUS_BAD_ARG!=opus_packet_get_nb_frames(packet,0))test_failed(); |
for(i=0;i<256;i++) { |
@@ -366,6 +376,9 @@ opus_int32 test_msdec_api(void) |
dec = opus_multistream_decoder_create(fs, c, 1, c-1, mapping, &err); |
if(err!=OPUS_BAD_ARG || dec!=NULL)test_failed(); |
cfgs++; |
+ dec = opus_multistream_decoder_create(fs, c, 1, c-1, mapping, 0); |
+ if(dec!=NULL)test_failed(); |
+ cfgs++; |
dec=malloc(opus_multistream_decoder_get_size(1,1)); |
if(dec==NULL)test_failed(); |
err = opus_multistream_decoder_init(dec,fs,c,1,c-1, mapping); |
@@ -375,116 +388,128 @@ opus_int32 test_msdec_api(void) |
} |
} |
- VG_UNDEF(&err,sizeof(err)); |
- dec = opus_multistream_decoder_create(48000, 2, 1, 0, mapping, &err); |
- VG_CHECK(&err,sizeof(err)); |
- if(err==OPUS_OK || dec!=NULL)test_failed(); |
- cfgs++; |
+ for(c=0;c<2;c++) |
+ { |
+ int *ret_err; |
+ ret_err = c?0:&err; |
- VG_UNDEF(&err,sizeof(err)); |
- mapping[0]=mapping[1]=0; |
- dec = opus_multistream_decoder_create(48000, 2, 1, 0, mapping, &err); |
- VG_CHECK(&err,sizeof(err)); |
- if(err!=OPUS_OK || dec==NULL)test_failed(); |
- cfgs++; |
- opus_multistream_decoder_destroy(dec); |
- cfgs++; |
+ mapping[0]=0; |
+ mapping[1]=1; |
+ for(i=2;i<256;i++)VG_UNDEF(&mapping[i],sizeof(unsigned char)); |
- VG_UNDEF(&err,sizeof(err)); |
- dec = opus_multistream_decoder_create(48000, 1, 4, 1, mapping, &err); |
- VG_CHECK(&err,sizeof(err)); |
- if(err!=OPUS_OK || dec==NULL)test_failed(); |
- cfgs++; |
+ VG_UNDEF(ret_err,sizeof(*ret_err)); |
+ dec = opus_multistream_decoder_create(48000, 2, 1, 0, mapping, ret_err); |
+ if(ret_err){VG_CHECK(ret_err,sizeof(*ret_err));} |
+ if((ret_err && *ret_err!=OPUS_BAD_ARG) || dec!=NULL)test_failed(); |
+ cfgs++; |
- err = opus_multistream_decoder_init(dec,48000, 1, 0, 0, mapping); |
- if(err!=OPUS_BAD_ARG)test_failed(); |
- cfgs++; |
+ VG_UNDEF(ret_err,sizeof(*ret_err)); |
+ mapping[0]=mapping[1]=0; |
+ dec = opus_multistream_decoder_create(48000, 2, 1, 0, mapping, ret_err); |
+ if(ret_err){VG_CHECK(ret_err,sizeof(*ret_err));} |
+ if((ret_err && *ret_err!=OPUS_OK) || dec==NULL)test_failed(); |
+ cfgs++; |
+ opus_multistream_decoder_destroy(dec); |
+ cfgs++; |
- err = opus_multistream_decoder_init(dec,48000, 1, 1, -1, mapping); |
- if(err!=OPUS_BAD_ARG)test_failed(); |
- cfgs++; |
+ VG_UNDEF(ret_err,sizeof(*ret_err)); |
+ dec = opus_multistream_decoder_create(48000, 1, 4, 1, mapping, ret_err); |
+ if(ret_err){VG_CHECK(ret_err,sizeof(*ret_err));} |
+ if((ret_err && *ret_err!=OPUS_OK) || dec==NULL)test_failed(); |
+ cfgs++; |
- opus_multistream_decoder_destroy(dec); |
- cfgs++; |
+ err = opus_multistream_decoder_init(dec,48000, 1, 0, 0, mapping); |
+ if(err!=OPUS_BAD_ARG)test_failed(); |
+ cfgs++; |
- VG_UNDEF(&err,sizeof(err)); |
- dec = opus_multistream_decoder_create(48000, 2, 1, 1, mapping, &err); |
- VG_CHECK(&err,sizeof(err)); |
- if(err!=OPUS_OK || dec==NULL)test_failed(); |
- cfgs++; |
- opus_multistream_decoder_destroy(dec); |
- cfgs++; |
+ err = opus_multistream_decoder_init(dec,48000, 1, 1, -1, mapping); |
+ if(err!=OPUS_BAD_ARG)test_failed(); |
+ cfgs++; |
- VG_UNDEF(&err,sizeof(err)); |
- dec = opus_multistream_decoder_create(48000, 255, 255, 1, mapping, &err); |
- VG_CHECK(&err,sizeof(err)); |
- if(err!=OPUS_BAD_ARG || dec!=NULL)test_failed(); |
- cfgs++; |
+ opus_multistream_decoder_destroy(dec); |
+ cfgs++; |
- VG_UNDEF(&err,sizeof(err)); |
- dec = opus_multistream_decoder_create(48000, -1, 1, 1, mapping, &err); |
- VG_CHECK(&err,sizeof(err)); |
- if(err!=OPUS_BAD_ARG || dec!=NULL)test_failed(); |
- cfgs++; |
+ VG_UNDEF(ret_err,sizeof(*ret_err)); |
+ dec = opus_multistream_decoder_create(48000, 2, 1, 1, mapping, ret_err); |
+ if(ret_err){VG_CHECK(ret_err,sizeof(*ret_err));} |
+ if((ret_err && *ret_err!=OPUS_OK) || dec==NULL)test_failed(); |
+ cfgs++; |
+ opus_multistream_decoder_destroy(dec); |
+ cfgs++; |
- VG_UNDEF(&err,sizeof(err)); |
- dec = opus_multistream_decoder_create(48000, 0, 1, 1, mapping, &err); |
- VG_CHECK(&err,sizeof(err)); |
- if(err!=OPUS_BAD_ARG || dec!=NULL)test_failed(); |
- cfgs++; |
+ VG_UNDEF(ret_err,sizeof(*ret_err)); |
+ dec = opus_multistream_decoder_create(48000, 255, 255, 1, mapping, ret_err); |
+ if(ret_err){VG_CHECK(ret_err,sizeof(*ret_err));} |
+ if((ret_err && *ret_err!=OPUS_BAD_ARG) || dec!=NULL)test_failed(); |
+ cfgs++; |
- VG_UNDEF(&err,sizeof(err)); |
- dec = opus_multistream_decoder_create(48000, 1, -1, 2, mapping, &err); |
- VG_CHECK(&err,sizeof(err)); |
- if(err!=OPUS_BAD_ARG || dec!=NULL)test_failed(); |
- cfgs++; |
+ VG_UNDEF(ret_err,sizeof(*ret_err)); |
+ dec = opus_multistream_decoder_create(48000, -1, 1, 1, mapping, ret_err); |
+ if(ret_err){VG_CHECK(ret_err,sizeof(*ret_err));} |
+ if((ret_err && *ret_err!=OPUS_BAD_ARG) || dec!=NULL)test_failed(); |
+ cfgs++; |
- VG_UNDEF(&err,sizeof(err)); |
- dec = opus_multistream_decoder_create(48000, 1, -1, -1, mapping, &err); |
- VG_CHECK(&err,sizeof(err)); |
- if(err!=OPUS_BAD_ARG || dec!=NULL)test_failed(); |
- cfgs++; |
+ VG_UNDEF(ret_err,sizeof(*ret_err)); |
+ dec = opus_multistream_decoder_create(48000, 0, 1, 1, mapping, ret_err); |
+ if(ret_err){VG_CHECK(ret_err,sizeof(*ret_err));} |
+ if((ret_err && *ret_err!=OPUS_BAD_ARG) || dec!=NULL)test_failed(); |
+ cfgs++; |
- VG_UNDEF(&err,sizeof(err)); |
- dec = opus_multistream_decoder_create(48000, 256, 255, 1, mapping, &err); |
- VG_CHECK(&err,sizeof(err)); |
- if(err!=OPUS_BAD_ARG || dec!=NULL)test_failed(); |
- cfgs++; |
+ VG_UNDEF(ret_err,sizeof(*ret_err)); |
+ dec = opus_multistream_decoder_create(48000, 1, -1, 2, mapping, ret_err); |
+ if(ret_err){VG_CHECK(ret_err,sizeof(*ret_err));} |
+ if((ret_err && *ret_err!=OPUS_BAD_ARG) || dec!=NULL)test_failed(); |
+ cfgs++; |
- VG_UNDEF(&err,sizeof(err)); |
- dec = opus_multistream_decoder_create(48000, 256, 255, 0, mapping, &err); |
- VG_CHECK(&err,sizeof(err)); |
- if(err!=OPUS_BAD_ARG || dec!=NULL)test_failed(); |
- cfgs++; |
+ VG_UNDEF(ret_err,sizeof(*ret_err)); |
+ dec = opus_multistream_decoder_create(48000, 1, -1, -1, mapping, ret_err); |
+ if(ret_err){VG_CHECK(ret_err,sizeof(*ret_err));} |
+ if((ret_err && *ret_err!=OPUS_BAD_ARG) || dec!=NULL)test_failed(); |
+ cfgs++; |
- VG_UNDEF(&err,sizeof(err)); |
- mapping[0]=255; |
- mapping[1]=1; |
- mapping[2]=2; |
- dec = opus_multistream_decoder_create(48000, 3, 2, 0, mapping, &err); |
- VG_CHECK(&err,sizeof(err)); |
- if(err!=OPUS_BAD_ARG || dec!=NULL)test_failed(); |
- cfgs++; |
+ VG_UNDEF(ret_err,sizeof(*ret_err)); |
+ dec = opus_multistream_decoder_create(48000, 256, 255, 1, mapping, ret_err); |
+ if(ret_err){VG_CHECK(ret_err,sizeof(*ret_err));} |
+ if((ret_err && *ret_err!=OPUS_BAD_ARG) || dec!=NULL)test_failed(); |
+ cfgs++; |
- VG_UNDEF(&err,sizeof(err)); |
- mapping[0]=0; |
- mapping[1]=0; |
- mapping[2]=0; |
- dec = opus_multistream_decoder_create(48000, 3, 2, 1, mapping, &err); |
- VG_CHECK(&err,sizeof(err)); |
- if(err!=OPUS_OK || dec==NULL)test_failed(); |
- cfgs++; |
- opus_multistream_decoder_destroy(dec); |
- cfgs++; |
+ VG_UNDEF(ret_err,sizeof(*ret_err)); |
+ dec = opus_multistream_decoder_create(48000, 256, 255, 0, mapping, ret_err); |
+ if(ret_err){VG_CHECK(ret_err,sizeof(*ret_err));} |
+ if((ret_err && *ret_err!=OPUS_BAD_ARG) || dec!=NULL)test_failed(); |
+ cfgs++; |
- mapping[0]=0; |
- mapping[1]=255; |
- mapping[2]=1; |
- mapping[3]=2; |
- mapping[4]=3; |
- dec = opus_multistream_decoder_create(48001, 5, 4, 1, mapping, 0); |
- if(dec!=NULL)test_failed(); |
- cfgs++; |
+ VG_UNDEF(ret_err,sizeof(*ret_err)); |
+ mapping[0]=255; |
+ mapping[1]=1; |
+ mapping[2]=2; |
+ dec = opus_multistream_decoder_create(48000, 3, 2, 0, mapping, ret_err); |
+ if(ret_err){VG_CHECK(ret_err,sizeof(*ret_err));} |
+ if((ret_err && *ret_err!=OPUS_BAD_ARG) || dec!=NULL)test_failed(); |
+ cfgs++; |
+ |
+ VG_UNDEF(ret_err,sizeof(*ret_err)); |
+ mapping[0]=0; |
+ mapping[1]=0; |
+ mapping[2]=0; |
+ dec = opus_multistream_decoder_create(48000, 3, 2, 1, mapping, ret_err); |
+ if(ret_err){VG_CHECK(ret_err,sizeof(*ret_err));} |
+ if((ret_err && *ret_err!=OPUS_OK) || dec==NULL)test_failed(); |
+ cfgs++; |
+ opus_multistream_decoder_destroy(dec); |
+ cfgs++; |
+ |
+ VG_UNDEF(ret_err,sizeof(*ret_err)); |
+ mapping[0]=0; |
+ mapping[1]=255; |
+ mapping[2]=1; |
+ mapping[3]=2; |
+ mapping[4]=3; |
+ dec = opus_multistream_decoder_create(48001, 5, 4, 1, mapping, ret_err); |
+ if(ret_err){VG_CHECK(ret_err,sizeof(*ret_err));} |
+ if((ret_err && *ret_err!=OPUS_BAD_ARG) || dec!=NULL)test_failed(); |
+ cfgs++; |
+ } |
VG_UNDEF(&err,sizeof(err)); |
mapping[0]=0; |
@@ -1061,6 +1086,9 @@ opus_int32 test_enc_api(void) |
enc = opus_encoder_create(fs, c, OPUS_APPLICATION_VOIP, &err); |
if(err!=OPUS_BAD_ARG || enc!=NULL)test_failed(); |
cfgs++; |
+ enc = opus_encoder_create(fs, c, OPUS_APPLICATION_VOIP, 0); |
+ if(enc!=NULL)test_failed(); |
+ cfgs++; |
opus_encoder_destroy(enc); |
enc=malloc(opus_encoder_get_size(2)); |
if(enc==NULL)test_failed(); |
@@ -1538,7 +1566,7 @@ int test_repacketizer_api(void) |
#ifdef MALLOC_FAIL |
/* GLIBC 2.14 declares __malloc_hook as deprecated, generating a warning |
* under GCC. However, this is the cleanest way to test malloc failure |
- * handling in our codebase, and the lack of thread saftey isn't an |
+ * handling in our codebase, and the lack of thread safety isn't an |
* issue here. We therefore disable the warning for this function. |
*/ |
#if OPUS_GNUC_PREREQ(4,6) |