X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Finput%2Finput_internal.h;h=b3ad9e7463481e92b929ed999f764289636f05ff;hb=1e15960097cf0661acd30b64f5f2c5eb7258b07f;hp=ff409ec6997d12387989abf4fffd037a17f84eaa;hpb=7ccd46a8a014e991d23e34fdc169ae621036eb2b;p=vlc diff --git a/src/input/input_internal.h b/src/input/input_internal.h index ff409ec699..b3ad9e7463 100644 --- a/src/input/input_internal.h +++ b/src/input/input_internal.h @@ -1,32 +1,28 @@ /***************************************************************************** * input_internal.h: Internal input structures ***************************************************************************** - * Copyright (C) 1998-2006 the VideoLAN team + * Copyright (C) 1998-2006 VLC authors and VideoLAN * $Id$ * * Authors: Laurent Aimar * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or + * This program 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.1 of the License, or * (at your option) any later version. * * This program 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 General Public License for more details. + * 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 General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ -#if defined(__PLUGIN__) || defined(__BUILTIN__) || !defined(__LIBVLC__) -# error This header file can only be included from LibVLC. -#endif - -#ifndef _INPUT_INTERNAL_H -#define _INPUT_INTERNAL_H 1 +#ifndef LIBVLC_INPUT_INTERNAL_H +#define LIBVLC_INPUT_INTERNAL_H 1 #include #include @@ -68,29 +64,45 @@ typedef struct bool b_can_stream_record; bool b_rescale_ts; + /* */ + int64_t i_pts_delay; + bool b_eof; /* eof of demuxer */ } input_source_t; +typedef struct +{ + int i_type; + vlc_value_t val; +} input_control_t; + /** Private input fields */ struct input_thread_private_t { /* Global properties */ + double f_fps; + int i_state; bool b_can_pause; bool b_can_rate_control; - double f_fps; - - /* Internal caching common to all sources */ - mtime_t i_pts_delay; + bool b_can_pace_control; /* Current state */ - int i_rate; bool b_recording; + int i_rate; - /* Playtime configuration */ + /* Playtime configuration and state */ int64_t i_start; /* :start-time,0 by default */ int64_t i_stop; /* :stop-time, 0 if none */ int64_t i_run; /* :run-time, 0 if none */ + int64_t i_time; /* Current time */ + bool b_fast_seek;/* :input-fast-seek */ + + /* Output */ + bool b_out_pace_control; /* XXX Move it ot es_sout ? */ + sout_instance_t *p_sout; /* Idem ? */ + es_out_t *p_es_out; + es_out_t *p_es_out_display; /* Title infos FIXME multi-input (not easy) ? */ int i_title; @@ -108,26 +120,20 @@ struct input_thread_private_t int i_attachment; input_attachment_t **attachment; - /* Output */ - es_out_t *p_es_out; - es_out_t *p_es_out_display; - sout_instance_t *p_sout; /* XXX Move it to es_out ? */ - bool b_out_pace_control; /* idem ? */ - /* Main input properties */ /* Input item */ input_item_t *p_item; - /* Clock average variation */ - int i_cr_average; + /* Main source */ input_source_t input; /* Slave sources (subs, and others) */ int i_slave; input_source_t **slave; - /* Ressources */ - input_ressource_t *p_ressource; + /* Resources */ + input_resource_t *p_resource; + input_resource_t *p_resource_private; /* Stats counters */ struct { @@ -136,6 +142,8 @@ struct input_thread_private_t counter_t *p_input_bitrate; counter_t *p_demux_read; counter_t *p_demux_bitrate; + counter_t *p_demux_corrupted; + counter_t *p_demux_discontinuity; counter_t *p_decoded_audio; counter_t *p_decoded_video; counter_t *p_decoded_sub; @@ -153,13 +161,11 @@ struct input_thread_private_t vlc_mutex_t lock_control; vlc_cond_t wait_control; int i_control; - struct - { - /* XXX for string value you have to allocate it before calling - * input_ControlPush */ - int i_type; - vlc_value_t val; - } control[INPUT_CONTROL_FIFO_SIZE]; + input_control_t control[INPUT_CONTROL_FIFO_SIZE]; + + bool b_abort; + bool is_running; + vlc_thread_t thread; }; /*************************************************************************** @@ -172,14 +178,10 @@ enum input_control_e INPUT_CONTROL_SET_STATE, INPUT_CONTROL_SET_RATE, - INPUT_CONTROL_SET_RATE_SLOWER, - INPUT_CONTROL_SET_RATE_FASTER, INPUT_CONTROL_SET_POSITION, - INPUT_CONTROL_SET_POSITION_OFFSET, INPUT_CONTROL_SET_TIME, - INPUT_CONTROL_SET_TIME_OFFSET, INPUT_CONTROL_SET_PROGRAM, @@ -193,6 +195,12 @@ enum input_control_e INPUT_CONTROL_SET_BOOKMARK, + INPUT_CONTROL_NAV_ACTIVATE, // NOTE: INPUT_CONTROL_NAV_* values must be + INPUT_CONTROL_NAV_UP, // contiguous and in the same order as + INPUT_CONTROL_NAV_DOWN, // INPUT_NAV_* and DEMUX_NAV_*. + INPUT_CONTROL_NAV_LEFT, + INPUT_CONTROL_NAV_RIGHT, + INPUT_CONTROL_SET_ES, INPUT_CONTROL_RESTART_ES, @@ -209,8 +217,15 @@ enum input_control_e }; /* Internal helpers */ + +/* XXX for string value you have to allocate it before calling + * input_ControlPush + */ void input_ControlPush( input_thread_t *, int i_type, vlc_value_t * ); +/* Bound pts_delay */ +#define INPUT_PTS_DELAY_MAX INT64_C(60000000) + /********************************************************************** * Item metadata **********************************************************************/ @@ -234,4 +249,8 @@ void input_ConfigVarInit ( input_thread_t * ); char **subtitles_Detect( input_thread_t *, char* path, const char *fname ); int subtitles_Filter( const char *); +/* input.c */ +void input_SplitMRL( const char **, const char **, const char **, + const char **, char * ); + #endif