#include <vlc_epg.h>
#include <vlc_events.h>
#include <vlc_input_item.h>
+#include <vlc_vout_osd.h>
#include <string.h>
-/*****************************************************************************
- * Meta data helpers
- *****************************************************************************/
-static inline void vlc_audio_replay_gain_MergeFromMeta( audio_replay_gain_t *p_dst,
- const vlc_meta_t *p_meta )
-{
- const char * psz_value;
-
- if( !p_meta )
- return;
-
- if( (psz_value = vlc_meta_GetExtra(p_meta, "REPLAYGAIN_TRACK_GAIN")) ||
- (psz_value = vlc_meta_GetExtra(p_meta, "RG_RADIO")) )
- {
- p_dst->pb_gain[AUDIO_REPLAY_GAIN_TRACK] = true;
- p_dst->pf_gain[AUDIO_REPLAY_GAIN_TRACK] = atof( psz_value );
- }
- else if( (psz_value = vlc_meta_GetExtra(p_meta, "REPLAYGAIN_TRACK_PEAK" )) ||
- (psz_value = vlc_meta_GetExtra(p_meta, "RG_PEAK" )) )
- {
- p_dst->pb_peak[AUDIO_REPLAY_GAIN_TRACK] = true;
- p_dst->pf_peak[AUDIO_REPLAY_GAIN_TRACK] = atof( psz_value );
- }
- else if( (psz_value = vlc_meta_GetExtra(p_meta, "REPLAYGAIN_ALBUM_GAIN" )) ||
- (psz_value = vlc_meta_GetExtra(p_meta, "RG_AUDIOPHILE" )) )
- {
- p_dst->pb_gain[AUDIO_REPLAY_GAIN_ALBUM] = true;
- p_dst->pf_gain[AUDIO_REPLAY_GAIN_ALBUM] = atof( psz_value );
- }
- else if( (psz_value = vlc_meta_GetExtra(p_meta, "REPLAYGAIN_ALBUM_PEAK" )) )
- {
- p_dst->pb_peak[AUDIO_REPLAY_GAIN_ALBUM] = true;
- p_dst->pf_peak[AUDIO_REPLAY_GAIN_ALBUM] = atof( psz_value );
- }
-}
-
/*****************************************************************************
* Seek point: (generalisation of chapters)
*****************************************************************************/
/*****************************************************************************
* Title:
*****************************************************************************/
-typedef struct
+typedef struct input_title_t
{
char *psz_name;
* input defines/constants.
*****************************************************************************/
-/* i_update field of access_t/demux_t */
-#define INPUT_UPDATE_NONE 0x0000
-#define INPUT_UPDATE_SIZE 0x0001
-#define INPUT_UPDATE_TITLE 0x0010
-#define INPUT_UPDATE_SEEKPOINT 0x0020
-#define INPUT_UPDATE_META 0x0040
-#define INPUT_UPDATE_SIGNAL 0x0080
-
/**
* This defines private core storage for an input.
*/
* Input rate.
*
* It is an float used by the variable "rate" in the
- * range [INPUT_RATE_DEFAULT/INPUT_RATE_MAX, INPUT_RATE_DEFAULT/INPUT_RATE_MAX]
+ * range [INPUT_RATE_DEFAULT/INPUT_RATE_MAX, INPUT_RATE_DEFAULT/INPUT_RATE_MIN]
* the default value being 1. It represents the ratio of playback speed to
* nominal speed (bigger is faster).
*
INPUT_EVENT_STATE,
/* b_dead is true */
INPUT_EVENT_DEAD,
- /* a *user* abort has been requested */
- INPUT_EVENT_ABORT,
/* "rate" has changed */
INPUT_EVENT_RATE,
INPUT_GET_SPU_DELAY, /* arg1 = int* res=can fail */
INPUT_SET_SPU_DELAY, /* arg1 = int res=can fail */
+ /* Menu navigation */
+ INPUT_NAV_ACTIVATE,
+ INPUT_NAV_UP,
+ INPUT_NAV_DOWN,
+ INPUT_NAV_LEFT,
+ INPUT_NAV_RIGHT,
+
/* Meta datas */
INPUT_ADD_INFO, /* arg1= char* arg2= char* arg3=... res=can fail */
INPUT_REPLACE_INFOS,/* arg1= info_category_t * res=cannot fail */
VLC_API int input_Start( input_thread_t * );
-VLC_API void input_Stop( input_thread_t *, bool b_abort );
+VLC_API void input_Stop( input_thread_t * );
VLC_API int input_Read( vlc_object_t *, input_item_t * );
#define input_Read(a,b) input_Read(VLC_OBJECT(a),b)
input_Control( p_input, INPUT_GET_STATE, &state );
return state;
}
-/**
- * It will add a new subtitle source to the input.
- * Provided for convenience.
- */
-static inline int input_AddSubtitle( input_thread_t *p_input, const char *psz_url, bool b_check_extension )
-{
- return input_Control( p_input, INPUT_ADD_SUBTITLE, psz_url, b_check_extension );
-}
/**
* Return one of the video output (if any). If possible, you should use
return p_vout;
}
+/**
+ * It will add a new subtitle source to the input.
+ * Provided for convenience.
+ */
+static inline int input_AddSubtitleOSD( input_thread_t *p_input, const char *psz_url,
+ bool b_check_extension, bool b_osd )
+{
+ int i_result = input_Control( p_input, INPUT_ADD_SUBTITLE, psz_url, b_check_extension );
+ if( i_result != VLC_SUCCESS || !b_osd )
+ return i_result;
+
+ vout_thread_t *p_vout = input_GetVout( p_input );
+ if( p_vout )
+ {
+ vout_OSDMessage(p_vout, SPU_DEFAULT_CHANNEL, "%s",
+ vlc_gettext("Subtitle track added") );
+ vlc_object_release( (vlc_object_t *)p_vout );
+ }
+ return i_result;
+}
+#define input_AddSubtitle(a, b, c) input_AddSubtitleOSD(a, b, c, false)
+
+
/**
* Return the audio output (if any) associated with an input.
* @param p_input an input thread
}
/* */
-VLC_API decoder_t * input_DecoderCreate( vlc_object_t *, es_format_t *, input_resource_t * ) VLC_USED;
+VLC_API decoder_t * input_DecoderCreate( vlc_object_t *, const es_format_t *, input_resource_t * ) VLC_USED;
VLC_API void input_DecoderDelete( decoder_t * );
VLC_API void input_DecoderDecode( decoder_t *, block_t *, bool b_do_pace );
+VLC_API void input_DecoderDrain( decoder_t * );
+VLC_API void input_DecoderFlush( decoder_t * );
/**
* This function creates a sane filename path.
*/
-VLC_API char * input_CreateFilename( vlc_object_t *, const char *psz_path, const char *psz_prefix, const char *psz_extension ) VLC_USED;
+VLC_API char * input_CreateFilename( input_thread_t *, const char *psz_path, const char *psz_prefix, const char *psz_extension ) VLC_USED;
/**
* It creates an empty input resource handler.
*/
VLC_API void input_resource_Terminate( input_resource_t * );
+/**
+ * \return the current audio output if any.
+ * Use vlc_object_release() to drop the reference.
+ */
+VLC_API audio_output_t *input_resource_HoldAout( input_resource_t * );
+
+/**
+ * This function creates or recycles an audio output.
+ */
+VLC_API audio_output_t *input_resource_GetAout( input_resource_t * );
+
+/**
+ * This function retains or destroys an audio output.
+ */
+VLC_API void input_resource_PutAout( input_resource_t *, audio_output_t * );
+
+/**
+ * Prevents the existing audio output (if any) from being recycled.
+ */
+VLC_API void input_resource_ResetAout( input_resource_t * );
+
#endif