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
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
0
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;
}