/// Callback function, opens the xine port int AudioDataOutputXT::openPort(xine_audio_port_t *port_gen, xine_stream_t *stream, uint32_t bits, uint32_t rate, int mode) { // Reference to the relevant object AudioDataOutputXT *that = ((scope_plugin_t*)((post_audio_port_t*)port_gen)->post)->audioDataOutput; post_audio_port_t *port = (post_audio_port_t*)port_gen; _x_post_rewire((post_plugin_t*)port->post); _x_post_inc_usage(port); port->stream = stream; port->bits = bits; port->rate = rate; port->mode = mode; // Set the new audio stream parameters that->m_channels = _x_ao_mode2channels(mode); that->m_frontend->setChannels(that->m_channels); that->m_frontend->m_sampleRate = rate; return port->original_port->open(port->original_port, stream, bits, rate, mode); }
static int fooviz_port_open(xine_audio_port_t *port_gen, xine_stream_t *stream, uint32_t bits, uint32_t rate, int mode) { post_audio_port_t *port = (post_audio_port_t *)port_gen; post_plugin_fooviz_t *this = (post_plugin_fooviz_t *)port->post; _x_post_rewire(&this->post); _x_post_inc_usage(port); port->stream = stream; port->bits = bits; port->rate = rate; port->mode = mode; this->ratio = (double)FOO_WIDTH/(double)FOO_HEIGHT; this->channels = _x_ao_mode2channels(mode); this->samples_per_frame = rate / FPS; this->data_idx = 0; this->sample_counter = 0; (this->vo_port->open) (this->vo_port, XINE_ANON_STREAM); this->metronom->set_master(this->metronom, stream->metronom); return (port->original_port->open) (port->original_port, stream, bits, rate, mode ); }