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; }
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; }
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; }