2018年12月アーカイブ

ESP32 esp-idf bluetooth a2dp_sink への aptx decode 実装の考察 の続き、 #4 です。

A2DP aptx,aptx-hd のプロフィールのスペックは、 インターネットで探してみましたが、
結局見つかりませんでした。

注) その後、https://docs.microsoft.com/ja-jp/windows-hardware/drivers/bluetooth/bluetooth-profile-drivers-overview を見ていたら、 Details of the Bluetooth protocol are available on the Bluetooth website. があったので、見てみると、https://www.bluetooth.com/ja-jp/specifications/profiles-overview に A2DP の仕様書をみつけました。
Version1.3 から、Non-A2DP codecs (Vendor-Specific A2DP codecs) が加わったみたいです。 

しかし、Andoroid Developer の Fluoride Bluetooth stack に、A2DP の SBC,APTX,APTX-HD,LDAC
のプロファイル処理のサンプルがあったので、参考にしてみます。
Fluoride Bluetooth stack は、Andoriod Ver. 6 あたりから、Bluedroid に代わって採用されたBluetooth スタックとの事です。

ESP32 esp-idf bluetooth a2dp_sink への aptx decode 実装の考察 の続き、 #3 です。

まだ、Bluetooth の a2dp aptx のソース側のハードが揃わないので、取り敢えず、現状の アンドロイド Version 5 でのログを集めてみました。
手順は、先に ESP32 a2dp_sink (SBC版) を立ち上げておきます。

次に、Andoriod スマホ を起動させた時のログ

ESP32 esp-idf bluetooth a2dp_sink への aptx decode 実装の考察 の続き、 #2 です。

それでは、SBC データのデコード場所は、と言うと、
どうやら、 esp-idf/components/bt/bludroid/external/sbc/decoder/src/decoder-sbc.c の
OI_CODEC_SBC_DecodeFrame() ようです。
注) これ以降は、esp-idf/components/bt は, bt と表記します。

bt/bludroid/external/sbc/decoder/src/decoder-sbc.c

esp-idf examples の bluetooth/a2sp_sink へ aptx decode を組み込めるか、ソースを追って考察してみました。

先ず、i2s_write() を実行している所はと言うと、bt_app_av.c の bt_app_a2d_data_cb() の中で、
i2s_write() をコールしているようです。

bt_app_av.c

ESP32 esp-idf eclipse CentOS7 build error

CentOS7 で、esp-idf プロジェクトを eclipseでビルドしようとすると、エラーになりました。

esp-idf の eclipse (CentOS7) へのインストールは、下記手順で行いました。
https://docs.espressif.com/projects/esp-idf/en/latest/get-started/eclipse-setup.html

試しに、esp/esp-idf/examples/bluetooth/a2dp_sink を
eclipse にインポートしてビルドすると下記エラーになります。
なんで、またエラーになるの? と言う気持ちですが、

aptx-encode aptx-decode のプログラムサンプル

aptx-decode のプログラムサンプルを探していましたが、
libopenaptx が公開れていました。

https://github.com/pali/libopenaptx

aptx,aptx-hd の Encode は公開されているようですが、Decode のほうは、
どうやら、LDAC と同じく 非公開で、研究のための使用に限定されるような記述も何処かで、見かけたので注意が必要ですが。

This is Open Source implementation of Audio Processing Technology codec (aptX)
derived from ffmpeg 4.0 project and licensed under LGPLv2.1+.
ともあるので、どちらが正しいのかわかりません。

仕方がないので、おんちゃんは勉強のつもりでダウンロードして、CentOS7 Eclipseでビルドしてみました。

ESP32 esp-idf Bluetooth I2s Audio Examples

ESP32 esp-idf の examples の中に、Bluetooth のA2DP(Advanced Audio Distribution Profile:高度オーディオ配信プロファイル) を
使ったサンプルがあるので、それを試してみました。

 esp-idf>examples>bluetooth>a2dp_sink
上記、意味合いは、a2dp の受信側 の意味のよう。

概要は、上記リンク先のページに説明がありますが、
Bluetooth のデバイスとして、オーディオストリームを受信して、外付けの I2sコーデック (PCM5102等) か、内臓のDACに出力するとの事です。

其処の所の設定は、make menuconfig で出来ました。
例により、下記手順で、 
1. esp-idf/examples/bluetoooth/a2dp_sink  のディレクトリーを、自分の作業ディレクトリーへコピー
2. MSYS2 MinGW 32-bit ターミナルを起動して、上記の自分の作業ディレクトリーへ移動
$make menuconfig
   Serial flasher config --> Default serial poort = COMX に変更
   A2DP Examples Configuration --> ここで、外付け I2s,内臓 DACの指定、ピンの指定をする。
   exit
$make -j4
$make flash

3. スマホのBlutooth で接続して、音楽を流す。

後は、Eclipse にインポートして、プログラムを勉強します。

ESP32 esp-idf Eclipse でサンプルプログラムの確認。

ESP32 esp-idf Eclipse での開発環境ができたので、
WiFi Http Client のサンプルを、eclipse で試してみました。

プログラムは、git で入手した、esp-idf/examples 下に一杯あります。
取り敢えず、今回は、下記サンプルにしてみました。

esp-idf/examples/protocols/https_request (git hub のソース)

概要は、Wi-Fi クライアントで、ローカルのWi-Fi ルータに接続して、
インターネット上に公開せれているWebサーバーの HTML をダウンロードして、結果を、USB Serial で接続している、
PCのターミナルに表示する判りやすいサンプルプログラムです。

大雑把な手順は、
1. esp-idf/examples/protocols/https_request  のディレクトリーを、自分の作業ディレクトリーへコピー
2. MSYS2 MinGW 32-bit ターミナルを起動して、上記の自分の作業ディレクトリーへ移動
$make menuconfig
    ->  serial flash coonfig --> Default serial poort = COMX に変更
   exit
$make
3.Eclipse でプロジェクをインポート

ESP32 esp-idf Eclipse (Windows10+MSYS2) でのビルドエラー

ESP32 esp-idf を Eclipse (Windows10+MSYS2) 環境で出来るようにしてみました。

参考は、本家サイトの下記ページをしました。
https://docs.espressif.com/projects/esp-idf/en/latest/get-started/eclipse-setup.html

おんちゃんは、MSYS2(MinGW32) と esp-idf を別々にインストールしました。
先ず、 hello_world を MinGW32 でビルドできることを確認してから、
eclipse(eclipse-cpp-oxygen-2-win32) にインポートしました。

インポートの手順も、上記ページを参考にして行って、
プロジェクトのビルドを行いました。

ですが、一応コンパイルは通るのですが、最後の ELF を吐きだすリンクの所で
エラーになります。

 

このアーカイブについて

このページには、2018年12月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2018年10月です。

次のアーカイブは2019年1月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

カテゴリ

ウェブページ

サイトナビ