Loss rate adaptation for the CELT layer

This commit is contained in:
Jean-Marc Valin 2011-04-25 13:36:14 -04:00
parent fa869134da
commit d2124cdf0d
2 changed files with 8 additions and 3 deletions

2
celt

@ -1 +1 @@
Subproject commit d25dd2bff9f111fcc8d2de802c1cca337db27873 Subproject commit cb73e5ca62f93f530e65b244cf52f905a727d04d

View file

@ -583,7 +583,10 @@ int opus_encoder_ctl(OpusEncoder *st, int request, ...)
case OPUS_SET_PACKET_LOSS_PERC_REQUEST: case OPUS_SET_PACKET_LOSS_PERC_REQUEST:
{ {
int value = va_arg(ap, int); int value = va_arg(ap, int);
if (value < 0 || value > 100)
return OPUS_BAD_ARG;
st->silk_mode.packetLossPercentage = value; st->silk_mode.packetLossPercentage = value;
celt_encoder_ctl(st->celt_enc, CELT_SET_LOSS_PERC(value));
} }
break; break;
case OPUS_GET_PACKET_LOSS_PERC_REQUEST: 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); int value = va_arg(ap, int);
if (value>100 || value<0) if (value>100 || value<0)
return OPUS_BAD_ARG; goto bad_arg;
st->voice_ratio = value; st->voice_ratio = value;
} }
break; break;
@ -635,9 +638,11 @@ int opus_encoder_ctl(OpusEncoder *st, int request, ...)
fprintf(stderr, "unknown opus_encoder_ctl() request: %d", request); fprintf(stderr, "unknown opus_encoder_ctl() request: %d", request);
break; break;
} }
va_end(ap); va_end(ap);
return OPUS_OK; return OPUS_OK;
bad_arg:
va_end(ap);
return OPUS_BAD_ARG;
} }
void opus_encoder_destroy(OpusEncoder *st) void opus_encoder_destroy(OpusEncoder *st)