root/applications/dashcast/controler.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 CONTROLER_H_
#define CONTROLER_H_

#include <gpac/tools.h>
#include <gpac/thread.h>
#include <gpac/media_tools.h>

#include "register.h"
#include "video_decoder.h"
#include "video_encoder.h"
#include "audio_decoder.h"
#include "audio_encoder.h"
#include "cmd_data.h"
#include "message_queue.h"


/* General thread parameters */
typedef struct {
        /* command data */
        CmdData *in_data;
        /* handle to thread */
        GF_Thread *thread;

        MessageQueue *mq;
} ThreadParam;

/* Video thread parameters */
typedef struct {
        /* command data */
        CmdData *in_data;
        /* The index in the configuration file to a video entry corresponding to the thread. */
        int video_conf_idx;
        /* Video input data structure corresponding to the thread. (This data is shared between video decoder and video scaler) */
        VideoInputData *video_input_data;
        /* Video scaled data structure corresponding to the thread. (This data is shared between video scaler and video encoder) */
        VideoScaledData *video_scaled_data;
        /* Video input file structure corresponding to the thread */
        VideoInputFile **video_input_file;
        /* handle to the thread */
        GF_Thread *thread;

        MessageQueue *mq;
        MessageQueue *delete_seg_mq;
        MessageQueue *send_seg_mq;
} VideoThreadParam;

/* Audio thread parameters */
typedef struct {
        /* command data */
        CmdData *in_data;
        /* The index in the configuration file to an audio entry corresponding to the thread */
        int audio_conf_idx;
        /* Audio input data (This data is shared between audio decoder and audio encoder */
        AudioInputData *audio_input_data;
        /* Audio input file structure */
        AudioInputFile *audio_input_file;
        /* handle to the thread */
        GF_Thread *thread;

        MessageQueue *mq;
        MessageQueue *delete_seg_mq;
        MessageQueue *send_seg_mq;
} AudioThreadParam;

/*
 * Run controler runs all decoder, scalers, and encoders
 * of audio and video
 *
 * @param cmd_data [in] command data
 *
 * @return 0 on success, -1 on failure
 */
int dc_run_controler(CmdData *);

#endif /* CONTROLER_H_ */

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