bool cubeb_client::init_stream()

in tools/cubeb-test.cpp [164:196]


bool cubeb_client::init_stream() {
  assert(has_input() || has_output());

  _rate = has_output() ? output_params.rate : input_params.rate;
  _channels = has_output() ? output_params.channels : input_params.channels;

  cubeb_stream_params params;
  params.rate = _rate;
  params.channels = 2;
  params.format = CUBEB_SAMPLE_FLOAT32NE;

  uint32_t latency = 0;
  int rv = cubeb_get_min_latency(context, &params, &latency);
  if (rv != CUBEB_OK) {
    fprintf(stderr, "Could not get min latency.");
    return false;
  }

  if (_latency_frames) {
    latency = _latency_frames.load();
    printf("Opening a stream with a forced latency of %d frames\n", latency);
  }

  rv =
      cubeb_stream_init(context, &stream, "Stream", input_device,
                        has_input() ? &input_params : nullptr, output_device,
                        has_output() ? &output_params : nullptr, latency, user_data_cb_s, user_state_cb_s, this);
  if (rv != CUBEB_OK) {
    fprintf(stderr, "Could not open the stream\n");
    return false;
  }
  return true;
}