From 293b3931778d03c2ea97a840549763b0cc65fa21 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Wed, 25 Jun 2025 11:08:57 -0400 Subject: [PATCH] MT#62571 remove output_config from decoder_new Change-Id: I7a15c7657bc3a3492a3e7659b9c3473bb07f5e9a --- recording-daemon/decoder.c | 11 ++++------- recording-daemon/decoder.h | 2 +- recording-daemon/packet.c | 8 ++++---- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/recording-daemon/decoder.c b/recording-daemon/decoder.c index 004b9ac3f..2fa8f840e 100644 --- a/recording-daemon/decoder.c +++ b/recording-daemon/decoder.c @@ -26,7 +26,7 @@ int resample_audio; -decode_t *decoder_new(const char *payload_str, const char *format, int ptime, output_t *outp) { +decode_t *decoder_new(const char *payload_str, const char *format, int ptime, const format_t *dec_format) { char *slash = strchr(payload_str, '/'); if (!slash) { ilog(LOG_WARN, "Invalid payload format: %s", payload_str); @@ -74,12 +74,9 @@ decode_t *decoder_new(const char *payload_str, const char *format, int ptime, ou if (resample_audio) out_format.clockrate = resample_audio; // mono/stereo mixing goes here: out_format.channels = ... - if (outp) { - // if this output has been configured already, re-use the same format - if (outp->requested_format.format != -1) - out_format = outp->requested_format; - output_config(outp, &out_format, &out_format); - } + // if the output has been configured already, re-use the same format + if (dec_format->format != -1) + out_format = *dec_format; else out_format.format = AV_SAMPLE_FMT_S16; // needed for TLS-only scenarios diff --git a/recording-daemon/decoder.h b/recording-daemon/decoder.h index 50a247650..82f9b4a9d 100644 --- a/recording-daemon/decoder.h +++ b/recording-daemon/decoder.h @@ -8,7 +8,7 @@ extern int resample_audio; -decode_t *decoder_new(const char *payload_str, const char *format, int ptime, output_t *); +decode_t *decoder_new(const char *payload_str, const char *format, int ptime, const format_t *); int decoder_input(decode_t *, const str *, unsigned long ts, ssrc_t *); void decoder_free(decode_t *); diff --git a/recording-daemon/packet.c b/recording-daemon/packet.c index b012131ce..e2fa5a096 100644 --- a/recording-daemon/packet.c +++ b/recording-daemon/packet.c @@ -114,12 +114,12 @@ static void packet_decode(ssrc_t *ssrc, packet_t *packet) { dbg("payload type for %u is %s", payload_type, payload_str); pthread_mutex_lock(&mf->mix_lock); - output_t *outp = NULL; + format_t dec_format = { .format = -1 }; if (mf->mix_out) - outp = mf->mix_out; + dec_format = mf->mix_out->requested_format; else if (ssrc->output) - outp = ssrc->output; - ssrc->decoders[payload_type] = decoder_new(payload_str, format, ptime, outp); + dec_format = ssrc->output->requested_format; + ssrc->decoders[payload_type] = decoder_new(payload_str, format, ptime, &dec_format); pthread_mutex_unlock(&mf->mix_lock); if (!ssrc->decoders[payload_type]) { ilog(LOG_WARN, "Cannot decode RTP payload type %u (%s)",