+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)
+ {
+ // Add to audio list
+ g_signal_emit_by_name(button, "clicked", ud);
+ ghb_ui_update(ud, "AudioTrack", track);
+ ghb_ui_update(ud, "AudioEncoder", acodec);
+ if (!ghb_audio_is_passthru (acodec_code))
+ {
+ // This gets set autimatically if the codec is passthru
+ ghb_ui_update(ud, "AudioBitrate", bitrate);
+ ghb_ui_update(ud, "AudioSamplerate", rate);
+ ghb_ui_update(ud, "AudioMixdown", mix);
+ }
+ ghb_ui_update(ud, "AudioTrackDRCSlider", drc);
+ }
+ }
+}
+