MT#62571 remove output_config from decoder_new

Change-Id: I7a15c7657bc3a3492a3e7659b9c3473bb07f5e9a
pull/1967/head
Richard Fuchs 7 months ago
parent fb2b6986bb
commit 293b393177

@ -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

@ -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 *);

@ -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)",

Loading…
Cancel
Save