static void input_ChangeState( input_thread_t *p_input, int i_state ); /* TODO fix name */
-/* Do not let a pts_delay from access/demux go beyong 60s */
-#define INPUT_PTS_DELAY_MAX INT64_C(60000000)
-
#undef input_Create
/**
* Create a new input_thread_t.
if( !p_input->p )
return NULL;
+ /* Parse input options */
+ vlc_mutex_lock( &p_item->lock );
+ assert( (int)p_item->optflagc == p_item->i_options );
+ for( i = 0; i < p_item->i_options; i++ )
+ var_OptionParse( VLC_OBJECT(p_input), p_item->ppsz_options[i],
+ !!(p_item->optflagv[i] & VLC_INPUT_OPTION_TRUSTED) );
+ vlc_mutex_unlock( &p_item->lock );
+
p_input->b_preparsing = b_quick;
p_input->psz_header = psz_header ? strdup( psz_header ) : NULL;
p_input->p->i_control = 0;
p_input->p->b_abort = false;
- /* Parse input options */
- vlc_mutex_lock( &p_item->lock );
- assert( (int)p_item->optflagc == p_item->i_options );
- for( i = 0; i < p_item->i_options; i++ )
- var_OptionParse( VLC_OBJECT(p_input), p_item->ppsz_options[i],
- !!(p_item->optflagv[i] & VLC_INPUT_OPTION_TRUSTED) );
- vlc_mutex_unlock( &p_item->lock );
-
/* Create Object Variables for private use only */
input_ConfigVarInit( p_input );
/* */
es_out_SetDelay( p_input->p->p_es_out_display, AUDIO_ES, i_audio_delay );
es_out_SetDelay( p_input->p->p_es_out_display, SPU_ES, i_spu_delay );
- es_out_SetJitter( p_input->p->p_es_out, i_pts_delay, i_cr_average );
+ es_out_SetJitter( p_input->p->p_es_out, i_pts_delay, 0, i_cr_average );
}
static void InitPrograms( input_thread_t * p_input )
break;
case INPUT_CONTROL_SET_RATE:
- case INPUT_CONTROL_SET_RATE_SLOWER:
- case INPUT_CONTROL_SET_RATE_FASTER:
{
- int i_rate;
- int i_rate_sign;
-
/* Get rate and direction */
- if( i_type == INPUT_CONTROL_SET_RATE )
- {
- i_rate = abs( val.i_int );
- i_rate_sign = val.i_int < 0 ? -1 : 1;
- }
- else
- {
- static const int ppi_factor[][2] = {
- {1,64}, {1,32}, {1,16}, {1,8}, {1,4}, {1,3}, {1,2}, {2,3},
- {1,1},
- {3,2}, {2,1}, {3,1}, {4,1}, {8,1}, {16,1}, {32,1}, {64,1},
- {0,0}
- };
- int i_error;
- int i_idx;
- int i;
-
- i_rate_sign = p_input->p->i_rate < 0 ? -1 : 1;
-
- i_error = INT_MAX;
- i_idx = -1;
- for( i = 0; ppi_factor[i][0] != 0; i++ )
- {
- const int i_test_r = INPUT_RATE_DEFAULT * ppi_factor[i][0] / ppi_factor[i][1];
- const int i_test_e = abs( abs( p_input->p->i_rate ) - i_test_r );
- if( i_test_e < i_error )
- {
- i_idx = i;
- i_error = i_test_e;
- }
- }
-
- assert( i_idx >= 0 && ppi_factor[i_idx][0] != 0 );
-
- if( i_type == INPUT_CONTROL_SET_RATE_SLOWER )
- {
- if( ppi_factor[i_idx+1][0] > 0 )
- i_rate = INPUT_RATE_DEFAULT * ppi_factor[i_idx+1][0] / ppi_factor[i_idx+1][1];
- else
- i_rate = INPUT_RATE_MAX+1;
- }
- else
- {
- assert( i_type == INPUT_CONTROL_SET_RATE_FASTER );
- if( i_idx > 0 )
- i_rate = INPUT_RATE_DEFAULT * ppi_factor[i_idx-1][0] / ppi_factor[i_idx-1][1];
- else
- i_rate = INPUT_RATE_MIN-1;
- }
- }
+ int i_rate = abs( val.i_int );
+ int i_rate_sign = val.i_int < 0 ? -1 : 1;
/* Check rate bound */
if( i_rate < INPUT_RATE_MIN )
}
psz_path += i_localhost;
}
- /* Remove HTML anchor if present (not supported). */
- char *p = strchr( psz_path, '#' );
- if( p )
- *p = '\0';
/* Then URI-decode the path. */
decode_URI( psz_path );
#if defined( WIN32 ) && !defined( UNDER_CE )
*psz_path = '\0';
psz_path += 3; /* skips "://" */
- /* Separate access from demux (<access>/<demux>://<path>) */
psz_access = psz_dup;
-
/* We really don't want module name substitution here! */
if( psz_access[0] == '$' )
psz_access++;
+ /* Separate access from demux (<access>/<demux>://<path>) */
char *p = strchr( psz_access, '/' );
if( p )
{
if( psz_demux[0] == '$' )
psz_demux++;
}
+
+ /* Remove HTML anchor if present (not supported).
+ * The hash symbol itself should be URI-encoded. */
+ p = strchr( psz_path, '#' );
+ if( p )
+ *p = '\0';
}
else
{