/*
* GPAC - Multimedia Framework C SDK
*
* Authors: Arash Shafiei
* Copyright (c) Telecom ParisTech 2000-2013
* All rights reserved
*
* This file is part of GPAC / dashcast
*
* GPAC is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* GPAC is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; see the file COPYING. If not, write to
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
#ifndef CMD_DATA_H_
#define CMD_DATA_H_
#define MAX_SOURCE_NUMBER 20
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <time.h>
#include <gpac/config_file.h>
#include <gpac/list.h>
#include "audio_data.h"
#include "video_data.h"
#include "task.h"
/*
* This structure corresponds to
* the data in command line
*/
typedef struct {
/* input video */
VideoDataConf video_data_conf;
/* audio input data */
AudioDataConf audio_data_conf;
/* Configuration file */
GF_Config *conf;
/* Switch source configuration file */
GF_Config *switch_conf;
/* MPD file */
char mpd_filename[GF_MAX_PATH];
/* segment duration */
int seg_dur;
/* fragment duration */
int frag_dur;
/* Exit signal emitting from user to end the program */
volatile int exit_signal;
/* List of entries for video in configuration file */
GF_List *video_lst;
/* List of entries for audio in configuration file */
GF_List *audio_lst;
/* Indicates that the system is live */
/* List of video input sources */
GF_List *vsrc;
/* List of audio input sources */
GF_List *asrc;
//int live;
/* Indicates that the system is live from a media input */
//int live_media;
/* The mode of the system: ON_DEMAND, LIVE_CAMERA, LIVE_MEDIA */
int mode;
/* Does not loop on input */
int no_loop;
/* MPD AvailabilityStartTime offset in milliseconds. Default is 1000 milliseconds delay */
int ast_offset;
/* MPD time shift buffer depth in seconds */
int time_shift;
/* MPD minimumUpdatePeriod in seconds */
int minimum_update_period;
/* Send message on port 1234 once fragment is ready */
int send_message;
/* End of Segment Box name */
u32 seg_marker;
/* GDR */
int gdr;
/* GOP size in frames - 0 means framerate (1 sec)*/
int gop_size;
/* MPD min buffer time */
float min_buffer_time;
/* MPD BaseURL*/
char base_url[GF_MAX_PATH];
/* output directory name */
char out_dir[GF_MAX_PATH];
/* switch source configuration file */
//char switch_cfg_filename[GF_MAX_PATH];
FILE *logfile;
TaskList task_list;
/*dynamic ast*/
int use_dynamic_ast;
/*insert UTC */
int insert_utc;
Bool use_source_timing;
GF_MemTrackerType mem_track;
Bool no_mpd_rewrite;
} CmdData;
/*
* Initilize the command data structure
*
* @param cmd_data [out] structure to be initialize
*/
void dc_cmd_data_init(CmdData *cmd_data);
/*
* Destroy the command data structure
*
* @param cmd_data [out] structure to be destroyed
*/
void dc_cmd_data_destroy(CmdData *cmd_data);
/*
* Parse command line
*
* @param argc [in] number of arguments
* @param argv [in] a list of strings each containing one argument
* @param cmd_data [out] the data structure to fill
*/
int dc_parse_command(int argc, char **argv, CmdData *cmd_data);
#endif /* CMD_DATA_H_ */