リングバッファ¶
Ring Buffer
リングバッファは、データバッファとしての使用に加えて設計されており、オーディオ要素の接続にも使用されます。 リングバッファからデータを要求する各要素は、データが利用可能になるまでタスクをブロックします。 または、データを書き込んでいてバッファがいっぱいのときにタスクをブロックします。 もちろん、このブロックはいつでも停止できます。
Ringbuffer is designed in addition to use as a data buffer, also used to connect Audio Elements. Each Element that requests data from the Ringbuffer will block the task until the data is available. Or block the task when writing data and the Buffer is full. Of course, we can stop this block at any time.
アプリケーション例¶
Application Example
ほとんどのESP-ADFの例では、ElementsとRingbuffersの接続は、関数audio_pipeline_link()
によって「舞台裏」で行われます。 この操作を確認するには、player/element_sdcard_mp3の例を確認してください。
In most of ESP-ADF examples connecting of Elements with Ringbuffers is done “behind the scenes” by a function audio_pipeline_link()
. To see this operation exposed check player/element_sdcard_mp3 example.
APIリファレンス¶
API Reference
関数¶
Functions
-
ringbuf_handle_t
rb_create
(int block_size, int n_blocks)¶ 合計サイズ= block_size * n_blocksでリングバッファを作成します。
Create ringbuffer with total size = block_size * n_blocks.
- Return
- ringbuf_handle_t
- Parameters
block_size
: 各ブロックのサイズblock_size
: Size of each blockn_blocks
: ブロック数n_blocks
: Number of blocks
-
esp_err_t
rb_destroy
(ringbuf_handle_t rb)¶ ringbuf_handle_tによって作成されたすべてのメモリをクリーンアップして解放します。
Cleanup and free all memory created by ringbuf_handle_t.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
rb
: リングバッファハンドルrb
: The Ringbuffer handle
-
esp_err_t
rb_abort
(ringbuf_handle_t rb)¶ リングバッファの読み取りまたは書き込み用のスペースができるまで待機を中止します。
Abort waiting until there is space for reading or writing of the ringbuffer.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
rb
: リングバッファハンドルrb
: The Ringbuffer handle
-
esp_err_t
rb_reset
(ringbuf_handle_t rb)¶ リングバッファをリセットし、すべての値を初期状態としてクリアします。
Reset ringbuffer, clear all values as initial state.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
rb
: リングバッファハンドルrb
: The Ringbuffer handle
-
int
rb_bytes_available
(ringbuf_handle_t rb)¶ リングバッファの使用可能な合計バイト数を取得します。
Get total bytes available of Ringbuffer.
- Return
- 使用可能な合計バイト数
total bytes available
- Parameters
rb
: リングバッファハンドルrb
: The Ringbuffer handle
-
int
rb_bytes_filled
(ringbuf_handle_t rb)¶ リングバッファを埋めたバイト数を取得します。
Get the number of bytes that have filled the ringbuffer.
- Return
- リングバッファを埋めたバイト数
The number of bytes that have filled the ringbuffer
- Parameters
rb
: リングバッファハンドルrb
: The Ringbuffer handle
-
int
rb_get_size
(ringbuf_handle_t rb)¶ リングバッファの合計サイズを取得します(バイト単位)
Get total size of Ringbuffer (in bytes)
- Return
- リングバッファの合計サイズ
total size of Ringbuffer
- Parameters
rb
: リングバッファハンドルrb
: The Ringbuffer handle
-
int
rb_read
(ringbuf_handle_t rb, char *buf, int len, TickType_t ticks_to_wait)¶ lenを使用してRingbufferから
buf
に読み取り、使用可能なringbufferバイトがlen
未満の場合に読み取るのに十分なバイトになるまで、tick_to_wait
ティックを待機します。 提供されたbuf
引数がNULL
の場合、ringbufferは単にポインターを進めることによって疑似読み取りを実行します。Read from Ringbuffer to
buf
with len and waittick_to_wait
ticks until enough bytes to read if the ringbuffer bytes available is less thanlen
. Ifbuf
argument provided isNULL
, then ringbuffer do pseudo reads by simply advancing pointers.- Return
- Number of bytes read
- Parameters
rb
: リングバッファハンドルrb
: The Ringbuffer handlebuf
: データを読み取るためのバッファポインタbuf
: The buffer pointer to read out datalen
: 長さのリクエストlen
: The length requestticks_to_wait
: 待つダニticks_to_wait
: The ticks to wait
-
int
rb_write
(ringbuf_handle_t rb, char *buf, int len, TickType_t ticks_to_wait)¶ len
を使用してbuf
からRingbufferに書き込み、使用可能なリングバッファスペースがlen
未満の場合は、書き込むのに十分なスペースになるまでtick_to_wait
ティックを待機します。Write to Ringbuffer from
buf
withlen
and waittick_to_wait
ticks until enough space to write if the ringbuffer space available is less thanlen
- Return
- Number of bytes written
- Parameters
rb
: リングバッファハンドルrb
: The Ringbuffer handlebuf
: バッファbuf
: The bufferlen
: 長さlen
: The lengthticks_to_wait
: 待つダニticks_to_wait
: The ticks to wait
-
esp_err_t
rb_done_write
(ringbuf_handle_t rb)¶ リングバッファへの書き込み状態の設定が完了しました。
Set status of writing to ringbuffer is done.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
rb
: リングバッファハンドルrb
: The Ringbuffer handle
-
esp_err_t
rb_unblock_reader
(ringbuf_handle_t rb)¶ rb_readからブロックを解除します。
Unblock from rb_read.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
rb
: リングバッファハンドルrb
: The Ringbuffer handle