X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_aout.h;h=5d1d068aa77c86686359c5a1fce2b26c6e4dd365;hb=19e7f0edfab5400a759fdfa89a7d59c54fa8ac30;hp=5ed437758f2bbd77e749f6064a14788a24ab4775;hpb=4440bb6bde5d2da545ec9a5ae61b17207370edd4;p=vlc diff --git a/include/vlc_aout.h b/include/vlc_aout.h index 5ed437758f..5d1d068aa7 100644 --- a/include/vlc_aout.h +++ b/include/vlc_aout.h @@ -76,20 +76,7 @@ || ((p_format)->i_format == VLC_CODEC_A52) \ || ((p_format)->i_format == VLC_CODEC_DTS) ) -typedef int32_t vlc_fixed_t; -#define FIXED32_FRACBITS 28 -#define FIXED32_ONE (1 << FIXED32_FRACBITS) - -/* Values used for the audio-device and audio-channels object variables */ -#define AOUT_VAR_MONO 1 -#define AOUT_VAR_STEREO 2 -#define AOUT_VAR_2F2R 4 -#define AOUT_VAR_3F2R 5 -#define AOUT_VAR_5_1 6 -#define AOUT_VAR_6_1 7 -#define AOUT_VAR_7_1 8 -#define AOUT_VAR_SPDIF 10 - +/* Values used for the audio-channels object variable */ #define AOUT_VAR_CHAN_UNSET 0 /* must be zero */ #define AOUT_VAR_CHAN_STEREO 1 #define AOUT_VAR_CHAN_RSTEREO 2 @@ -146,7 +133,7 @@ struct audio_output * \note A stream must have been started when called. */ void (*flush)( audio_output_t *, bool wait); - /**< Flushes or drains the playback buffers (mandatoryl, cannot be NULL). + /**< Flushes or drains the playback buffers (mandatory, cannot be NULL). * \param wait true to wait for playback of pending buffers (drain), * false to discard pending buffers (flush) * \note A stream must have been started when called. @@ -162,15 +149,6 @@ struct audio_output * \param mute true to mute, false to unmute * \warning A stream may or may not have been started when called. */ - int (*device_enum)(audio_output_t *, char ***ids, char ***names); - /**< Enumerates available audio output devices (optional, may be NULL). - * \param ids pointer to a heap-allocated table of heap-allocated - * nul-terminated device unique identifiers [OUT] - * \param names pointer to a heap-allocated table of heap-allocated - * nul-terminated device human-readable names [OUT] - * \return The number of entries, or -1 on error. - * \warning A stream may or may not have been started when called. - */ int (*device_select)(audio_output_t *, const char *id); /**< Selects an audio output device (optional, may be NULL). * \param id nul-terminated device unique identifier. @@ -182,6 +160,7 @@ struct audio_output void (*mute_report)(audio_output_t *, bool); void (*policy_report)(audio_output_t *, bool); void (*device_report)(audio_output_t *, const char *); + void (*hotplug_report)(audio_output_t *, const char *, const char *); int (*gain_request)(audio_output_t *, float); void (*restart_request)(audio_output_t *, unsigned); } event; @@ -216,8 +195,14 @@ VLC_API unsigned aout_CheckChannelReorder( const uint32_t *, const uint32_t *, uint32_t mask, uint8_t *table ); VLC_API void aout_ChannelReorder(void *, size_t, unsigned, const uint8_t *, vlc_fourcc_t); +VLC_API void aout_Interleave(void *dst, const void *const *planes, + unsigned samples, unsigned channels, + vlc_fourcc_t fourcc); +VLC_API void aout_Deinterleave(void *dst, const void *src, unsigned samples, + unsigned channels, vlc_fourcc_t fourcc); + /** - * This fonction will compute the extraction parameter into pi_selection to go + * This function will compute the extraction parameter into pi_selection to go * from i_channels with their type given by pi_order_src[] into the order * describe by pi_order_dst. * It will also set : @@ -297,6 +282,17 @@ static inline void aout_DeviceReport(audio_output_t *aout, const char *id) aout->event.device_report(aout, id); } +/** + * Report a device hot-plug event. + * @param id device ID + * @param name human-readable device name (NULL for hot unplug) + */ +static inline void aout_HotplugReport(audio_output_t *aout, + const char *id, const char *name) +{ + aout->event.hotplug_report(aout, id, name); +} + /** * Request a change of software audio amplification. * \param gain linear amplitude gain (must be positive) @@ -322,38 +318,22 @@ static inline int aout_ChannelsRestart (vlc_object_t *obj, const char *varname, return 0; } - -/* */ -VLC_API vout_thread_t * aout_filter_RequestVout( filter_t *, vout_thread_t *p_vout, video_format_t *p_fmt ) VLC_USED; - -/** Audio output buffer FIFO */ -struct aout_fifo_t -{ - block_t *p_first; - block_t **pp_last; - date_t end_date; -}; - -/* Legacy packet-oriented audio output helpers */ -typedef struct -{ - vlc_mutex_t lock; - audio_sample_format_t format; - aout_fifo_t partial; /**< Audio blocks before packetization */ - aout_fifo_t fifo; /**< Packetized audio blocks */ - mtime_t pause_date; /**< Date when paused or VLC_TS_INVALID */ - unsigned samples; /**< Samples per packet */ - bool starving; /**< Whether currently starving (to limit error messages) */ -} aout_packet_t; - -VLC_DEPRECATED void aout_PacketInit(audio_output_t *, aout_packet_t *, unsigned, const audio_sample_format_t *); -VLC_DEPRECATED void aout_PacketDestroy(audio_output_t *); - -VLC_DEPRECATED int aout_PacketTimeGet(audio_output_t *, mtime_t *); -VLC_DEPRECATED void aout_PacketPlay(audio_output_t *, block_t *); -VLC_DEPRECATED void aout_PacketFlush(audio_output_t *, bool); - -VLC_DEPRECATED block_t *aout_PacketNext(audio_output_t *, mtime_t) VLC_USED; - +/* Audio output filters */ +typedef struct aout_filters aout_filters_t; +typedef struct aout_request_vout aout_request_vout_t; + +VLC_API aout_filters_t *aout_FiltersNew(vlc_object_t *, + const audio_sample_format_t *, + const audio_sample_format_t *, + const aout_request_vout_t *) VLC_USED; +#define aout_FiltersNew(o,inf,outf,rv) \ + aout_FiltersNew(VLC_OBJECT(o),inf,outf,rv) +VLC_API void aout_FiltersDelete(vlc_object_t *, aout_filters_t *); +#define aout_FiltersDelete(o,f) \ + aout_FiltersDelete(VLC_OBJECT(o),f) +VLC_API bool aout_FiltersAdjustResampling(aout_filters_t *, int); +VLC_API block_t *aout_FiltersPlay(aout_filters_t *, block_t *, int rate); + +VLC_API vout_thread_t * aout_filter_RequestVout( filter_t *, vout_thread_t *p_vout, video_format_t *p_fmt ); #endif /* VLC_AOUT_H */