6 return std::move(temp);
12 output_device_enum_callback_getname(
const GUID & wantID,
pfc::string_base & strOut ) : m_wantID(wantID), m_got(), m_strOut(strOut) {}
13 void on_device(
const GUID & p_guid,
const char * p_name,
unsigned p_name_length) {
14 if (!m_got && p_guid == m_wantID) {
15 m_strOut.set_string(p_name, p_name_length);
27 output_device_enum_callback_getname cb(deviceID, out);
35 if (obj->get_guid() == outputID) {
36 outObj = obj;
return true;
43 output_entry::ptr ret;
44 if (!
g_find( outputID, ret ) )
throw exception_output_module_not_found();
96 if (!spec.is_valid()) pfc::throw_exception_with_message< exception_io_data >(
"Invalid audio stream specifications");
106 { 0xeeeb07de, 0xc2c8, 0x44c2, { 0x98, 0x5c, 0xc8, 0x58, 0x56, 0xd9, 0x6d, 0xa1 } };
110 { 0xd41d2423, 0xfbb0, 0x4635, { 0xb2, 0x33, 0x70, 0x54, 0xf7, 0x98, 0x14, 0xab } };
const t_item * get_ptr() const
T min_t(const T &item1, const T &item2)
t_samplespec m_incoming_spec
audio_chunk_memref_impl audio_chunk_temp_impl
void flush_changing_track()
virtual t_size can_write_samples()=0
const GUID output_id_null
void update(bool &p_ready)
Updates playback; queries whether the device is ready to receive new data.
virtual void on_update()=0
virtual void force_play()=0
Forces playback of queued data. Called when there's no more data to send, to prevent infinite waiting...
pfc::string8 get_device_name(const GUID &deviceID)
Interface to container of a chunk of audio data. See audio_chunk_impl for an implementation.
void process_samples(const audio_chunk &p_chunk)
Sends new samples to the device. Allowed to be called only when update() indicates that the device is...
virtual void on_flush()=0
const GUID output_id_default
void fromchunk(const audio_chunk &p_chunk)
static bool g_find(const GUID &outputID, output_entry::ptr &outObj)
void flush()
Flushes queued audio data. Called after seeking.
double get_latency()
Retrieves amount of audio data queued for playback, in seconds.
void dynamic_assert(bool p_condition, const char *p_msg)
double samples_to_time(t_uint64 p_samples, t_uint32 p_sample_rate)
virtual void open(t_samplespec const &p_spec)=0
virtual void on_device(const GUID &p_guid, const char *p_name, unsigned p_name_length)=0
virtual void enum_devices(output_device_enum_callback &p_callback)=0
Enumerates devices supported by this output_entry implementation.
void set_size(t_size p_size)
virtual audio_sample * get_data()=0
Retrieves audio data buffer pointer (non-const version). Returned pointer is for temporary use only; ...
t_uint32 m_channel_config
static outputCoreConfig_t defaults()
void set_data_fromptr(const t_source *p_buffer, t_size p_count)
Warning: buffer pointer must not point to buffer allocated by this array (fixme). ...
virtual t_size get_latency_samples()=0
virtual void on_flush_changing_track()
virtual void write(const audio_chunk &p_data)=0
Will never get more input than as returned by can_write_samples().
bool next(service_ptr_t< t_query > &p_out)
size_t get_used_size() const
Returns actual amount of audio data contained in the buffer (sample count * channel count)...
pfc::array_t< audio_sample, pfc::alloc_fast_aggressive > m_incoming
t_samplespec m_active_spec