オーディオ要素¶
Audio Element
ADFを使用して開発するアプリケーションプログラマーの基本的な構成要素は、audio_element
オブジェクトです。 すべてのデコーダー、エンコーダー、フィルター、入力ストリーム、または出力ストリームは、実際にはオーディオ要素です。
The basic building block for the application programmer developing with ADF is the audio_element
object. Every decoder, encoder, filter, input stream, or output stream is in fact an Audio Element.
このAPIは、ADFが提供するオーディオ要素を実装するために設計および使用されています。
This API has been designed and then used to implement Audio Elements provided by ADF.
要素の一般的な機能は、入力に関するデータを取得して処理し、次のデータに出力することです。 各要素は個別のタスクとして実行されます。 入力から処理中および出力までのデータライフサイクルの特定のステージでの制御を有効にするために、audio_element
オブジェクトはステージごとにコールバックをトリガーする可能性を提供します。 使用可能なコールバック関数には、開く、シーク、処理、閉じる、破棄、読み取り、書き込みの7種類があり、audio_element_cfg_t
で定義されています。 特定の要素は通常、利用可能なすべてのコールバックのサブセットを使用します。 たとえば、MP3デコーダーは、コールバック関数を開き、処理し、閉じ、破棄します。
The general functionality of an Element is to take some data on input, processes it, and output to a the next. Each Element is run as a separate task. To enable control on particular stages of the data lifecycle from the input, during processing and up to the output, theaudio_element
object provides possibility to trigger callbacks per stage. There are seven types of available callback functions: open, seek, process, close, destroy, read and write, and they are defined inaudio_element_cfg_t
. Particular Elements typically use a subset of all avialable callbacks. For instance the MP3 Decoder is using open, process, close and destroy callback functions.
このAPIを使用した開発を目的とした使用可能なオーディオ要素タイプは、audio_element_type_t
列挙子の下のaudio_common.hヘッダーファイルの説明にリストされています。
The available Audio Element types intended for development with this API are listed in description of audio_common.h header file under audio_element_type_t
enumerator.
APIリファレンス¶
API Reference
関数¶
Functions
-
audio_element_handle_t
audio_element_init
(audio_element_cfg_t *config)¶ configを使用してオーディオ要素を初期化します。
Initialize audio element with config.
- Return
- audio_elemenentハンドルオブジェクト
audio_elemenent handle object
- NULL
- audio_elemenentハンドルオブジェクト
- Parameters
config
: 構成config
: The configuration
-
esp_err_t
audio_element_deinit
(audio_element_handle_t el)¶ オーディオ要素ハンドルオブジェクトを破棄し、停止、クリア、すべて削除します。
Destroy audio element handle object, stop, clear, deletel all.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_setdata
(audio_element_handle_t el, void *data)¶ コンテキストデータを要素ハンドルオブジェクトに設定します。 これは、
audio_element_getdata
を呼び出すことで取得できます。Set context data to element handle object. It can be retrieved by calling
audio_element_getdata
.- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handledata
: データポインタdata
: The data pointer
-
void *
audio_element_getdata
(audio_element_handle_t el)¶ 要素ハンドルオブジェクトからコンテキストデータを取得します。
Get context data from element handle object.
- Return
- データポインタ
data pointer
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_set_tag
(audio_element_handle_t el, const char *tag)¶ elemenetタグ名を設定するか、tag = NULLの場合はクリアします。
Set elemenet tag name, or clear if tag = NULL.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handletag
: タグ名ポインタtag
: The tag name pointer
-
char *
audio_element_get_tag
(audio_element_handle_t el)¶ 要素タグ名を取得します。
Get element tag name.
- Return
- 要素タグ名ポインタ
Element tag name pointer
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_setinfo
(audio_element_handle_t el, audio_element_info_t *info)¶ オーディオ要素情報を設定します。
Set audio element infomation.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handleinfo
: 情報ポインタinfo
: The information pointer
-
esp_err_t
audio_element_getinfo
(audio_element_handle_t el, audio_element_info_t *info)¶ オーディオ要素情報を取得します。
Get audio element infomation.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handleinfo
: 情報ポインタinfo
: The information pointer
-
esp_err_t
audio_element_set_uri
(audio_element_handle_t el, const char *uri)¶ オーディオ要素のURIを設定します。
Set audio element URI.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handleuri
: URIポインターuri
: The uri pointer
-
char *
audio_element_get_uri
(audio_element_handle_t el)¶ オーディオ要素のURIを取得します。
Get audio element URI.
- Return
- URI pointer
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_run
(audio_element_handle_t el)¶ オーディオ要素を起動します。 この関数を使用すると、audio_elementはfreeRTOSタスクとして開始され、タスクが「一時停止」状態になります。 注:この関数が戻ったときに、要素は実際には起動しません。
Start Audio Element. With this function, audio_element will start as freeRTOS task, and put the task into ‘PAUSED’ state. Note: Element does not actually start when this function returns.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_terminate
(audio_element_handle_t el)¶ オーディオ要素を終了します。 この関数を使用すると、audio_elementはタスク関数を終了します。 注:このAPIはリクエストのみを送信します。 この関数が戻っても、実際にはすぐには終了しません。
Terminate Audio Element. With this function, audio_element will exit the task function. Note: this API only sends request. It does not actually terminate immediately when this function returns.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_stop
(audio_element_handle_t el)¶ オーディオ要素の停止を要求します。 停止要求を受信した後、要素は実行中のアクション(読み取り/書き込み、リングバッファの待機…)を無視してタスクを閉じ、状態変数をリセットします。 注:このAPIはリクエストを送信するだけであり、この関数が戻ってもElementは実際には停止しません。
Request stop of the Audio Element. After receiving the stop request, the element will ignore the actions being performed (read/write, wait for the ringbuffer …) and close the task, reset the state variables. Note: this API only sends requests, Element does not actually stop when this function returns.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_wait_for_stop
(audio_element_handle_t el)¶ audio_element_stop
関数が呼び出された後、Elementタスクはいくつかの中止手順を実行します。 この関数は、要素タスクが完了して終了するまでブロックされます(時間はDEFAULT_MAX_WAIT_TIMEです)。After the
audio_element_stop
function is called, the Element task will perform some abort procedures. This function will be blocked (Time is DEFAULT_MAX_WAIT_TIME) until Element Task has done and exit.- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_wait_for_stop_ms
(audio_element_handle_t el, TickType_t ticks_to_wait)¶ audio_element_stop
関数が呼び出された後、Elementタスクはいくつかの中止手順を実行します。 Elementタスクが停止するのを待機するのをブロックする最大時間。After the
audio_element_stop
function is called, the Element task will perform some abort procedures. The maximum amount of time should block waiting for Element task has stopped.- Return
- ESP_OK, Success
- ESP_FAIL, Timeout
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handleticks_to_wait
: 停止を待つ最大時間ticks_to_wait
: The maximum amount of time to wait for stop
-
esp_err_t
audio_element_pause
(audio_element_handle_t el)¶ オーディオ要素が「一時停止」状態になるように要求します。 この状態では、タスクはイベントを待機します。
Request audio Element enter ‘PAUSE’ state. In this state, the task will wait for any event.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_resume
(audio_element_handle_t el, float wait_for_rb_threshold, TickType_t timeout)¶ オーディオ要素が「RUNNING」状態になるように要求します。 この状態では、タスクはイベントをリッスンし、コールバック関数を呼び出します。 同時に、出力リングバッファのサイズ/合計サイズが
wait_for_rb_threshold
以上になるまで待機します。 タイムアウト期間を超え、リングバッファ出力がまだwait_for_rb_threshold
に達していない場合、関数は戻ります。Request audio Element enter ‘RUNNING’ state. In this state, the task listens to events and invokes the callback functions. At the same time it will wait until the size/total_size of the output ringbuffer is greater than or equal to
wait_for_rb_threshold
. If the timeout period has been exceeded and ringbuffer output has not yet reachedwait_for_rb_threshold
then the function will return.- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handlewait_for_rb_threshold
: rbしきい値の待機(0 .. 1)wait_for_rb_threshold
: The wait for rb threshold (0 .. 1)timeout
: タイムアウトtimeout
: The timeout
-
esp_err_t
audio_element_msg_set_listener
(audio_element_handle_t el, audio_event_iface_handle_t listener)¶ この関数は、オーディオ要素
el
からのすべてのイベントをリッスンするリスナー
を追加します。 el->external_eventからのイベントはすべてリスナー
に送信されます。This function will add a
listener
to listen to all events from audio elementel
. Any event from el->external_event will be send to thelistener
.- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handlelistener
: イベントは聴かれますlistener
: The event will be listen to
-
esp_err_t
audio_element_set_event_callback
(audio_element_handle_t el, event_cb_func cb_func, void *ctx)¶ この関数は、オーディオ要素
el
から呼び出されるコールバック
を追加します。 呼び出し元へのイベントはすべて、コールバック関数を呼び出します。This function will add a
callback
to be called from audio elementel
. Any event to caller will cause to call callback function.- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handlecb_func
: コールバック関数cb_func
: The callback functionctx
: 発信者のコンテキストctx
: Caller context
-
esp_err_t
audio_element_msg_remove_listener
(audio_element_handle_t el, audio_event_iface_handle_t listener)¶ elからリスナーを削除します。 新しいイベントはリスナーに送信されません。
Remove listener out of el. No new events will be sent to the listener.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handlelistener
: リスナーlistener
: The listener
-
esp_err_t
audio_element_set_input_ringbuf
(audio_element_handle_t el, ringbuf_handle_t rb)¶ Element入力リングバッファを設定します。
Set Element input ringbuffer.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handlerb
: リングバッファハンドルrb
: The ringbuffer handle
-
ringbuf_handle_t
audio_element_get_input_ringbuf
(audio_element_handle_t el)¶ Element入力リングバッファを取得します。
Get Element input ringbuffer.
- Return
- ringbuf_handle_t
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_set_output_ringbuf
(audio_element_handle_t el, ringbuf_handle_t rb)¶ Element出力リングバッファを設定します。
Set Element output ringbuffer.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handlerb
: リングバッファハンドルrb
: The ringbuffer handle
-
ringbuf_handle_t
audio_element_get_output_ringbuf
(audio_element_handle_t el)¶ Element出力リングバッファを取得します。
Get Element output ringbuffer.
- Return
- ringbuf_handle_t
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
audio_element_state_t
audio_element_get_state
(audio_element_handle_t el)¶ 現在の要素の状態を取得します。
Get current Element state.
- Return
- audio_element_state_t
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_abort_input_ringbuf
(audio_element_handle_t el)¶ 要素が入力リングバッファからのデータを要求している場合、この関数は要素を強制的に中止します。
If the element is requesting data from the input ringbuffer, this function forces it to abort.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_abort_output_ringbuf
(audio_element_handle_t el)¶ 要素がリングバッファ出力へのデータの書き込みを待機している場合、この関数は要素を強制的に中止します。
If the element is waiting to write data to the ringbuffer output, this function forces it to abort.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_wait_for_buffer
(audio_element_handle_t el, int size_expect, TickType_t timeout)¶ この関数は、出力リングバッファのサイズが
size_expect
以上になるまで待機します。 タイムアウト期間を超え、リングバッファ出力がまだsize_expect
に達していない場合、関数はESP_FAIL
を返します。This function will wait until the sizeof the output ringbuffer is greater than or equal to
size_expect
. If the timeout period has been exceeded and ringbuffer output has not yet reachedsize_expect
then the function will returnESP_FAIL
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handlesize_expect
: 予想サイズsize_expect
: The size expecttimeout
: タイムアウトtimeout
: The timeout
-
esp_err_t
audio_element_report_status
(audio_element_handle_t el, audio_element_status_t status)¶ 要素は、この関数によってイベント(ステータス)をイベントに送信します。
Element will sendout event (status) to event by this function.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handlestatus
: ステータスstatus
: The status
-
esp_err_t
audio_element_report_info
(audio_element_handle_t el)¶ 要素は、この関数によってイベント(情報)をイベントに送信します。
Element will sendout event (information) to event by this function.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_report_codec_fmt
(audio_element_handle_t el)¶ 要素は、この関数によってイベント(コーデック形式)をイベントに送信します。
Element will sendout event (codec format) to event by this function.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_report_pos
(audio_element_handle_t el)¶ 要素は、この関数によって重複した情報を含むイベントを送信します。
Element will sendout event with a duplicate information by this function.
- Return
- ESP_OK
- ESP_FAIL
- ESP_ERR_NO_MEM
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_set_input_timeout
(audio_element_handle_t el, TickType_t timeout)¶ 入力読み取りタイムアウトを設定します(デフォルトは
portMAX_DELAY
です)。Set input read timeout (default is
portMAX_DELAY
).- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handletimeout
: タイムアウトtimeout
: The timeout
-
esp_err_t
audio_element_set_output_timeout
(audio_element_handle_t el, TickType_t timeout)¶ 出力読み取りタイムアウトを設定します(デフォルトは
portMAX_DELAY
です)。Set output read timeout (default is
portMAX_DELAY
).- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handletimeout
: タイムアウトtimeout
: The timeout
-
esp_err_t
audio_element_reset_input_ringbuf
(audio_element_handle_t el)¶ 入力バッファをリセットします。
Reset inputbuffer.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_finish_state
(audio_element_handle_t el)¶ 要素の終了状態を設定します。
Set element finish state.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_change_cmd
(audio_element_handle_t el, audio_element_msg_cmd_t cmd)¶ 特定のコマンドで要素の実行状態を変更します。
Change element running state with specific command.
- Return
- ESP_OK
- ESP_FAIL
- ESP_ERR_INVALID_ARG Element handle is null
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handlecmd
: audio_element_msg_cmd_tからの特定のコマンドcmd
: Specific command from audio_element_msg_cmd_t
-
esp_err_t
audio_element_reset_output_ringbuf
(audio_element_handle_t el)¶ 出力バッファをリセットします。
Reset outputbuffer.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
audio_element_err_t
audio_element_input
(audio_element_handle_t el, char *buffer, int wanted_size)¶ この関数を呼び出して、要素の入力データを提供します。 リングバッファまたは関数コールバックを使用した設定に応じて、Elementは読み取りリングバッファを呼び出すか、読み取りコールバック関数を呼び出します。
Call this function to provice Element input data. Depending on setup using ringbuffer or function callback, Element invokes read ringbuffer, or calls read callback funtion.
- Return
- > 0 生成されたバイト数
> 0 number of bytes produced
- <=0 audio_element_err_t
<=0 audio_element_err_t
- > 0 生成されたバイト数
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handlebuffer
: バッファポインタbuffer
: The buffer pointerwanted_size
: 欲しいサイズwanted_size
: The wanted size
-
audio_element_err_t
audio_element_output
(audio_element_handle_t el, char *buffer, int write_size)¶ この関数を呼び出して、要素の出力データを送信します。 リングバッファまたは関数コールバックを使用した設定に応じて、Elementはリングバッファへの書き込みを呼び出すか、書き込みコールバック関数を呼び出します。
Call this function to sendout Element output data. Depending on setup using ringbuffer or function callback, Element will invoke write to ringbuffer, or call write callback funtion.
- Return
- > 0 書き込まれたバイト数
> 0 number of bytes written
- <=0 audio_element_err_t
<=0 audio_element_err_t
- > 0 書き込まれたバイト数
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handlebuffer
: バッファポインタbuffer
: The buffer pointerwrite_size
: 書き込みサイズwrite_size
: The write size
-
esp_err_t
audio_element_set_read_cb
(audio_element_handle_t el, stream_func fn, void *context)¶ このAPIを使用すると、アプリケーションは、パイプラインが他のシステムとインターフェイスできるようにするために、パイプラインの最初のaudio_elementに読み取りコールバックを設定できます。 コールバックは、オーディオ要素でデータの処理が必要になるたびに呼び出されます。
This API allows the application to set a read callback for the first audio_element in the pipeline for allowing the pipeline to interface with other systems. The callback is invoked every time the audio element requires data to be processed.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handlefn
: コールバック読み取り関数。 コールバック関数は、読み取られたバイト数、または読み取りエラーの場合は-1を返す必要があります。 コールバック関数がブロックすることを決定する可能性があり、それがパイプライン全体をブロックする可能性があることに注意してください。fn
: Callback read function. The callback function should return number of bytes read or -1 in case of error in reading. Note that the callback function may decide to block and that may block the entire pipeline.context
: 呼び出しごとにコールバック関数に渡されるオプションのコンテキストcontext
: An optional context which will be passed to callback function on every invocation
-
esp_err_t
audio_element_set_write_cb
(audio_element_handle_t el, stream_func fn, void *context)¶ このAPIを使用すると、アプリケーションは、パイプラインが他のシステムとインターフェイスできるようにするために、パイプラインの最後のaudio_elementに書き込みコールバックを設定できます。 コールバックは、オーディオ要素に転送する必要のある処理済みデータがあるたびに呼び出されます。
This API allows the application to set a write callback for the last audio_element in the pipeline for allowing the pipeline to interface with other systems. The callback is invoked every time the audio element has a processed data that needs to be passed forward.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントel
: The audio elementfn
: コールバック書き込み関数コールバック関数は、書き込まれたバイト数、または書き込みエラーの場合は-1を返す必要があります。 コールバック関数がブロックすることを決定する可能性があり、それがパイプライン全体をブロックする可能性があることに注意してください。fn
: Callback write function The callback function should return number of bytes written or -1 in case of error in writing. Note that the callback function may decide to block and that may block the entire pipeline.context
: 呼び出しごとにコールバック関数に渡されるオプションのコンテキストcontext
: An optional context which will be passed to callback function on every invocation
-
QueueHandle_t
audio_element_get_event_queue
(audio_element_handle_t el)¶ エミッタの外部キューを取得します。 この
QueueHandle_t
からElementから送信されたすべてのイベントを読み取ることができます。Get External queue of Emitter. We can read any event that has been send out of Element from this
QueueHandle_t
.- Return
- QueueHandle_t
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_set_ringbuf_done
(audio_element_handle_t el)¶ inputbufferとoutputbufferの設定が終了しました。
Set inputbuffer and outputbuffer have finished.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_reset_state
(audio_element_handle_t el)¶ 「AEL_STATE_INIT」状態を適用します。
Enforce ‘AEL_STATE_INIT’ state.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
int
audio_element_get_output_ringbuf_size
(audio_element_handle_t el)¶ 要素の出力リングバッファサイズを取得します。
Get Element output ringbuffer size.
- Return
- =0: パラメータNULL
=0: Parameter NULL
- >0: リングバッファのサイズ
>0: Size of ringbuffer
- =0: パラメータNULL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_set_output_ringbuf_size
(audio_element_handle_t el, int rb_size)¶ 要素の出力リングバッファサイズを設定します。
Set Element output ringbuffer size.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handlerb_size
: リングバッファのサイズrb_size
: Size of the ringbuffer
-
esp_err_t
audio_element_multi_input
(audio_element_handle_t el, char *buffer, int wanted_size, int index, TickType_t ticks_to_wait)¶ この関数を呼び出して、指定されたインデックスによってマルチ入力リングバッファからデータを読み取ります。
Call this function to read data from multi input ringbuffer by given index.
- Return
- ESP_OK
- ESP_ERR_INVALID_ARG
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handlebuffer
: バッファポインタbuffer
: The buffer pointerwanted_size
: 欲しいサイズwanted_size
: The wanted sizeindex
:0
から始まるマルチ入力リングバッファのインデックスは、NUMBER_OF_MULTI_RINGBUF
未満である必要がありますindex
: The index of multi input ringbuffer, start from0
, should be less thanNUMBER_OF_MULTI_RINGBUF
ticks_to_wait
: リングバッファのタイムアウトticks_to_wait
: Timeout of ringbuffer
-
esp_err_t
audio_element_multi_output
(audio_element_handle_t el, char *buffer, int wanted_size, TickType_t ticks_to_wait)¶ この関数を呼び出して、マルチ出力リングバッファでデータを書き込みます。
Call this function write data by multi output ringbuffer.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handlebuffer
: バッファポインタbuffer
: The buffer pointerwanted_size
: 欲しいサイズwanted_size
: The wanted sizeticks_to_wait
: リングバッファのタイムアウトticks_to_wait
: Timeout of ringbuffer
-
esp_err_t
audio_element_set_multi_input_ringbuf
(audio_element_handle_t el, ringbuf_handle_t rb, int index)¶ マルチ入力リングバッファ要素を設定します。
Set multi input ringbuffer Element.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handlerb
: リングバッファハンドルrb
: The ringbuffer handleindex
:0
から始まるマルチリングバッファのインデックスは、NUMBER_OF_MULTI_RINGBUF
未満である必要がありますindex
: Index of multi ringbuffer, starts from0
, should be less thanNUMBER_OF_MULTI_RINGBUF
-
esp_err_t
audio_element_set_multi_output_ringbuf
(audio_element_handle_t el, ringbuf_handle_t rb, int index)¶ マルチ出力リングバッファ要素を設定します。
Set multi output ringbuffer Element.
- Return
- ESP_OK
- ESP_ERR_INVALID_ARG
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handlerb
: リングバッファハンドルrb
: The ringbuffer handleindex
:0
から始まるマルチリングバッファのインデックスは、NUMBER_OF_MULTI_RINGBUF
未満である必要がありますindex
: Index of multi ringbuffer, starts from0
, should be less thanNUMBER_OF_MULTI_RINGBUF
-
ringbuf_handle_t
audio_element_get_multi_input_ringbuf
(audio_element_handle_t el, int index)¶ マルチ入力リングバッファ要素のハンドルをインデックスで取得します。
Get handle of multi input ringbuffer Element by index.
- Return
- NULLエラー
NULL Error
- その他ringbuf_handle_t
Others ringbuf_handle_t
- NULLエラー
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handleindex
:0
から始まるマルチリングバッファのインデックスは、NUMBER_OF_MULTI_RINGBUF
未満である必要がありますindex
: Index of multi ringbuffer, starts from0
, should be less thanNUMBER_OF_MULTI_RINGBUF
-
ringbuf_handle_t
audio_element_get_multi_output_ringbuf
(audio_element_handle_t el, int index)¶ マルチ出力リングバッファ要素のハンドルをインデックスで取得します。
Get handle of multi output ringbuffer Element by index.
- Return
- NULLエラー
NULL Error
- その他ringbuf_handle_t
Others ringbuf_handle_t
- NULLエラー
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handleindex
:0
から始まるマルチリングバッファのインデックスは、NUMBER_OF_MULTI_RINGBUF
未満である必要がありますindex
: Index of multi ringbuffer, starts from0
, should be less thanNUMBER_OF_MULTI_RINGBUF
-
esp_err_t
audio_element_process_init
(audio_element_handle_t el)¶ 要素の
オープン
を呼び出す方法を提供しますProvides a way to call element’s
open
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_process_deinit
(audio_element_handle_t el)¶ 要素の
クローズ
を呼び出す方法を提供しますProvides a way to call element’s
close
- Return
- ESP_OK
- ESP_FAIL
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handle
-
esp_err_t
audio_element_seek
(audio_element_handle_t el, void *in_data, int in_size, void *out_data, int *out_size)¶ 要素の
シーク
を呼び出すCall element’s
seek
- Return
- ESP_OK
- ESP_FAIL
- ESP_ERR_NOT_SUPPORTED
- Parameters
el
: オーディオエレメントハンドルel
: The audio element handlein_data
: データ内へのポインタin_data
: A pointer to in datain_size
:in_data
のサイズin_size
: The size of thein_data
out_data
: 出力データへのポインタout_data
: A pointer to the out dataout_size
:out_data
のサイズout_size
: The size of theout_data
構造体¶
Structures
-
struct
audio_element_reserve_data_t
¶ AudioElementユーザー予約データ。
Audio Element user reserved data.
-
struct
audio_element_info_t
¶ オーディオ要素情報。
Audio Element informations.
Public Members
-
int
sample_rates
¶ Hz単位のサンプルレート
Sample rates in Hz
-
int
channels
¶ オーディオチャンネル数、モノラルは1、ステレオは2
Number of audio channel, mono is 1, stereo is 2
-
int
bits
¶ ビット幅(8、16、24、32ビット)
Bit wide (8, 16, 24, 32 bits)
-
int
bps
¶ ビット/秒
Bit per second
-
int64_t
byte_pos
¶ 要素に対して処理されている現在の位置(バイト単位)
The current position (in bytes) being processed for an element
-
int64_t
total_bytes
¶ 要素の合計バイト数
The total bytes for an element
-
int
duration
¶ 要素の期間(オプション)
The duration for an element (optional)
-
char *
uri
¶ URI(オプション)
URI (optional)
-
audio_codec_t
codec_fmt
¶ 音楽フォーマット(オプション)
Music format (optional)
-
audio_element_reserve_data_t
reserve_data
¶ この値はユーザーが使用するために予約されています(オプション)
This value is reserved for user use (optional)
-
int
-
struct
audio_element_cfg_t
¶ オーディオエレメントの構成。 起動時の各要素は、自己実行タスクになります。 これらのタスクは、コールバックオープンを実行します-> [ループ:読み取り-> プロセス-> 書き込み]-> 閉じる。 これらのコールバック関数は、この構成に対応するユーザーによって提供されます。
Audio Element configurations. Each Element at startup will be a self-running task. These tasks will execute the callback open -> [loop: read -> process -> write] -> close. These callback functions are provided by the user corresponding to this configuration.
Public Members
-
process_func
process
¶ プロセスコールバック関数
Process callback function
-
stream_func
read
¶ 読み取りコールバック関数
Read callback function
-
stream_func
write
¶ 書くコールバック関数
Write callback function
-
int
buffer_len
¶ 要素のバッファ長の使用
Buffer length use for an Element
-
int
task_stack
¶ 要素タスクスタック
Element task stack
-
int
task_prio
¶ 要素タスクの優先度(freeRTOSの優先度に基づく)
Element task priority (based on freeRTOS priority)
-
int
task_core
¶ コアで実行されている要素タスク(0または1)
Element task running in core (0 or 1)
-
int
out_rb_size
¶ 出力リングバッファサイズ
Output ringbuffer size
-
void *
data
¶ ユーザーコンテキスト
User context
-
const char *
tag
¶ 要素タグ
Element tag
-
int
multi_in_rb_num
¶ 複数入力リングバッファの数
The number of multiple input ringbuffer
-
int
multi_out_rb_num
¶ 複数出力リングバッファの数
The number of multiple output ringbuffer
-
process_func
マクロ¶
Macros
-
AUDIO_ELEMENT_INFO_DEFAULT
()¶
-
DEFAULT_ELEMENT_RINGBUF_SIZE
¶
-
DEFAULT_ELEMENT_BUFFER_LENGTH
¶
-
DEFAULT_ELEMENT_STACK_SIZE
¶
-
DEFAULT_ELEMENT_TASK_PRIO
¶
-
DEFAULT_ELEMENT_TASK_CORE
¶
-
DEFAULT_AUDIO_ELEMENT_CONFIG
()¶
タイプ定義¶
Type Definitions
-
typedef struct audio_element *
audio_element_handle_t
¶
-
typedef esp_err_t (*
io_func
)(audio_element_handle_t self)¶
-
typedef audio_element_err_t (*
process_func
)(audio_element_handle_t self, char *el_buffer, int el_buf_len)¶
-
typedef audio_element_err_t (*
stream_func
)(audio_element_handle_t self, char *buffer, int len, TickType_t ticks_to_wait, void *context)¶
-
typedef esp_err_t (*
event_cb_func
)(audio_element_handle_t el, audio_event_iface_msg_t *event, void *ctx)¶
-
typedef esp_err_t (*
ctrl_func
)(audio_element_handle_t self, void *in_data, int in_size, void *out_data, int *out_size)¶
列挙¶
Enumerations
-
enum
audio_element_err_t
¶ Values:
-
AEL_IO_OK
= ESP_OK¶
-
AEL_IO_FAIL
= ESP_FAIL¶
-
AEL_IO_DONE
= -2¶
-
AEL_IO_ABORT
= -3¶
-
AEL_IO_TIMEOUT
= -4¶
-
AEL_PROCESS_FAIL
= -5¶
-
-
enum
audio_element_state_t
¶ オーディオ要素の状態。
Audio element state.
Values:
-
AEL_STATE_NONE
= 0¶
-
AEL_STATE_INIT
¶
-
AEL_STATE_RUNNING
¶
-
AEL_STATE_PAUSED
¶
-
AEL_STATE_STOPPED
¶
-
AEL_STATE_FINISHED
¶
-
AEL_STATE_ERROR
¶
-
-
enum
audio_element_msg_cmd_t
¶ オーディオ要素アクションコマンド、ディスパッチャでのプロセス
Audio element action command, process on dispatcher
Values:
-
AEL_MSG_CMD_NONE
= 0¶
-
AEL_MSG_CMD_ERROR
= 1¶
-
AEL_MSG_CMD_FINISH
= 2¶
-
AEL_MSG_CMD_STOP
= 3¶
-
AEL_MSG_CMD_PAUSE
= 4¶
-
AEL_MSG_CMD_RESUME
= 5¶
-
AEL_MSG_CMD_DESTROY
= 6¶
-
AEL_MSG_CMD_REPORT_STATUS
= 8¶
-
AEL_MSG_CMD_REPORT_MUSIC_INFO
= 9¶
-
AEL_MSG_CMD_REPORT_CODEC_FMT
= 10¶
-
AEL_MSG_CMD_REPORT_POSITION
= 11¶
-
-
enum
audio_element_status_t
¶ オーディオ要素ステータスレポート
Audio element status report
Values:
-
AEL_STATUS_NONE
= 0¶
-
AEL_STATUS_ERROR_OPEN
= 1¶
-
AEL_STATUS_ERROR_INPUT
= 2¶
-
AEL_STATUS_ERROR_PROCESS
= 3¶
-
AEL_STATUS_ERROR_OUTPUT
= 4¶
-
AEL_STATUS_ERROR_CLOSE
= 5¶
-
AEL_STATUS_ERROR_TIMEOUT
= 6¶
-
AEL_STATUS_ERROR_UNKNOWN
= 7¶
-
AEL_STATUS_INPUT_DONE
= 8¶
-
AEL_STATUS_INPUT_BUFFERING
= 9¶
-
AEL_STATUS_OUTPUT_DONE
= 10¶
-
AEL_STATUS_OUTPUT_BUFFERING
= 11¶
-
AEL_STATUS_STATE_RUNNING
= 12¶
-
AEL_STATUS_STATE_PAUSED
= 13¶
-
AEL_STATUS_STATE_STOPPED
= 14¶
-
AEL_STATUS_STATE_FINISHED
= 15¶
-
AEL_STATUS_MOUNTED
= 16¶
-
AEL_STATUS_UNMOUNTED
= 17¶
-