オーディオ要素

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, the audio_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 in audio_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

ヘッダーファイル

Header File

関数

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
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 handle
  • data: データポインタ
    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 handle
  • tag: タグ名ポインタ
    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 handle
  • info: 情報ポインタ
    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 handle
  • info: 情報ポインタ
    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 handle
  • uri: 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 handle
  • ticks_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 reached wait_for_rb_threshold then the function will return.

Return
  • ESP_OK
  • ESP_FAIL
Parameters
  • el: オーディオエレメントハンドル
    el: The audio element handle
  • wait_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 element el. Any event from el->external_event will be send to the listener.

Return
  • ESP_OK
  • ESP_FAIL
Parameters
  • el: オーディオエレメントハンドル
    el: The audio element handle
  • listener: イベントは聴かれます
    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 element el. Any event to caller will cause to call callback function.

Return
  • ESP_OK
  • ESP_FAIL
Parameters
  • el: オーディオエレメントハンドル
    el: The audio element handle
  • cb_func: コールバック関数
    cb_func: The callback function
  • ctx: 発信者のコンテキスト
    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 handle
  • listener: リスナー
    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 handle
  • rb: リングバッファハンドル
    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 handle
  • rb: リングバッファハンドル
    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 reached size_expect then the function will return ESP_FAIL

Return
  • ESP_OK
  • ESP_FAIL
Parameters
  • el: オーディオエレメントハンドル
    el: The audio element handle
  • size_expect: 予想サイズ
    size_expect: The size expect
  • timeout: タイムアウト
    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 handle
  • status: ステータス
    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 handle
  • timeout: タイムアウト
    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 handle
  • timeout: タイムアウト
    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 handle
  • cmd: 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
Parameters
  • el: オーディオエレメントハンドル
    el: The audio element handle
  • buffer: バッファポインタ
    buffer: The buffer pointer
  • wanted_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
Parameters
  • el: オーディオエレメントハンドル
    el: The audio element handle
  • buffer: バッファポインタ
    buffer: The buffer pointer
  • write_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 handle
  • fn: コールバック読み取り関数。 コールバック関数は、読み取られたバイト数、または読み取りエラーの場合は-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 element
  • fn: コールバック書き込み関数コールバック関数は、書き込まれたバイト数、または書き込みエラーの場合は-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
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 handle
  • rb_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 handle
  • buffer: バッファポインタ
    buffer: The buffer pointer
  • wanted_size: 欲しいサイズ
    wanted_size: The wanted size
  • index: 0から始まるマルチ入力リングバッファのインデックスは、NUMBER_OF_MULTI_RINGBUF未満である必要があります
    index: The index of multi input ringbuffer, start from 0, should be less than NUMBER_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 handle
  • buffer: バッファポインタ
    buffer: The buffer pointer
  • wanted_size: 欲しいサイズ
    wanted_size: The wanted size
  • ticks_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 handle
  • rb: リングバッファハンドル
    rb: The ringbuffer handle
  • index: 0から始まるマルチリングバッファのインデックスは、NUMBER_OF_MULTI_RINGBUF未満である必要があります
    index: Index of multi ringbuffer, starts from 0, should be less than NUMBER_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 handle
  • rb: リングバッファハンドル
    rb: The ringbuffer handle
  • index: 0から始まるマルチリングバッファのインデックスは、NUMBER_OF_MULTI_RINGBUF未満である必要があります
    index: Index of multi ringbuffer, starts from 0, should be less than NUMBER_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
Parameters
  • el: オーディオエレメントハンドル
    el: The audio element handle
  • index: 0から始まるマルチリングバッファのインデックスは、NUMBER_OF_MULTI_RINGBUF未満である必要があります
    index: Index of multi ringbuffer, starts from 0, should be less than NUMBER_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
Parameters
  • el: オーディオエレメントハンドル
    el: The audio element handle
  • index: 0から始まるマルチリングバッファのインデックスは、NUMBER_OF_MULTI_RINGBUF未満である必要があります
    index: Index of multi ringbuffer, starts from 0, should be less than NUMBER_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 handle
  • in_data: データ内へのポインタ
    in_data: A pointer to in data
  • in_size: in_dataのサイズ
    in_size: The size of the in_data
  • out_data: 出力データへのポインタ
    out_data: A pointer to the out data
  • out_size: out_dataのサイズ
    out_size: The size of the out_data

構造体

Structures
struct audio_element_reserve_data_t

AudioElementユーザー予約データ。

Audio Element user reserved data.

Public Members

int user_data_0

user data 0

int user_data_1

user data 1

int user_data_2

user data 2

int user_data_3

user data 3

int user_data_4

user data 4

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)
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

io_func open

開くコールバック関数

Open callback function
ctrl_func seek

シークコールバック関数

Seek callback function
process_func process

プロセスコールバック関数

Process callback function
io_func close

閉じるコールバック関数

Close callback function
io_func destroy

破棄コールバック関数

Destroy 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

マクロ

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