aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Marc Valin <jmvalin@jmvalin.ca>2024-02-20 20:54:13 -0500
committerJean-Marc Valin <jmvalin@jmvalin.ca>2024-02-20 20:54:13 -0500
commit57901a6758c3bdc7481d61669812bde13d2085b8 (patch)
tree330c194b04be1683e4d21e3f930caa1c0d157ced
parent6ac0c87112804e963d28cd1ff6510e80b210de4c (diff)
downloadlibopus-57901a6758c3bdc7481d61669812bde13d2085b8.tar.gz
opus_dred_parse() sets dred_end to 0 when no DRED
Also, fix documentation about return value of zero.
-rw-r--r--include/opus.h2
-rw-r--r--src/opus_decoder.c1
2 files changed, 2 insertions, 1 deletions
diff --git a/include/opus.h b/include/opus.h
index 699fbc6c..bd5c7410 100644
--- a/include/opus.h
+++ b/include/opus.h
@@ -583,7 +583,7 @@ OPUS_EXPORT void opus_dred_free(OpusDRED *dec);
* @param [in] sampling_rate <tt>opus_int32</tt>: Sampling rate used for max_dred_samples argument. Needs not match the actual sampling rate of the decoder.
* @param [out] dred_end <tt>opus_int32*</tt>: Number of non-encoded (silence) samples between the DRED timestamp and the last DRED sample.
* @param [in] defer_processing <tt>int</tt>: Flag (0 or 1). If set to one, the CPU-intensive part of the DRED decoding is deferred until opus_dred_process() is called.
- * @returns Offset (positive) of the first decoded DRED samples or @ref opus_errorcodes
+ * @returns Offset (positive) of the first decoded DRED samples, zero if no DRED is present, or @ref opus_errorcodes
*/
OPUS_EXPORT int opus_dred_parse(OpusDREDDecoder *dred_dec, OpusDRED *dred, const unsigned char *data, opus_int32 len, opus_int32 max_dred_samples, opus_int32 sampling_rate, int *dred_end, int defer_processing) OPUS_ARG_NONNULL(1);
diff --git a/src/opus_decoder.c b/src/opus_decoder.c
index 008b97ff..b57c8094 100644
--- a/src/opus_decoder.c
+++ b/src/opus_decoder.c
@@ -1420,6 +1420,7 @@ int opus_dred_parse(OpusDREDDecoder *dred_dec, OpusDRED *dred, const unsigned ch
if (dred_end) *dred_end = IMAX(0, -dred->dred_offset*sampling_rate/400);
return IMAX(0, dred->nb_latents*sampling_rate/25 - dred->dred_offset* sampling_rate/400);
}
+ if (dred_end) *dred_end = 0;
return 0;
#else
(void)dred_dec;