|| ((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
* \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.
* \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.
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;
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 :
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)
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 */