mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-04 03:50:31 +00:00
codec_opus: Fix warning when Opus negotiated but codec_opus not loaded.
When Opus is negotiated but not loaded, the log is spammed with messages because the system does not know how to calculate the number of samples in a frame. * Suppress the warning by supplying a function that assumes 20ms of samples in the frame. For pass through support it doesn't really seem to matter what number of samples is returned anyway. ASTERISK-26605 #close Change-Id: Icf2273692f040dc2c45b01e72a790d11092f9e0f
This commit is contained in:
@@ -729,6 +729,21 @@ static struct ast_codec g719 = {
|
|||||||
.get_length = g719_length,
|
.get_length = g719_length,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static int opus_samples(struct ast_frame *frame)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* XXX This is likely not at all what's intended from this
|
||||||
|
* callback. If you have codec_opus.so loaded then this
|
||||||
|
* function is overridden anyway. However, since opus is
|
||||||
|
* variable bit rate and I cannot extract the calculation code
|
||||||
|
* from the opus library, I am going to punt and assume 20ms
|
||||||
|
* worth of samples. In testing, this has worked just fine.
|
||||||
|
* Pass through support doesn't seem to care about the value
|
||||||
|
* returned anyway.
|
||||||
|
*/
|
||||||
|
return ast_format_get_sample_rate(frame->subclass.format) / 50;
|
||||||
|
}
|
||||||
|
|
||||||
static struct ast_codec opus = {
|
static struct ast_codec opus = {
|
||||||
.name = "opus",
|
.name = "opus",
|
||||||
.description = "Opus Codec",
|
.description = "Opus Codec",
|
||||||
@@ -737,6 +752,7 @@ static struct ast_codec opus = {
|
|||||||
.minimum_ms = 20,
|
.minimum_ms = 20,
|
||||||
.maximum_ms = 60,
|
.maximum_ms = 60,
|
||||||
.default_ms = 20,
|
.default_ms = 20,
|
||||||
|
.samples_count = opus_samples,
|
||||||
.minimum_bytes = 10,
|
.minimum_bytes = 10,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user