/* --- Called when sampling rate changes --- */ EXPORT void CALL AiDacrateChanged( int SystemType ) { int f = GameFreq; if (!l_PluginInit) return; if (*AudioInfo.AI_DACRATE_REG == 0) { f = DEFAULT_FREQUENCY; } else { switch (SystemType) { case SYSTEM_NTSC: f = 48681812 / (*AudioInfo.AI_DACRATE_REG + 1); break; case SYSTEM_PAL: f = 49656530 / (*AudioInfo.AI_DACRATE_REG + 1); break; case SYSTEM_MPAL: f = 48628316 / (*AudioInfo.AI_DACRATE_REG + 1); break; } } SetSamplingRate(f); }
EXPORT int CALL RomOpen(void) { if (!l_PluginInit) return 0; SetSamplingRate(GameFreq); SetBufferSize(DEFAULT_BUFFER_SIZE); return 1; }
void CreateAudioDialog (void) { GtkWidget* hbox; GtkWidget* vbox; GtkWidget* hbox2; GtkWidget* label; GtkWidget* button; const char *audioEncoder; SDL_LockMutex(dialog_mutex); if (dialog != NULL) { SDL_UnlockMutex(dialog_mutex); return; } SDL_UnlockMutex(dialog_mutex); pAudioCaps = MyConfig->m_audioCapabilities; dialog = gtk_dialog_new(); gtk_signal_connect(GTK_OBJECT(dialog), "destroy", GTK_SIGNAL_FUNC(on_destroy_dialog), &dialog); gtk_window_set_title(GTK_WINDOW(dialog), "Audio Settings"); gtk_window_set_modal(GTK_WINDOW(dialog), TRUE); hbox = gtk_hbox_new(FALSE, 1); gtk_widget_show(hbox); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), hbox, FALSE, FALSE, 5); vbox = gtk_vbox_new(TRUE, 1); gtk_widget_show(vbox); gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 5); label = gtk_label_new(" Source:"); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); input_label = gtk_label_new(" Input Port:"); gtk_misc_set_alignment(GTK_MISC(input_label), 0.0, 0.5); gtk_box_pack_start(GTK_BOX(vbox), input_label, FALSE, FALSE, 0); track_label = gtk_label_new(" Track:"); gtk_misc_set_alignment(GTK_MISC(track_label), 0.0, 0.5); gtk_box_pack_start(GTK_BOX(vbox), track_label, FALSE, FALSE, 0); label = gtk_label_new(" Output:"); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); label = gtk_label_new(" Encoding :"); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); label = gtk_label_new(" Channels:"); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); label = gtk_label_new(" Sampling Rate (Hz):"); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); label = gtk_label_new(" Bit Rate (bps):"); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); vbox = gtk_vbox_new(TRUE, 1); gtk_widget_show(vbox); gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 5); hbox2 = gtk_hbox_new(FALSE, 1); gtk_widget_show(hbox2); gtk_box_pack_start(GTK_BOX(vbox), hbox2, FALSE, FALSE, 0); source_type = MyConfig->GetStringValue(CONFIG_AUDIO_SOURCE_TYPE); // source entry free(source_name); source_name = strdup(MyConfig->GetStringValue(CONFIG_AUDIO_SOURCE_NAME)); source_modified = false; source_combo = CreateFileCombo(source_name); source_entry = GTK_COMBO(source_combo)->entry; SetEntryValidator(GTK_OBJECT(source_entry), GTK_SIGNAL_FUNC(on_source_entry_changed), GTK_SIGNAL_FUNC(on_source_leave)); source_list = GTK_COMBO(source_combo)->list; gtk_signal_connect(GTK_OBJECT(source_list), "select_child", GTK_SIGNAL_FUNC(on_source_list_changed), NULL); gtk_widget_show(source_combo); gtk_box_pack_start(GTK_BOX(hbox2), source_combo, TRUE, TRUE, 0); // browse button browse_button = gtk_button_new_with_label(" Browse... "); gtk_signal_connect(GTK_OBJECT(browse_button), "clicked", GTK_SIGNAL_FUNC(on_source_browse_button), NULL); gtk_widget_show(browse_button); gtk_box_pack_start(GTK_BOX(hbox2), browse_button, FALSE, FALSE, 5); // input menu inputIndex = 0; for (u_int8_t i = 0; i < sizeof(inputValues) / sizeof(u_int8_t); i++) { if (!strcasecmp(MyConfig->GetStringValue(CONFIG_AUDIO_INPUT_NAME), inputValues[i])) { inputIndex = i; break; } } input_menu = CreateOptionMenu (NULL, inputNames, sizeof(inputNames) / sizeof(char*), inputIndex, GTK_SIGNAL_FUNC(on_input_menu_activate)); gtk_box_pack_start(GTK_BOX(vbox), input_menu, TRUE, TRUE, 0); // track menu track_menu = NULL; track_menu = CreateTrackMenu( track_menu, 'A', gtk_entry_get_text(GTK_ENTRY(source_entry)), &trackIndex, &trackNumber, &trackValues); trackIndex = 0; for (u_int8_t i = 0; i < trackNumber; i++) { if (MyConfig->GetIntegerValue(CONFIG_AUDIO_SOURCE_TRACK) == trackValues[i]) { trackIndex = i; break; } } gtk_box_pack_start(GTK_BOX(vbox), track_menu, FALSE, FALSE, 0); // spacer label = gtk_label_new(" "); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); encodingNames = (char **)malloc(sizeof(char *) * audio_encoder_table_size); audioEncoder = MyConfig->GetStringValue(CONFIG_AUDIO_ENCODER); for (uint32_t ix = 0; ix < audio_encoder_table_size; ix++) { encodingNames[ix] = strdup(audio_encoder_table[ix]->dialog_selection_name); if ((strcasecmp(audioEncoder, audio_encoder_table[ix]->audio_encoder) == 0) && (strcasecmp(MyConfig->GetStringValue(CONFIG_AUDIO_ENCODING), audio_encoder_table[ix]->audio_encoding) == 0)) { encodingIndex = ix; } } encoding_menu = CreateOptionMenu (NULL, encodingNames, audio_encoder_table_size, encodingIndex, GTK_SIGNAL_FUNC(on_encoding_menu_activate)); gtk_box_pack_start(GTK_BOX(vbox), encoding_menu, TRUE, TRUE, 0); // channel menu channel_menu = NULL; CreateChannelMenu(MyConfig->GetIntegerValue(CONFIG_AUDIO_CHANNELS)); gtk_box_pack_start(GTK_BOX(vbox), channel_menu, TRUE, TRUE, 0); sampling_rate_menu = NULL; CreateSamplingRateMenu(pAudioCaps); gtk_box_pack_start(GTK_BOX(vbox), sampling_rate_menu, TRUE, TRUE, 0); // set sampling rate value based on MyConfig SetSamplingRate(MyConfig->GetIntegerValue(CONFIG_AUDIO_SAMPLE_RATE)); bit_rate_menu = NULL; CreateBitRateMenu(MyConfig->GetIntegerValue(CONFIG_AUDIO_BIT_RATE)); gtk_box_pack_start(GTK_BOX(vbox), bit_rate_menu, TRUE, TRUE, 0); // set bit rate value based on MyConfig for (u_int8_t i = 0; i < bitRateNumber; i++) { if (MyConfig->GetIntegerValue(CONFIG_AUDIO_BIT_RATE) == bitRateValues[i]) { bitRateIndex = i; break; } } gtk_option_menu_set_history( GTK_OPTION_MENU(bit_rate_menu), bitRateIndex); // Add standard buttons at bottom button = AddButtonToDialog(dialog, " OK ", GTK_SIGNAL_FUNC(on_ok_button)); GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); AddButtonToDialog(dialog, " Cancel ", GTK_SIGNAL_FUNC(on_cancel_button)); ShowSourceSpecificSettings(); gtk_widget_show(dialog); }