Commit e448df83 authored by Jean-Marc Valin's avatar Jean-Marc Valin
Browse files

Properly implementing the multistream decoder ctl()s

Not tested
parent 5257e3fe
......@@ -710,26 +710,49 @@ int opus_multistream_decoder_ctl(OpusMSDecoder *st, int request, ...)
ptr = (char*)st + align(sizeof(OpusMSDecoder));
switch (request)
{
default:
case OPUS_GET_BANDWIDTH_REQUEST:
case OPUS_GET_FINAL_RANGE_REQUEST:
{
int s;
/* This only works for int32* params, but that's all we have right now */
opus_uint32 *value = va_arg(ap, opus_uint32*);
for (s=0;s<st->layout.nb_streams;s++)
{
OpusDecoder *enc;
OpusDecoder *dec;
dec = (OpusDecoder*)ptr;
if (s < st->layout.nb_coupled_streams)
ptr += align(coupled_size);
else
ptr += align(mono_size);
ret = opus_decoder_ctl(dec, request, value);
if (ret < 0)
break;
}
}
break;
case OPUS_RESET_STATE:
{
int s;
/* This only works for int32* params, but that's all we have right now */
for (s=0;s<st->layout.nb_streams;s++)
{
OpusDecoder *dec;
enc = (OpusDecoder*)ptr;
dec = (OpusDecoder*)ptr;
if (s < st->layout.nb_coupled_streams)
ptr += align(coupled_size);
else
ptr += align(mono_size);
ret = opus_decoder_ctl(enc, request, value);
ret = opus_decoder_ctl(dec, OPUS_RESET_STATE);
if (ret < 0)
break;
}
}
break;
default:
ret = OPUS_UNIMPLEMENTED;
break;
}
va_end(ap);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment