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

i2s_write が間に合っていないと言う事が判ったので、
i2s_write() が最速になるように、i2s_config の設定を色々試して、下記の様に変更しました。
app_main()::main.c

APTX の1フレームのデコード済データ長は、 2,688 バイト みたいなので、
同じ値にしたかったのですが、I2S DMA の最大は、1024バイトのようなので、
.dma_buf_len = 672 にしました。
.dma_buf_count は、目一杯にしたかったのですが、取り敢えず、.dma_buf_count = 20 です。

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

なんとか、APTXのデコード部分を、2つのタスクを起動して、負荷の分散を行わせる事ができました。
これで、先般の、 "Pkt dropped" の表示がでなくなりました。

概要は、btc_a2dp_sink_data_ready()::btc_a2dp_sink.c が元々ありますが、
ここから、従来は、btc_a2dp_sink_handle_inc_media_Aptx(int8_t id,tBT_SBC_HDR *p_msg)::btc_a2dp_sink.c
(注: これは、 APTX 用に、btc_a2dp_sink_handle_inc_media(int8_t id,tBT_SBC_HDR *p_msg)::btc_a2dp_sink.c を改造したもの)
を直接コールしていた流れを、
別タスクを2つを起動させて置いて、そこから、上記関数をコールさせるようにしました。
これで、受信した音楽フレームを交互に振り分けて、APTXのデコード処理以降を分散させます。

なほ、上記2つのタスクは、それぞれ、別コアでの起動にします。

さて、音の方は言うと、音楽として判るようにはなりましたが、
まだまだ、まともには聴ける音ではありません。

常に、ビーンビーンと、かそれに近い雑音が出ていて、たまに、ピチピチ(チッピング音)が出ています。
まだまだ、プログラムとして問題があるようです。

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

ESP32 esp-idf bluetooth a2dp_sink への aptx decode 実装の考察 の続き、 #5 で説明した、プログラムの修正以外にも、結構な変更があったのですが、一応それらを、全て行って、
https://github.com/pali/libopenaptx のデコードのプログラムを組み込んで、試してみました。

結論から言えば、残念ながら、上記の、 libopenaptx のプログラムでは、おんちゃんの場合は、
まともな音は出ませんでした。

一応、Windows10+Bluetoothドングルで、 APTX でのフレーム受信までは出来るようになりました。

上記、 libopenaptx のプログラムでAPTX audio データをデコードして、I2S で音出ししてみると、
殆どノイズでうるさくて、まともに音楽は出てきません。

Windows10 の IE で YouTube を開いて、音楽を聴くと、 Bluetooth でペアリングした、ESP32 に繋げた I2S DAC ( https://www.switch-science.com/catalog/3572/ ) のヘッドホーンからは、それらしい音は出てきますが、ノイズの方が大きくて、まともには聴けません。

残念!!

最近のMSN の記事には、ウイルスに感染されたページが本当に多い。

普段通りに記事を見ていると、一日に一回は、必ず、 "Windowsシステムの修復が必要です。" とか言うポップアップが表示されるページにリダイレクトされる。

そのたびに、ブラウザーのプロセスを止めて対応しないといけない。

MSNの管理者は、なぜほったらかしにしているのだろうか?
記事を登録している所が、ハッキングされているのに、
何も対応しないのだろうか?

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

その後、あちこち、DEBUG表示を行って、調べてみました。
AVDTP(AUDIO/VIDEO DISTRIBUTION TRANPORT PROTOCOL SPECIFICATION) や、GAP(Generic Audio/Video Distribution Profile) 上の、
Idle -> Cofigured -> Open に至る部分が、下記のようです。

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 にインポートしてビルドすると下記エラーになります。
なんで、またエラーになるの? と言う気持ちですが、

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

アイテム

  • esp32-gysfdmaxb-server_2018.10.6.jpg
  • ESP32_gysfdmaxb_Server_resp-181005-1.jpg
  • esp32_gps-view-181005-1.jpg
  • ESP-WROOM-02-G`PS-2017.10.21-1l.jpg
  • PIC32MX_hid_basic_moouse_bredboard2_2017.10.15.jpg
  • PIC32MX_hid_basic_moouse_bredboard1_2017.10.15.jpg
  • PIC32MX hid_basic_mouse_usart_pps-output-settings_2017_10_14.jpg
  • PIC32MX hid_basic_mouse_usart_pps-input-settings_2017_10_14.jpg
  • PIC32MX hid_basic_mouse_usart_pin-table_2017_10_12.jpg
  • PIC32MX hid_basic_mouse_usart_pin-diagram_2017_10_12.jpg

ウェブページ

サイトナビ