diff options
author | Jean-Marc Valin <jmvalin@amazon.com> | 2022-12-13 02:31:40 -0500 |
---|---|---|
committer | Jean-Marc Valin <jmvalin@amazon.com> | 2022-12-13 02:31:40 -0500 |
commit | ef0edb13776c07a83463f1ea90e2bcd8d76ee092 (patch) | |
tree | f376ff4ecd10ebad2f2e9f85fd3b15bdf3b94f39 | |
parent | 5665b868b4ebeae3d149d8db4465481e2392d789 (diff) | |
download | opus-ef0edb13776c07a83463f1ea90e2bcd8d76ee092.tar.gz |
Adds -lossfile option to opus_demo
-rw-r--r-- | src/opus_demo.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/opus_demo.c b/src/opus_demo.c index c154b98e..50a66db3 100644 --- a/src/opus_demo.c +++ b/src/opus_demo.c @@ -62,7 +62,8 @@ void print_usage( char* argv[] ) fprintf(stderr, "-inbandfec : enable SILK inband FEC\n" ); fprintf(stderr, "-forcemono : force mono encoding, even for stereo input\n" ); fprintf(stderr, "-dtx : enable SILK DTX\n" ); - fprintf(stderr, "-loss <perc> : simulate packet loss, in percent (0-100); default: 0\n" ); + fprintf(stderr, "-loss <perc> : optimize for loss percentage and simulate packet loss, in percent (0-100); default: 0\n" ); + fprintf(stderr, "-lossfile <file> : simulate packet loss, reading loss from file\n" ); } static void int_to_char(opus_uint32 i, unsigned char ch[4]) @@ -264,6 +265,7 @@ int main(int argc, char *argv[]) int delayed_decision=0; int ret = EXIT_FAILURE; int lost_count=0; + FILE *packet_loss_file=NULL; if (argc < 5 ) { @@ -422,6 +424,13 @@ int main(int argc, char *argv[]) } else if( strcmp( argv[ args ], "-loss" ) == 0 ) { packet_loss_perc = atoi( argv[ args + 1 ] ); args += 2; + } else if( strcmp( argv[ args ], "-lossfile" ) == 0 ) { + packet_loss_file = fopen( argv[ args + 1 ], "r" ); + if (packet_loss_file == NULL) { + fprintf(stderr, "failed to open loss file %s\n", argv[ args + 1 ] ); + exit(1); + } + args += 2; } else if( strcmp( argv[ args ], "-sweep" ) == 0 ) { check_encoder_option(decode_only, "-sweep"); sweep_bps = atoi( argv[ args + 1 ] ); @@ -760,7 +769,14 @@ int main(int argc, char *argv[]) } else { int fr; int run_decoder; - lost = len==0 || (packet_loss_perc>0 && rand()%100 < packet_loss_perc); + if (packet_loss_file != NULL) { + if ( fscanf(packet_loss_file, "%d", &lost) != 1) { + lost = 0; + } + } else { + lost = (packet_loss_perc>0) && (rand()%100 < packet_loss_perc); + } + if (len == 0) lost = 1; if (lost) { lost_count++; |