root/applications/dashcast/cmd_data.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


/*
 *                      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_ */

/* [<][>][^][v][top][bottom][index][help] */