void Java_com_auphonic_jni_SndfileEncoder_deinit(JNIEnv * env, jobject obj) { SndfileEncoder * encoder = get_encoder(env, obj); delete encoder; set_encoder(env, obj, NULL); }
void Java_com_example_jni_FLACStreamEncoder_deinit(JNIEnv * env, jobject obj) { FLACStreamEncoder * encoder = get_encoder(env, obj); delete encoder; set_encoder(env, obj, NULL); }
void Java_fm_nativesound_jni_AudioEncode_deinit(JNIEnv * env, jobject obj) { AudioEncode * encoder = get_encoder(env, obj); delete encoder; set_encoder(env, obj, NULL); }
void Java_com_auphonic_jni_SndfileEncoder_init(JNIEnv * env, jobject obj, jstring outfile, jint sample_rate, jint channels, jint bits_per_sample, jint recording_type, jdouble recording_quality) { assert(sizeof(jlong) >= sizeof(SndfileEncoder *)); SndfileEncoder * encoder = new SndfileEncoder( aj::convert_jstring_path(env, outfile), sample_rate, channels, bits_per_sample, recording_type, recording_quality); char const * const error = encoder->init(); if (NULL != error) { delete encoder; aj::throwByName(env, IllegalArgumentException_classname, error); return; } set_encoder(env, obj, encoder); }
void Java_com_example_jni_FLACStreamEncoder_init(JNIEnv * env, jobject obj, jstring outfile, jint sample_rate, jint channels, jint bits_per_sample) { assert(sizeof(jlong) >= sizeof(FLACStreamEncoder *)); FLACStreamEncoder * encoder = new FLACStreamEncoder( aj::convert_jstring_path(env, outfile), sample_rate, channels, bits_per_sample); char const * const error = encoder->init(); if (NULL != error) { delete encoder; aj::throwByName(env, IllegalArgumentException_classname, error); return; } set_encoder(env, obj, encoder); }
int main() { init_MCU(); sel_mode(); while (1) { switch (pattern) { case 1: if ( check_crossline() ) //Be 90 { pattern = 21; break; } if ( check_rightline() ) // Chuyen lan phai { pattern = 51; break; } if ( check_leftline() ) // Chuyen lan trai { pattern = 61; break; } led7(10); set_encoder(19); switch (doc_cam_bien(0b01111110)) { case 0b01111110: toc_do(0, 0); goc(0); break; case 0b00011000: // Chay thang goc( 0 ); toc_do( 100 , 100 ); break; //lech phai case 0b00011100: case 0b00001000: toc_do(90, 80); goc(8); break; case 0b00001100: toc_do(90, 70); goc(10); break; case 0b00001110: case 0b00000100: toc_do(90, 60); goc(12); break; case 0b00000110: toc_do(90, 50); goc(15); break; case 0b00000010: toc_do(90, 30); goc(20); pattern = 11; //Lệch phải góc lớn break; ////////////////////////////////////////// //lech trai case 0b00111000: case 0b00010000: toc_do(80, 90); goc(-8); break; case 0b00110000: toc_do(70, 90); goc(-10); break; case 0b01110000: case 0b00100000: toc_do(60, 90); goc(-12); break; case 0b01100000: toc_do(50, 90); goc(-15); break; case 0b01000000: toc_do(30, 90); goc(-20); pattern = 12; //Lệch trái góc lớn break; default: break; } break; case 11: //Lệch phải góc lớn led7(11); set_encoder(23); switch (doc_cam_bien(0b11001100)) { case 0b11000000: toc_do(95, 15); goc(75); break; case 0b10000000: toc_do(95, 20); goc(51); break; case 0b00000000: toc_do(95, 25); goc(48); break; case 0b00000100: toc_do(95, 25); goc(37); break; case 0b00001100: toc_do(95, 25); goc(29); pattern = 1; break; default: pattern = 11; } break; case 12: //Lệch trái góc lớn led7(12); set_encoder(23); switch (doc_cam_bien(0b00110011)) { case 0b00000011: toc_do(15, 95); goc(-73); break; case 0b00000001: toc_do(20, 95); goc(-50); break; case 0b00000000: toc_do(25, 95); goc(-47); break; case 0b00100000: toc_do(25, 95); goc(-36); break; case 0b00110000: toc_do(25, 95); goc(-28); pattern = 1; break; default: pattern = 12; } break; case 21: //Xử lý khi gặp vạch tín hiệu cua vuông đầu tiên led7(18); set_encoder(20); goc( 0 ); toc_do( 60 , 60); pattern = 22; cnt_1ms = 0; xung = 0; break; case 22: // Delay hết vạch led7(22); set_encoder(20); goc( 0 ); toc_do( 60 , 60); if ( cnt_1ms > 150 || xung > 10 ) { pattern = 23; cnt_1ms = 0; xung = 0; } break; case 23: led7(23); //cua trái if ( (xung > 100) && ((doc_cam_bien(0b11111111) == 0b11111000) || (doc_cam_bien(0b11111111) == 0b11110000) || (doc_cam_bien(0b11111111) == 0b11100000) || (doc_cam_bien(0b11111111) == 0b11111100))) // Neu gap tin hieu nay la goc cua 90 trai thi be { pattern = 24; xung = 0; cnt_1ms = 0; break; } //cua phải if ( (xung > 100) && ((doc_cam_bien(0b11111111) == 0b00011111 ) || (doc_cam_bien(0b11111111) == 0b00000111) || (doc_cam_bien(0b11111111) == 0b00001111) || (doc_cam_bien(0b11111111) == 0b00111111))) // Neu gap tin hieu nay la goc cua 90 phai thi be { pattern = 25; xung = 0; cnt_1ms = 0; break; } if ( (xung > 30) && (xung < 100) && check_crossline() == 1) { pattern = 71; xung = 0; cnt_1ms = 0; break; } // Nguoc lai thi chinh thang cho xe switch (doc_cam_bien(0b01111110)) { case 0b00011000: goc( 0 ); toc_do(30, 30 ); break; //lech phai case 0b00001000: toc_do(23, 3); goc(8); break; case 0b00001100: toc_do(23, -3); goc(10); break; case 0b00000100: toc_do(23, -8); goc(13); break; case 0b00000110: case 0b00000010: toc_do(23, -13); goc(18); break; //////////////////////////////// case 0b00010000: toc_do(5, 20); goc(-8); break; case 0b00110000: toc_do(0, 20); goc(-10); break; case 0b00100000: toc_do(-5, 20); goc(-13); break; case 0b01100000: case 0b01000000: toc_do(10, 20); goc(-18); break; default: break; } break; case 24://delay het vach line TRAI set_encoder(10); toc_do(50, 50); if ( (xung > 100) && ((doc_cam_bien(0b00000111) == 0b00000111) || (doc_cam_bien(0b00001111) == 0b00001111))) { pattern = 23 ; break; } if (cnt_1ms > 100 || xung > 1) { pattern = 26; break; } break; case 25: //delay het vach line PHAI set_encoder(10); toc_do(50, 50); if ( (xung > 100 ) && ((doc_cam_bien(0b11100000) == 0b11100000) || (doc_cam_bien(0b11110000) == 0b11110000))) { pattern = 23 ; break; } if (cnt_1ms > 100 || xung > 1) { pattern = 27; break; } break; case 26: //vuông trái led7(24); goc( - 140 ); set_encoder(8); toc_do( -20 , 90 ); led7(1); pattern = 31; cnt_1ms = 0; break; case 27://vuông phải led7(25); goc( 140 ); set_encoder(8); toc_do( 90 , -20 ); led7(2); pattern = 41; cnt_1ms = 0; break; case 31: //delay cho xe kịp bẻ vuông trái led7(31); if ( cnt_1ms > 50 ) { pattern = 32; cnt_1ms = 0; } break; case 32: //chờ tín hiệu để về trường hợp chạy thẳng led7(32); if ( doc_cam_bien(0b11100111) == 0b00100000 ) { pattern = 1; cnt_1ms = 0; } break; case 41: //delay cho xe kịp bẻ vuông phải led7(41); if ( cnt_1ms > 50 ) { pattern = 42; cnt_1ms = 0; } break; case 42: //chờ tín hiệu để về trường hợp chạy thẳng led7(42); if ( doc_cam_bien(0b11100111) == 0b00000100 ) { pattern = 1; cnt_1ms = 0; } break; case 51: //xử lý khi gặp vạch tín hiệu chuyển làn PHẢI set_encoder(20); if ((doc_cam_bien(0b11100000) == 0b11100000) || (doc_cam_bien(0b11110000) == 0b11110000)) { pattern = 21 ; break; } led7(51); goc( 0 ); toc_do( 70 , 70 ); pattern = 52; cnt_1ms = 0; xung = 0; break; case 52: //delay hết vạch if ( cnt_1ms > 100 || xung > 10) { pattern = 53; cnt_1ms = 0; } if ((doc_cam_bien(0b11100000) == 0b11100000) || (doc_cam_bien(0b11110000) == 0b11110000)) { pattern = 21 ; break; } break; case 53: //hết vạch trắng if ( doc_cam_bien(0b11111111) == 0b00000000 ) { goc( 75 ); toc_do( 60 , 50 ); pattern = 54; cnt_1ms = 0; break; } switch ( doc_cam_bien(0b11100111) ) { case 0x00: goc( 0 ); toc_do( 30 , 30 ); break; case 0x04: case 0x06: case 0x07: case 0x03: goc( 15 ); toc_do( 30 , 20 ); break; case 0x20: case 0x60: case 0xe0: case 0xc0: goc( -15 ); toc_do( 20 , 30 ); break; default: break; } break; case 54: //bắt được line, chuyển về chạy thẳng if ( doc_cam_bien( 0b00001100 ) == 0b00001100 ) { pattern = 1; cnt_1ms = 0; led7(0); } break; case 61: //xử lý khi gặp vạch tín hiệu chuyển làn TRÁI set_encoder(20); if ( (doc_cam_bien(0b00000111) == 0b00000111) || (doc_cam_bien(0b00001111) == 0b00001111) ) { pattern = 21 ; break; } led7(61); goc( 0 ); toc_do( 90 , 90 ); pattern = 62; cnt_1ms = 0; xung = 0; break; case 62: //delay hết vạch if ( cnt_1ms > 100 || xung > 10) { pattern = 63; cnt_1ms = 0; } if ((doc_cam_bien(0b00000111) == 0b00000111) || (doc_cam_bien(0b00001111) == 0b00001111)) { pattern = 21 ; break; } break; case 63: //hết vạch trắng if ( doc_cam_bien(0b11111111) == 0x00 ) { goc( -75 ); toc_do( 50 , 60 ); pattern = 64; cnt_1ms = 0; break; } switch ( doc_cam_bien(0b11100111) ) { case 0x00: goc( 0 ); toc_do( 30 , 30 ); break; case 0x04: case 0x06: case 0x07: case 0x03: goc( 15 ); toc_do( 30 , 20 ); break; case 0x20: case 0x60: case 0xe0: case 0xc0: goc( -15 ); toc_do( 20 , 30 ); break; default: break; } break; case 64: //bắt được line, chuyển về chạy thẳng if ( doc_cam_bien( 0b00110000 ) == 0b00110000 ) { pattern = 1; cnt_1ms = 0; led7(0); } break; case 71: // Delay het vach set_encoder(30); toc_do(100, 100); led7(71); if ( cnt_1ms > 100 || xung > 10) { pattern = 72; cnt_1ms = 0; } break; case 72: if (doc_cam_bien(0xff) == 0b00000000) { goc(0); toc_do(100, 100); pattern = 73; break; } switch (doc_cam_bien(0b01111110)) { case 0b00011000: goc( 0 ); toc_do(100, 100 ); break; //lech phai case 0b00001000: toc_do(90, 17); goc(8); break; case 0b00001100: toc_do(90, 70); goc(13); break; case 0b00000100: toc_do(90, 65); goc(18); break; case 0b00000110: case 0b00000010: toc_do(90, 60); goc(26); break; ////////////////////////////////////////////////////////////////////////// case 0b00010000: toc_do(75, 90); goc(-8); break; case 0b00110000: toc_do(70, 90); goc(-13); break; case 0b00100000: toc_do(65, 90); goc(-18); break; case 0b01100000: case 0b01000000: toc_do(60, 90); goc(-26); break; default: break; } break; case 73: goc(0); toc_do(100, 100); if (doc_cam_bien(0b11111111) > 0) { pattern = 1; } break; default: pattern = 1; break; } } }
ProfileDataDialog::ProfileDataDialog(ProfileModel *profileModel, const int profileRow, QWidget *parent) : KDialog(parent) { Q_UNUSED(parent); profile_model = profileModel; if (!profile_model) { kDebug() << "ProfileModel is NULL!"; return; } profile_row = profileRow; QWidget *widget = new QWidget(this); ui.setupUi(widget); setMainWidget(widget); if (profile_row >= 0) { lame_parameters.fromString(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_ENCODER_LAME_PARAMETERS_INDEX)).toString()); oggenc_parameters.fromString(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_ENCODER_OGGENC_PARAMETERS_INDEX)).toString()); flac_parameters.fromString(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_ENCODER_FLAC_PARAMETERS_INDEX)).toString()); faac_parameters.fromString(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_ENCODER_FAAC_PARAMETERS_INDEX)).toString()); wave_parameters.fromString(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_ENCODER_WAVE_PARAMETERS_INDEX)).toString()); custom_parameters.fromString(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_ENCODER_CUSTOM_PARAMETERS_INDEX)).toString()); } lame_widget = new lameWidget(&lame_parameters, this); connect(lame_widget, SIGNAL(triggerChanged()), this, SLOT(trigger_changed())); oggenc_widget = new oggencWidget(&oggenc_parameters, this); connect(oggenc_widget, SIGNAL(triggerChanged()), this, SLOT(trigger_changed())); flac_widget = new flacWidget(&flac_parameters, this); connect(flac_widget, SIGNAL(triggerChanged()), this, SLOT(trigger_changed())); faac_widget = new faacWidget(&faac_parameters, this); connect(faac_widget, SIGNAL(triggerChanged()), this, SLOT(trigger_changed())); wave_widget = new waveWidget(&wave_parameters, this); connect(wave_widget, SIGNAL(triggerChanged()), this, SLOT(trigger_changed())); custom_widget = new customWidget(&custom_parameters, this); connect(custom_widget, SIGNAL(triggerChanged()), this, SLOT(trigger_changed())); ui.stackedWidget_encoder->addWidget(lame_widget); ui.stackedWidget_encoder->addWidget(oggenc_widget); ui.stackedWidget_encoder->addWidget(flac_widget); ui.stackedWidget_encoder->addWidget(faac_widget); ui.stackedWidget_encoder->addWidget(wave_widget); ui.stackedWidget_encoder->addWidget(custom_widget); QMap<int,QString> encoders = EncoderAssistant::availableEncoderNameList(); QMap<int,QString>::const_iterator i = encoders.constBegin(); while (i != encoders.constEnd()) { ui.kcombobox_encoder->addItem(i.value(), i.key()); ++i; } connect(ui.kcombobox_encoder, SIGNAL(activated(int)), this, SLOT(set_encoder_by_combobox(int))); connect(ui.kpushbutton_pattern, SIGNAL(clicked()), this, SLOT(pattern_wizard())); ui.kpushbutton_pattern->setIcon(KIcon("tools-wizard")); connect(ui.kpushbutton_cover, SIGNAL(clicked()), this, SLOT(cover_settings())); connect(ui.kpushbutton_playlist, SIGNAL(clicked()), this, SLOT(playlist_settings())); connect(ui.kpushbutton_info, SIGNAL(clicked()), this, SLOT(info_settings())); connect(ui.kpushbutton_hashlist, SIGNAL(clicked()), this, SLOT(hashlist_settings())); connect(ui.kpushbutton_cuesheet, SIGNAL(clicked()), this, SLOT(cuesheet_settings())); connect(ui.kpushbutton_singlefile, SIGNAL(clicked()), this, SLOT(singlefile_settings())); connect(ui.checkBox_cover, SIGNAL(toggled(bool)), this, SLOT(enable_settings_cover(bool))); connect(ui.checkBox_playlist, SIGNAL(toggled(bool)), this, SLOT(enable_settings_playlist(bool))); connect(ui.checkBox_info, SIGNAL(toggled(bool)), this, SLOT(enable_settings_info(bool))); connect(ui.checkBox_hashlist, SIGNAL(toggled(bool)), this, SLOT(enable_settings_hashlist(bool))); connect(ui.checkBox_cuesheet, SIGNAL(toggled(bool)), this, SLOT(enable_settings_cuesheet(bool))); connect(ui.checkBox_singlefile, SIGNAL(toggled(bool)), this, SLOT(enable_settings_singlefile(bool))); connect(ui.checkBox_singlefile, SIGNAL(toggled(bool)), this, SLOT(disable_filenames(bool))); connect(ui.checkBox_singlefile, SIGNAL(toggled(bool)), this, SLOT(disable_playlist(bool))); if (profile_row >= 0) { setCaption(i18n("Modify Profile")); setButtons(KDialog::Ok | KDialog::Cancel | KDialog::Apply); ui.klineedit_name->setText(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_NAME_INDEX)).toString()); connect(ui.klineedit_name, SIGNAL(textEdited(const QString&)), this, SLOT(trigger_changed())); ui.klineedit_name->setCursorPosition(0); ui.kiconbutton_icon->setIcon(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_ICON_INDEX)).toString()); connect(ui.kiconbutton_icon, SIGNAL(iconChanged(const QString&)), this, SLOT(trigger_changed())); set_encoder(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_ENCODER_SELECTED_INDEX)).toInt()); connect(ui.kcombobox_encoder, SIGNAL(activated(int)), this, SLOT(trigger_changed())); ui.klineedit_pattern->setText(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_PATTERN_INDEX)).toString()); connect(ui.klineedit_pattern, SIGNAL(textEdited(const QString&)), this, SLOT(trigger_changed())); ui.klineedit_pattern->setCursorPosition(0); ui.checkBox_fat32compatible->setChecked(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_FAT32COMPATIBLE_INDEX)).toBool()); connect(ui.checkBox_fat32compatible, SIGNAL(toggled(bool)), this, SLOT(trigger_changed())); ui.checkBox_underscore->setChecked(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_UNDERSCORE_INDEX)).toBool()); connect(ui.checkBox_underscore, SIGNAL(toggled(bool)), this, SLOT(trigger_changed())); ui.checkBox_2digitstracknum->setChecked(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_2DIGITSTRACKNUM_INDEX)).toBool()); connect(ui.checkBox_2digitstracknum, SIGNAL(toggled(bool)), this, SLOT(trigger_changed())); ui.checkBox_cover->setChecked(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_SC_INDEX)).toBool()); enable_settings_cover(ui.checkBox_cover->isChecked()); connect(ui.checkBox_cover, SIGNAL(toggled(bool)), this, SLOT(trigger_changed())); ui.checkBox_playlist->setChecked(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_PL_INDEX)).toBool()); enable_settings_playlist(ui.checkBox_playlist->isChecked()); connect(ui.checkBox_playlist, SIGNAL(toggled(bool)), this, SLOT(trigger_changed())); ui.checkBox_info->setChecked(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_INF_INDEX)).toBool()); enable_settings_info(ui.checkBox_info->isChecked()); connect(ui.checkBox_info, SIGNAL(toggled(bool)), this, SLOT(trigger_changed())); ui.checkBox_hashlist->setChecked(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_HL_INDEX)).toBool()); enable_settings_hashlist(ui.checkBox_hashlist->isChecked()); connect(ui.checkBox_hashlist, SIGNAL(toggled(bool)), this, SLOT(trigger_changed())); ui.checkBox_cuesheet->setChecked(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_CUE_INDEX)).toBool()); enable_settings_cuesheet(ui.checkBox_cuesheet->isChecked()); connect(ui.checkBox_cuesheet, SIGNAL(toggled(bool)), this, SLOT(trigger_changed())); ui.checkBox_singlefile->setChecked(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_SF_INDEX)).toBool()); enable_settings_singlefile(ui.checkBox_singlefile->isChecked()); connect(ui.checkBox_singlefile, SIGNAL(toggled(bool)), this, SLOT(trigger_changed())); ui.checkBox_replaygain->setChecked(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_RG_INDEX)).toBool()); connect(ui.checkBox_replaygain, SIGNAL(toggled(bool)), this, SLOT(trigger_changed())); disable_playlist(ui.checkBox_singlefile->isChecked()); //profile data cover data pdcd_scale = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_SC_SCALE_INDEX)).toBool(); pdcd_size = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_SC_SIZE_INDEX)).toSize(); pdcd_format = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_SC_FORMAT_INDEX)).toString(); pdcd_pattern = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_SC_NAME_INDEX)).toString(); //profile data playlist data pdpd_format = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_PL_FORMAT_INDEX)).toString(); pdpd_pattern = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_PL_NAME_INDEX)).toString(); pdpd_abs_file_path = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_PL_ABS_FILE_PATH_INDEX)).toBool(); pdpd_utf8 = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_PL_UTF8_INDEX)).toBool(); //profile data info data pdid_text = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_INF_TEXT_INDEX)).toStringList(); pdid_pattern = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_INF_NAME_INDEX)).toString(); pdid_suffix = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_INF_SUFFIX_INDEX)).toString(); //profile data hashlist data pdhd_format = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_HL_FORMAT_INDEX)).toString(); pdhd_pattern = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_HL_NAME_INDEX)).toString(); //profile data cue sheet data pdud_pattern = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_CUE_NAME_INDEX)).toString(); //profile data single file data pdsd_pattern = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_SF_NAME_INDEX)).toString(); enableButtonApply(false); }