オーディオストリーム

Audio Streams

オーディオデータを取得し、処理後にデータを送信するオーディオ要素は、オーディオストリームと呼ばれます。

An Audio Element responsible for acquiring of audio data and then sending the data out after processing, is called the Audio Stream.

次のストリームタイプがサポートされています:

The following stream types are supported:

ストリームタイプを設定するには、提供されている構造を使用します。 I2Sストリームのi2s_stream_cfg_tと、audio_stream_type_t列挙子。

To set the stream type, use provided structure, e.g. i2s_stream_cfg_t for I2S stream, together with audio_stream_type_t enumerator.

APIの詳細については、以下の説明を参照してください。

See description below for the API details.

I2Sストリーム

I2S Stream

I2Sストリームタイプが「ライター」の場合、データはコーデックチップまたはESP32の内部DACのいずれかに送信できます。 構成を簡素化するために、それぞれのケースをカバーする2つのマクロが提供されています:

When the I2S stream type is “writer”, the data may be sent either to a codec chip or to the internal DAC of ESP32. To simplify configuration, two macros are provided to cover each case:
  • I2S_STREAM_CFG_DEFAULT - I2Sストリームはコーデックチップと通信しています
    I2S_STREAM_CFG_DEFAULT - the I2S stream is communicating with a codec chip
  • I2S_STREAM_INTERNAL_DAC_CFG_DEFAULT - ストリームデータはDACに送信されます
    I2S_STREAM_INTERNAL_DAC_CFG_DEFAULT - the stream data are sent to the DAC

各マクロは、サンプルレート、サンプルあたりのビット数、DMAバッファ長など、他のいくつかのストリームパラメータを構成します。

Each macro configures several other stream parameters such as sample rate, bits per sample, DMA buffer length, etc.

ヘッダーファイル

Header File

関数

Functions
audio_element_handle_t i2s_stream_init(i2s_stream_cfg_t *config)

ストリームタイプがAUDIO_STREAM_READERまたはAUDIO_STREAM_WRITERの構成に応じて、オーディオ要素へのハンドルを作成して、I2Sから別の要素にデータをストリーミングしたり、I2Sに送信された他の要素からデータを取得したりします。

Create a handle to an Audio Element to stream data from I2S to another Element or get data from other elements sent to I2S, depending on the configuration of stream type is AUDIO_STREAM_READER or AUDIO_STREAM_WRITER.

Note
組み込みDACモードでI2Sストリームが有効になっている場合は、I2S_NUM_1を使用しないでください。 内蔵DAC機能は、現在のESP32チップのI2S0でのみサポートされています。
If I2S stream is enabled with built-in DAC mode, please don’t use I2S_NUM_1. The built-in DAC functions are only supported on I2S0 for the current ESP32 chip.
Return
オーディオエレメントハンドル
The Audio Element handle
Parameters
  • config: 構成
    config: The configuration

esp_err_t i2s_stream_set_clk(audio_element_handle_t i2s_stream, int rate, int bits, int ch)

I2Sストリームのセットアップクロック。この関数は、i2s_stream_initによって作成されたハンドルでのみ使用されます。

Setup clock for I2S Stream, this function is only used with handle created by i2s_stream_init

Return
  • ESP_OK
  • ESP_FAIL
Parameters
  • i2s_stream: i2s要素ハンドル
    i2s_stream: The i2s element handle
  • rate: クロックレート(Hz)
    rate: Clock rate (in Hz)
  • bits: オーディオビット幅(8、16、24、32)
    bits: Audio bit width (8, 16, 24, 32)
  • ch: オーディオチャンネル数(1:モノラル、2:ステレオ)
    ch: Number of Audio channels (1: Mono, 2: Stereo)

esp_err_t i2s_alc_volume_set(audio_element_handle_t i2s_stream, int volume)

ALCを使用してストリームのボリュームを設定します。

Setup volume of stream by using ALC.

Return
  • ESP_OK
  • ESP_FAIL
Parameters
  • i2s_stream: i2s要素ハンドル
    i2s_stream: The i2s element handle
  • volume: ストリームの音量が設定されます。
    volume: The volume of stream will be set.

esp_err_t i2s_alc_volume_get(audio_element_handle_t i2s_stream, int *volume)

ストリームのボリュームを取得します。

Get volume of stream.

Return
  • ESP_OK
  • ESP_FAIL
Parameters
  • i2s_stream: i2s要素ハンドル
    i2s_stream: The i2s element handle
  • volume: ストリームの音量が設定されます。
    volume: The volume of stream

構造体

Structures
struct i2s_stream_cfg_t

I2Sストリーム構成エントリがゼロの場合、デフォルト値が使用されます。

I2S Stream configurations Default value will be used if any entry is zero.

Public Members

audio_stream_type_t type

ストリームの種類

Type of stream
i2s_config_t i2s_config

I2Sドライバー構成

I2S driver configurations
i2s_port_t i2s_port

I2Sドライバーハードウェアポート

I2S driver hardware port
bool use_alc

ALCのフラグです。 ALCを使用する場合、値はtrueです。 または値がfalse

It is a flag for ALC. If use ALC, the value is true. Or the value is false
int volume

音声入力データの音量を設定します。

The volume of audio input data will be set.
int out_rb_size

出力リングバッファのサイズ

Size of output ringbuffer
int task_stack

タスクスタックサイズ

Task stack size
int task_core

コアで実行されているタスク(0または1)

Task running in core (0 or 1)
int task_prio

タスクの優先度(freeRTOSの優先度に基づく)

Task priority (based on freeRTOS priority)
int multi_out_num

複数出力の数

The number of multiple output
bool uninstall_drv

ストリームが破壊されたときにi2sドライバーをアンインストールするかどうか

whether uninstall the i2s driver when stream destroyed

マクロ

Macros
I2S_STREAM_TASK_STACK
I2S_STREAM_BUF_SIZE
I2S_STREAM_TASK_PRIO
I2S_STREAM_TASK_CORE
I2S_STREAM_RINGBUFFER_SIZE
I2S_STREAM_CFG_DEFAULT()
I2S_STREAM_INTERNAL_DAC_CFG_DEFAULT()

HTTPストリーム

HTTP Stream

ヘッダーファイル

Header File

関数

Functions
audio_element_handle_t http_stream_init(http_stream_cfg_t *config)

ストリームタイプ(AUDIO_STREAM_READERまたはAUDIO_STREAM_WRITER)の構成に応じて、オーディオ要素へのハンドルを作成して、HTTPから別の要素にデータをストリーミングしたり、HTTPに送信された他の要素からデータを取得したりします。

Create a handle to an Audio Element to stream data from HTTP to another Element or get data from other elements sent to HTTP, depending on the configuration the stream type, either AUDIO_STREAM_READER or AUDIO_STREAM_WRITER.

Return
オーディオエレメントハンドル
The Audio Element handle
Parameters
  • config: 構成
    config: The configuration

esp_err_t http_stream_next_track(audio_element_handle_t el)

プレイリストの次のトラックに接続します。

Connect to next track in the playlist.

この関数は、http_streamのevent_handlerで使用できます。 ユーザーは、HTTP_STREAM_FINISH_TRACKイベントを取得したときに、この関数を呼び出してプレイリストの次のトラックに接続できます。

This function can be used in event_handler of http_stream. User can call this function to connect to next track in playlist when he/she gets HTTP_STREAM_FINISH_TRACK event

Return
  • 成功したESP_OK
    ESP_OK on success
  • エラー時のESP_FAIL
    ESP_FAIL on errors
Parameters
  • el: http_stream要素ハンドル
    el: The http_stream element handle

esp_err_t http_stream_restart(audio_element_handle_t el)
esp_err_t http_stream_fetch_again(audio_element_handle_t el)

トラックをもう一度フェッチしてみてください。

Try to fetch the tracks again.

これがライブストリームの場合、URIをフェッチし続ける必要があります。

If this is live stream we will need to keep fetching URIs.

Return
  • 成功したESP_OK
    ESP_OK on success
  • プレイリストが終了した場合はESP_ERR_NOT_SUPPORTED
    ESP_ERR_NOT_SUPPORTED if playlist is finished
Parameters
  • el: http_stream要素ハンドル
    el: The http_stream element handle

構造体

Structures
struct http_stream_event_msg_t

イベントメッセージをストリーミングします。

Stream event message.

Public Members

http_stream_event_id_t event_id

イベントID

Event ID
void *http_client

このHTTPストリームで使用するHTTPクライアントへの参照

Reference to HTTP Client using by this HTTP Stream
void *buffer

オーディオ要素によるバッファの参照

Reference to Buffer using by the Audio Element
int buffer_len

バッファの長さ

Length of buffer
void *user_data

http_stream_cfg_tからのユーザーデータコンテキスト

User data context, from http_stream_cfg_t
audio_element_handle_t el

オーディオ要素のコンテキスト

Audio element context
struct http_stream_cfg_t

HTTPストリーム構成エントリがゼロの場合、デフォルト値が使用されます。

HTTP Stream configurations Default value will be used if any entry is zero.

Public Members

audio_stream_type_t type

ストリームの種類

Type of stream
int out_rb_size

出力リングバッファのサイズ

Size of output ringbuffer
int task_stack

タスクスタックサイズ

Task stack size
int task_core

コアで実行されているタスク(0または1)

Task running in core (0 or 1)
int task_prio

タスクの優先度(freeRTOSの優先度に基づく)

Task priority (based on freeRTOS priority)
http_stream_event_handle_t event_handle

HTTPストリームのフック関数

The hook function for HTTP Stream
void *user_data

ユーザーデータコンテキスト

User data context
bool auto_connect_next_track

開閉せずに次のトラックを接続する

connect next track without open/close
bool enable_playlist_parser

プレイリストパーサーを有効にする

Enable playlist parser
int multi_out_num

複数出力の数

The number of multiple output

マクロ

Macros
HTTP_STREAM_TASK_STACK
HTTP_STREAM_TASK_CORE
HTTP_STREAM_TASK_PRIO
HTTP_STREAM_RINGBUFFER_SIZE
HTTP_STREAM_CFG_DEFAULT()

タイプ定義

Type Definitions
typedef int (*http_stream_event_handle_t)(http_stream_event_msg_t *msg)

列挙

Enumerations
enum http_stream_event_id_t

HTTPストリームフックタイプ。

HTTP Stream hook type.

Values:

HTTP_STREAM_PRE_REQUEST = 0x01

イベントハンドラは、HTTPクライアントがサーバーに接続する前に呼び出されます

The event handler will be called before HTTP Client making the connection to the server
HTTP_STREAM_ON_REQUEST

HTTPクライアントがデータを要求しているときにイベントハンドラーが呼び出されます。関数が値(-1:ESP_FAIL)を返すと、HTTPクライアントは停止します。関数が値 > 0を返すと、HTTPストリームはpost_fieldを無視します関数が値 = 0を返す場合、HTTPストリームはpost_fieldからデータを送信し続けます(存在する場合)

The event handler will be called when HTTP Client is requesting data, If the fucntion return the value (-1: ESP_FAIL), HTTP Client will be stopped If the fucntion return the value > 0, HTTP Stream will ignore the post_field If the fucntion return the value = 0, HTTP Stream continue send data from post_field (if any)
HTTP_STREAM_ON_RESPONSE

HTTPクライアントがデータを受信しているときにイベントハンドラーが呼び出されます機能が値(-1:ESP_FAIL)を返す場合、HTTPクライアントは停止します機能が値 > 0を返す場合、HTTPストリームは読み取り関数を無視します機能が戻る場合 値 = 0、HTTPストリームはHTTPサーバーからのデータの読み取りを続行します

The event handler will be called when HTTP Client is receiving data If the fucntion return the value (-1: ESP_FAIL), HTTP Client will be stopped If the fucntion return the value > 0, HTTP Stream will ignore the read function If the fucntion return the value = 0, HTTP Stream continue read data from HTTP Server
HTTP_STREAM_POST_REQUEST

イベントハンドラーは、HTTPクライアントがヘッダーと本文をサーバーに送信した後、ヘッダーをフェッチする前に呼び出されます。

The event handler will be called after HTTP Client send header and body to the server, before fetching the headers
HTTP_STREAM_FINISH_REQUEST

イベントハンドラーは、HTTPクライアントがヘッダーをフェッチし、HTTPボディを読み取る準備ができた後に呼び出されます

The event handler will be called after HTTP Client fetch the header and ready to read HTTP body
HTTP_STREAM_RESOLVE_ALL_TRACKS
HTTP_STREAM_FINISH_TRACK
HTTP_STREAM_FINISH_PLAYLIST

FatFsストリーム

FatFs Stream

ヘッダーファイル

Header File

関数

Functions
audio_element_handle_t fatfs_stream_init(fatfs_stream_cfg_t *config)

ストリームタイプ(AUDIO_STREAM_READERまたはAUDIO_STREAM_WRITER)の構成に応じて、オーディオ要素へのハンドルを作成して、FatFから別の要素にデータをストリーミングしたり、FatFに書き込まれた他の要素からデータを取得したりします。

Create a handle to an Audio Element to stream data from FatFs to another Element or get data from other elements written to FatFs, depending on the configuration the stream type, either AUDIO_STREAM_READER or AUDIO_STREAM_WRITER.

Return
オーディオエレメントハンドル
The Audio Element handle
Parameters
  • config: 構成
    config: The configuration

構造体

Structures
struct fatfs_stream_cfg_t

FATFSストリーム構成。エントリがゼロの場合、構成はデフォルト値に設定されます。

FATFS Stream configurations, if any entry is zero then the configuration will be set to default values.

Public Members

audio_stream_type_t type

ストリームタイプ

Stream type
int buf_sz

オーディオ要素のバッファサイズ

Audio Element Buffer size
int out_rb_size

出力リングバッファのサイズ

Size of output ringbuffer
int task_stack

タスクスタックサイズ

Task stack size
int task_core

コアで実行されているタスク(0または1)

Task running in core (0 or 1)
int task_prio

タスクの優先度(freeRTOSの優先度に基づく)

Task priority (based on freeRTOS priority)

マクロ

Macros
FATFS_STREAM_BUF_SIZE
FATFS_STREAM_TASK_STACK
FATFS_STREAM_TASK_CORE
FATFS_STREAM_TASK_PRIO
FATFS_STREAM_RINGBUFFER_SIZE
FATFS_STREAM_CFG_DEFAULT()

Rawストリーム

Raw Stream

ヘッダーファイル

Header File

関数

Functions
audio_element_handle_t raw_stream_init(raw_stream_cfg_t *cfg)

RAWストリームを初期化します。

Initialize RAW stream.

Return
オーディオエレメントハンドル
The audio element handle
Parameters
  • cfg: RAWストリーム構成
    cfg: The RAW Stream configuration

int raw_stream_read(audio_element_handle_t pipeline, char *buffer, int buf_size)

Streamからデータを読み取ります。

Read data from Stream.

Return
実際に読み取られたバイト数。
Number of bytes actually read.
Parameters
  • pipeline: オーディオパイプラインハンドル
    pipeline: The audio pipeline handle
  • buffer: バッファ
    buffer: The buffer
  • buf_size: 読み取る最大バイト数。
    buf_size: Maximum number of bytes to be read.

int raw_stream_write(audio_element_handle_t pipeline, char *buffer, int buf_size)

ストリームにデータを書き込みます。

Write data to Stream.

Return
書き込まれたバイト数
Number of bytes written
Parameters
  • pipeline: オーディオパイプラインハンドル
    pipeline: The audio pipeline handle
  • buffer: バッファ
    buffer: The buffer
  • buf_size: 書き込むバイト数
    buf_size: Number of bytes to write

構造体

Structures
struct raw_stream_cfg_t

Rawストリームは、出力ストリームなしでパイプラインデータを取得したり、入力ストリームなしでパイプラインデータを埋めたりするためのAPIを提供します。 ストリームには、リーダーとライターの2つのタイプ/モードがあります:

Raw stream provides APIs to obtain the pipeline data without output stream or fill the pipeline data without input stream. The stream has two types / modes, reader and writer:

  • AUDIO_STREAM_READER, e.g. [i2s]->[filter]->[raw],[i2s]->[codec-amr]->[raw]
    AUDIO_STREAM_READER, e.g. [i2s]->[filter]->[raw],[i2s]->[codec-amr]->[raw]
  • AUDIO_STREAM_WRITER, e.g. [raw]->[codec-mp3]->[i2s] Rawストリーム構成
    AUDIO_STREAM_WRITER, e.g. [raw]->[codec-mp3]->[i2s] Raw Stream configurations

Public Members

audio_stream_type_t type

ストリームの種類

Type of stream
int out_rb_size

出力リングバッファのサイズ

Size of output ringbuffer

マクロ

Macros
RAW_STREAM_RINGBUFFER_SIZE
RAW_STREAM_CFG_DEFAULT()

Spiffsストリーム

Spiffs Stream

ヘッダーファイル

Header File

関数

Functions
audio_element_handle_t spiffs_stream_init(spiffs_stream_cfg_t *config)

ストリームタイプ(AUDIO_STREAM_READERまたはAUDIO_STREAM_WRITER)の構成に応じて、オーディオ要素へのハンドルを作成して、SPIFFSから別の要素にデータをストリーミングしたり、SPIFFSに書き込まれた他の要素からデータを取得したりします。

Create a handle to an Audio Element to stream data from SPIFFS to another Element or get data from other elements written to SPIFFS, depending on the configuration the stream type, either AUDIO_STREAM_READER or AUDIO_STREAM_WRITER.

Return
オーディオエレメントハンドル
The Audio Element handle
Parameters
  • config: 構成
    config: The configuration

構造体

Structures
struct spiffs_stream_cfg_t

SPIFFSストリーム構成。エントリがゼロの場合、構成はデフォルト値に設定されます。

SPIFFS Stream configuration, if any entry is zero then the configuration will be set to default values.

Public Members

audio_stream_type_t type

ストリームタイプ

Stream type
int buf_sz

オーディオ要素のバッファサイズ

Audio Element Buffer size
int out_rb_size

出力リングバッファのサイズ

Size of output ringbuffer
int task_stack

タスクスタックサイズ

Task stack size
int task_core

コアで実行されているタスク(0または1)

Task running in core (0 or 1)
int task_prio

タスクの優先度(freeRTOSの優先度に基づく)

Task priority (based on freeRTOS priority)

マクロ

Macros
SPIFFS_STREAM_BUF_SIZE
SPIFFS_STREAM_TASK_STACK
SPIFFS_STREAM_TASK_CORE
SPIFFS_STREAM_TASK_PRIO
SPIFFS_STREAM_RINGBUFFER_SIZE
SPIFFS_STREAM_CFG_DEFAULT()