From d2124cdf0dce5389f2a627ef69a99c4f25fc7209 Mon Sep 17 00:00:00 2001 From: Jean-Marc Valin <jean-marc.valin@octasic.com> Date: Mon, 25 Apr 2011 13:36:14 -0400 Subject: [PATCH] Loss rate adaptation for the CELT layer --- celt | 2 +- src/opus_encoder.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/celt b/celt index d25dd2bff..cb73e5ca6 160000 --- a/celt +++ b/celt @@ -1 +1 @@ -Subproject commit d25dd2bff9f111fcc8d2de802c1cca337db27873 +Subproject commit cb73e5ca62f93f530e65b244cf52f905a727d04d diff --git a/src/opus_encoder.c b/src/opus_encoder.c index 1872fe9af..cf0eee178 100644 --- a/src/opus_encoder.c +++ b/src/opus_encoder.c @@ -583,7 +583,10 @@ int opus_encoder_ctl(OpusEncoder *st, int request, ...) case OPUS_SET_PACKET_LOSS_PERC_REQUEST: { int value = va_arg(ap, int); + if (value < 0 || value > 100) + return OPUS_BAD_ARG; st->silk_mode.packetLossPercentage = value; + celt_encoder_ctl(st->celt_enc, CELT_SET_LOSS_PERC(value)); } break; case OPUS_GET_PACKET_LOSS_PERC_REQUEST: @@ -609,7 +612,7 @@ int opus_encoder_ctl(OpusEncoder *st, int request, ...) { int value = va_arg(ap, int); if (value>100 || value<0) - return OPUS_BAD_ARG; + goto bad_arg; st->voice_ratio = value; } break; @@ -635,9 +638,11 @@ int opus_encoder_ctl(OpusEncoder *st, int request, ...) fprintf(stderr, "unknown opus_encoder_ctl() request: %d", request); break; } - va_end(ap); return OPUS_OK; +bad_arg: + va_end(ap); + return OPUS_BAD_ARG; } void opus_encoder_destroy(OpusEncoder *st) -- GitLab