Example #1
0
static mpf_object_t* mpf_null_bridge_create(mpf_audio_stream_t *source, mpf_audio_stream_t *sink, const mpf_codec_manager_t *codec_manager, const char *name, apr_pool_t *pool)
{
	mpf_codec_t *codec;
	apr_size_t frame_size;
	mpf_bridge_t *bridge;
	apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Create Null Audio Bridge %s",name);
	bridge = mpf_bridge_base_create(source,sink,name,pool);
	if(!bridge) {
		return NULL;
	}
	bridge->base.process = mpf_null_bridge_process;

	codec = mpf_codec_manager_codec_get(codec_manager,source->rx_descriptor,pool);
	if(!codec) {
		return NULL;
	}

	frame_size = mpf_codec_frame_size_calculate(source->rx_descriptor,codec->attribs);
	bridge->codec = codec;
	bridge->frame.codec_frame.size = frame_size;
	bridge->frame.codec_frame.buffer = apr_palloc(pool,frame_size);

	if(mpf_audio_stream_rx_open(source,codec) == FALSE) {
		return NULL;
	}
	if(mpf_audio_stream_tx_open(sink,codec) == FALSE) {
		mpf_audio_stream_rx_close(source);
		return NULL;
	}
	return &bridge->base;
}
Example #2
0
static mpf_object_t* mpf_linear_bridge_create(mpf_audio_stream_t *source, mpf_audio_stream_t *sink, const mpf_codec_manager_t *codec_manager, const char *name, apr_pool_t *pool)
{
	mpf_codec_descriptor_t *descriptor;
	apr_size_t frame_size;
	mpf_bridge_t *bridge;
	apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Create Linear Audio Bridge %s",name);
	bridge = mpf_bridge_base_create(source,sink,name,pool);
	if(!bridge) {
		return NULL;
	}

	descriptor = source->rx_descriptor;
	frame_size = mpf_codec_linear_frame_size_calculate(descriptor->sampling_rate,descriptor->channel_count);
	bridge->frame.codec_frame.size = frame_size;
	bridge->frame.codec_frame.buffer = apr_palloc(pool,frame_size);
	
	if(mpf_audio_stream_rx_open(source,NULL) == FALSE) {
		return NULL;
	}
	if(mpf_audio_stream_tx_open(sink,NULL) == FALSE) {
		mpf_audio_stream_rx_close(source);
		return NULL;
	}
	return &bridge->base;
}
Example #3
0
static apt_bool_t mpf_bridge_destroy(mpf_object_t *object)
{
	mpf_bridge_t *bridge = (mpf_bridge_t*) object;
	apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Destroy Audio Bridge %s",object->name);
	mpf_audio_stream_rx_close(bridge->source);
	mpf_audio_stream_tx_close(bridge->sink);
	return TRUE;
}
Example #4
0
static apt_bool_t mpf_mixer_destroy(mpf_object_t *object)
{
	apr_size_t i;
	mpf_audio_stream_t *source;
	mpf_mixer_t *mixer = (mpf_mixer_t*) object;

	apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Destroy Mixer %s",object->name);
	for(i=0; i<mixer->source_count; i++)	{
		source = mixer->source_arr[i];
		if(source) {
			mpf_audio_stream_rx_close(source);
		}
	}
	mpf_audio_stream_tx_close(mixer->sink);
	return TRUE;
}
Example #5
0
static apt_bool_t mpf_multiplier_destroy(mpf_object_t *object)
{
	apr_size_t i;
	mpf_audio_stream_t *sink;
	mpf_multiplier_t *multiplier = (mpf_multiplier_t*) object;

	apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Destroy Multiplier %s",object->name);
	mpf_audio_stream_rx_close(multiplier->source);
	for(i=0; i<multiplier->sink_count; i++)	{
		sink = multiplier->sink_arr[i];
		if(sink) {
			mpf_audio_stream_tx_close(sink);
		}
	}
	return TRUE;
}
Example #6
0
static apt_bool_t mpf_decoder_close(mpf_audio_stream_t *stream)
{
	mpf_decoder_t *decoder = stream->obj;
	return mpf_audio_stream_rx_close(decoder->source);
}