Ejemplo n.º 1
0
int dc_audio_input_data_init(AudioInputData *audio_input_data, int channels, int samplerate, int num_consumers, int mode)
{
    int i;

    dc_producer_init(&audio_input_data->producer, AUDIO_CB_SIZE, "audio decoder");
    dc_circular_buffer_create(&audio_input_data->circular_buf, AUDIO_CB_SIZE, mode, num_consumers);

    for (i = 0; i < AUDIO_CB_SIZE; i++) {
        AudioDataNode *audio_data_node = (AudioDataNode*)gf_malloc(sizeof(AudioDataNode));
        audio_input_data->circular_buf.list[i].data = (void *) audio_data_node;

        audio_data_node->abuf_size = MAX_AUDIO_PACKET_SIZE;
        audio_data_node->abuf = (uint8_t*)gf_malloc(audio_data_node->abuf_size * sizeof(uint8_t));
    }

    audio_input_data->aframe = FF_ALLOC_FRAME();
    if (audio_input_data->aframe == NULL) {
        GF_LOG(GF_LOG_ERROR, GF_LOG_DASH, ("Cannot initialize AudioInputData"));
        return -1;
    }

    audio_input_data->channels = channels;
    audio_input_data->samplerate = samplerate;

    return 0;
}
Ejemplo n.º 2
0
int dc_video_scaler_data_init(VideoInputData *video_input_data, VideoScaledData *video_scaled_data, int max_source, int video_cb_size)
{
	int i;
	char name[GF_MAX_PATH];
	snprintf(name, sizeof(name), "video scaler %dx%d", video_scaled_data->out_width, video_scaled_data->out_height);

	dc_producer_init(&video_scaled_data->producer, video_cb_size, name);
	dc_consumer_init(&video_scaled_data->consumer, video_cb_size, name);

	video_scaled_data->num_producers = max_source;
	video_scaled_data->out_pix_fmt = PIX_FMT_YUV420P;
	GF_SAFE_ALLOC_N(video_scaled_data->vsprop, max_source, VideoScaledProp);
	memset(video_scaled_data->vsprop, 0, max_source * sizeof(VideoScaledProp));

	dc_circular_buffer_create(&video_scaled_data->circular_buf, video_cb_size, video_input_data->circular_buf.mode, video_scaled_data->num_consumers);
	for (i=0; i<video_cb_size; i++) {
		video_scaled_data->circular_buf.list[i].data = dc_video_scaler_node_create(video_scaled_data->out_width, video_scaled_data->out_height, video_input_data->vprop[i].crop_x, video_input_data->vprop[i].crop_y, video_scaled_data->out_pix_fmt);
	}

	return 0;
}
Ejemplo n.º 3
0
int dc_video_input_data_init(VideoInputData *video_input_data, /*int width, int height, int pix_fmt*/ int num_consumers, int mode, int max_source, int video_cb_size)
{
	int i;

	dc_producer_init(&video_input_data->producer, video_cb_size, "video decoder");

	//video_input_data->width = width;
	//video_input_data->height = height;
	//video_input_data->pix_fmt = pix_fmt;

	video_input_data->vprop = (VideoInputProp*)gf_malloc(max_source * sizeof(VideoInputProp));

	dc_circular_buffer_create(&video_input_data->circular_buf, video_cb_size, mode, num_consumers);

	for (i=0; i<video_cb_size; i++) {
		VideoDataNode *video_data_node;
		GF_SAFEALLOC(video_data_node, VideoDataNode);
		video_input_data->circular_buf.list[i].data = (void *) video_data_node;
		video_data_node->vframe = FF_ALLOC_FRAME();
	}

	return 0;
}