+void
+ghb_set_audio(signal_user_data_t *ud, GValue *settings)
+{
+ gint acodec_code;
+ GtkWidget *button;
+
+ GValue *alist;
+ GValue *track, *audio, *acodec, *bitrate, *rate, *mix, *drc;
+ gint count, ii;
+
+ g_debug("set_audio");
+ // Clear the audio list
+ ghb_clear_audio_list(ud);
+ button = GHB_WIDGET (ud->builder, "audio_add");
+ alist = ghb_settings_get_value(settings, "audio_list");
+
+ count = ghb_array_len(alist);
+ for (ii = 0; ii < count; ii++)
+ {
+ audio = ghb_array_get_nth(alist, ii);
+ track = ghb_settings_get_value(audio, "AudioTrack");
+ acodec = ghb_settings_get_value(audio, "AudioEncoder");
+ bitrate = ghb_settings_get_value(audio, "AudioBitrate");
+ rate = ghb_settings_get_value(audio, "AudioSamplerate");
+ mix = ghb_settings_get_value(audio, "AudioMixdown");
+ drc = ghb_settings_get_value(audio, "AudioTrackDRCSlider");
+ acodec_code = ghb_lookup_combo_int("AudioEncoder", acodec);
+
+ if (acodec_code != 0)
+ {
+ GValue *settings = ghb_dict_value_new();
+ ghb_settings_set_value(settings, "AudioTrack", track);
+ ghb_settings_set_value(settings, "AudioEncoder", acodec);
+ ghb_settings_set_value(settings, "AudioEncoderActual",
+ ghb_settings_get_value(ud->settings, "AudioEncoderActual"));
+ // This gets set autimatically if the codec is passthru
+ ghb_settings_set_value(settings, "AudioBitrate", bitrate);
+ ghb_settings_set_value(settings, "AudioSamplerate", rate);
+ ghb_settings_set_value(settings, "AudioMixdown", mix);
+ ghb_settings_set_value(settings, "AudioTrackDRCSlider", drc);
+ ghb_add_audio(ud, settings);
+ ghb_adjust_audio_rate_combos(ud);
+ }
+ }
+}
+