class EL_AUDIO_SOURCE_PRODUCER_I
Object that asynchronously calls routines in the audio producer thread. The calls are queued until the producer thread gets around to them.
note
description: "[
Object that asynchronously calls routines in the audio producer thread. The calls are queued until
the producer thread gets around to them.
]"
author: "Finnian Reilly"
copyright: "Copyright (c) 2001-2022 Finnian Reilly"
contact: "finnian at eiffel hyphen loop dot com"
license: "MIT license (See: en.wikipedia.org/wiki/MIT_License)"
date: "2022-11-15 19:56:06 GMT (Tuesday 15th November 2022)"
revision: "5"
class
EL_AUDIO_SOURCE_PRODUCER_I [SAMPLE_TYPE -> EL_AUDIO_PCM_SAMPLE create make end]
inherit
EL_THREAD_PROXY [EL_AUDIO_SOURCE_PRODUCER [SAMPLE_TYPE]]
rename
stop as exit
redefine
call_consumer
end
EL_MODULE_LOG
create
make
feature -- Basic operations
queue_next_buffer
--
do
log.enter ("queue_next_buffer")
queue_call (agent target.queue_next_buffer)
log.exit
end
buffer_audio_from_source (event_listener: EL_AUDIO_PLAYER_EVENT_LISTENER; waiting_player_thread: EL_SUSPENDABLE)
--
do
queue_call (agent target.buffer_audio_from_source (event_listener, waiting_player_thread))
end
initialize (relative_start_position: REAL)
--
do
target.initialize (relative_start_position)
end
stop
--
do
target.interrupt
call_queue.wipe_out
end
feature -- Element change
set_source (a_source: EL_AUDIO_SAMPLE_SOURCE [SAMPLE_TYPE])
--
do
target.set_source (a_source)
end
feature -- Access
merge_buffer_list_into_other (other: LINKED_LIST [MANAGED_POINTER])
--
do
target.buffer_list.lock
-- synchronized
other.merge_right (target.buffer_list.item)
-- end
target.buffer_list.unlock
end
feature {NONE} -- Implementation
call_consumer: EL_AUDIO_SOURCE_PRODUCER_THREAD
end