static int eci_test_6(void) { #if 0 ECA_CONTROL_INTERFACE handle; int count; ECA_TEST_ENTRY(); if (handle == NULL) { ECA_TEST_FAIL(1, "init failed"); } handle.command("cs-remove"); handle.command("cs-status"); handle.command( "cs-list"); count = handle.last_string_list().size(); if (count != 0) { ECA_TEST_FAIL(1, "cs-list count not zero"); } handle.command("cs-add test_cs2"); handle.command("cs-list"); count = handle.last_string_list().size; if (count != 1) { ECA_TEST_FAIL(2, "cs-list count not one"); } if (handle.last_string_list()[0] != "test_cs2") { ECA_TEST_FAIL(3, "cs name does not match"); } ECA_TEST_SUCCESS(); #else return 0; #endif }
int main(int argc, char *argv[]) { int res; struct sigaction es_handler; es_handler.sa_handler = ecasv_signal_handler; sigemptyset(&es_handler.sa_mask); es_handler.sa_flags = 0; sigaction(SIGTERM, &es_handler, 0); sigaction(SIGINT, &es_handler, 0); sigaction(SIGQUIT, &es_handler, 0); sigaction(SIGABRT, &es_handler, 0); sigaction(SIGHUP, &es_handler, 0); struct sigaction ign_handler; ign_handler.sa_handler = SIG_IGN; sigemptyset(&ign_handler.sa_mask); ign_handler.sa_flags = 0; /* ignore the following signals */ sigaction(SIGPIPE, &ign_handler, 0); sigaction(SIGFPE, &ign_handler, 0); ECA_CONTROL_INTERFACE eci; eci.command("cs-add default"); eci.command("c-add default"); /* set engine buffersize */ eci.command("cs-set-param -b:" + kvu_numtostr(ecasv_buffersize)); /* in case JACK is used, do not send nor receive transport events */ eci.command("cs-set-param -G:jack,ecasignalview,notransport"); /* note: might change the cs options (-G, -z, etc) */ ecasv_parse_command_line(&eci,argc,argv); if (ecasv_format_string.size() > 0) { eci.command("cs-set-audio-format " + ecasv_format_string); } string format; if (ecicpp_add_input(&eci, ecasv_input, &format) < 0) return -1; cout << "Using audio format -f:" << format << "\n"; ecasv_chcount = ecicpp_format_channels(format); cout << "Setting up " << ecasv_chcount << " separate channels for analysis." << endl; if (ecicpp_add_output(&eci, ecasv_output, format) < 0) return -1; ecasv_eci_repp = &eci; vector<struct ecasv_channel_stats> chstats; eci.command("cop-add -evp"); eci.command("cop-add -ev"); if (ecasv_enable_cumulative_mode == true) { eci.command("cop-set 2,1,1"); } eci.command("cop-select 1"); if (ecicpp_connect_chainsetup(&eci, "default") < 0) { return -1; } int secs = 0, msecs = ecasv_rate_msec; while(msecs > 999) { ++secs; msecs -= 1000; } ecasv_output_init(); eci.command("start"); int chr=0; // jkc: addition int rv=0; // jkc: addition while(! done ) { kvu_sleep(secs, msecs * 1000000); res = ecasv_print_vu_meters(&eci, &chstats); if (res < 0) break; #if defined(ECASV_USE_CURSES) // jkc: addition until noted if (ecasv_kbhit()) { /* note: getch() is a curses.h function */ switch (chr=getch()) { case 'q': case 27: /* Esc */ case 'Q': done=true; break; case ' ': reset_stats_fcn(&chstats); break; } } // jkc: end of addition #endif } ecasv_output_cleanup(); #ifdef ECASV_USE_CURSES endwin(); #endif return rv; }
size_t AudioPlayer::Soundfile::_get_jack_sample_rate() { ECA_CONTROL_INTERFACE eca; eca.command("cs-add dummy_chainsetup"); eca.command("c-add dummy_chain"); eca.command("ai-add jack"); eca.command("ao-add null"); eca.command("cs-connect"); if (eca.error()) { throw soundfile_error("_get_jack_sample_rate(): " + eca.last_error()); } eca.command("ai-get-format"); std::string str = eca.last_string(); eca.command("cs-disconnect"); eca.command("c-remove"); eca.command("cs-remove"); std::replace(str.begin(), str.end(), ',', ' '); std::istringstream iss(str); std::string format; size_t channels, sample_rate; iss >> format >> channels >> sample_rate; if (iss.fail()) { throw soundfile_error("Couldn't convert string for getting sample rate!"); } assert(sample_rate >= 1); return sample_rate; }
std::string AudioPlayer::Soundfile::get_format(const std::string& filename , size_t& channels, size_t& sample_rate) { ECA_CONTROL_INTERFACE eca; eca.command("cs-add dummy_chainsetup"); eca.command("c-add dummy_chain"); eca.command("ai-add sndfile," + posixpathtools::get_escaped_filename(filename)); eca.command("ao-add null"); eca.command("cs-connect"); if (eca.error()) { throw soundfile_error("get_format(): " + eca.last_error()); } eca.command("ai-index-select 1"); eca.command("ai-get-format"); std::string str = eca.last_string(); eca.command("cs-disconnect"); eca.command("c-remove"); eca.command("cs-remove"); std::replace(str.begin(), str.end(), ',', ' '); std::istringstream iss(str); std::string format; iss >> format >> channels >> sample_rate; if (iss.fail()) { throw soundfile_error("Couldn't convert format string!"); } assert(sample_rate >= 1); return format; }