オーディオストリーム¶
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
- HTTPストリーム
HTTP Stream
- FatFsストリーム
FatFs Stream
- Rawストリーム
Raw Stream
- Spiffsストリーム
Spiffs Stream
ストリームタイプを設定するには、提供されている構造を使用します。 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 withaudio_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 chipI2S_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.
関数¶
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 handlerate
: クロックレート(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 handlevolume
: ストリームの音量が設定されます。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 handlevolume
: ストリームの音量が設定されます。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
-
audio_stream_type_t
HTTPストリーム¶
HTTP Stream
関数¶
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
- 成功したESP_OK
- 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
- 成功したESP_OK
- 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
-
http_stream_event_id_t
-
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
-
audio_stream_type_t
マクロ¶
Macros
-
HTTP_STREAM_TASK_STACK
¶
-
HTTP_STREAM_TASK_CORE
¶
-
HTTP_STREAM_TASK_PRIO
¶
-
HTTP_STREAM_RINGBUFFER_SIZE
¶
-
HTTP_STREAM_CFG_DEFAULT
()¶
列挙¶
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
関数¶
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)
-
audio_stream_type_t
Rawストリーム¶
Raw Stream
関数¶
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 handlebuffer
: バッファbuffer
: The bufferbuf_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 handlebuffer
: バッファbuffer
: The bufferbuf_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
- AUDIO_STREAM_READER, e.g. [i2s]->[filter]->[raw],[i2s]->[codec-amr]->[raw]
Spiffsストリーム¶
Spiffs Stream
関数¶
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)
-
audio_stream_type_t