Google Chromium でH.264のハードウェアアクセラレーション(VAAPI)を使用する
概要
今回はLinux min 19.1で動作確認を行いました。ubuntuでも動作するはずです。
ハードウェアアクセラレーションが有効になっているChromium バージョンをインストールし、chrome://flagsでハードウェアアクセラレーション(VAAPI)を有効にします。ChromiumのインストールしたChromiumにChromiumプラグインのh264ifyをインストールすれば(VP9に対応GPUであれば不要)、ハードウェアアクセラレーションを使った動画の視聴ができます。
「H.264のハードウェアアクセラレーション(VAAPI)を使用する」とタイトルに書きましたが、VP9対応のGPUであれば、VP9のハードウェアアクセラレーションでも再生することができます。VP9コーデックを使うサイトで有名なサイトはyoutubeです。
なお、VDPAUには対応しておりません。
今回関連するChromiumの 管理機能(隠し機能)
chrome://media-internals/ 再生メディアの詳細情報
chrome://flags chromiumの詳細な設定、管理
方法その1
Linuxパッケージ管理システム「Snap」を利用してハードウェアアクセラレーションが有効になっているChromium バージョンをインストールする。
参考にしたサイト
Linuxパッケージ管理システム「Snap」をインストールしていない場合、予め
インストールします。
sudo apt-get update sudo apt-get upgrade sudo apt-get install snapd
chromiumをsnapでインストールします。
sudo snap install --channel=candidate/vaapi chromium
アップデートのコマンド
sudo snap refresh
なお、インストール後の手順は「方法その2」の「Chromiumの設定」を参考にしてください。
方法その2
ハードウェアアクセラレーションが有効になっているChromium Betaをppaに追加しをインストール。
参考にしたサイト
Chromium Beta をインストール
ハードウェアアクセラレーションが有効になっているChromium Betaをppaに追加したのち、インストールします。
sudo add-apt-repository ppa:saiarcot895/chromium-beta
sudo apt-get update
sudo apt-get install chromium-browser
VAAPIドライバーをインストールしていない場合はインストールします。
sudo apt-get install i965-va-driver (intel用のVAAPIドライバー)
Chromiumの設定
Chromiumのchrome://flags にてハードウェアアクセラレーションを有効にします。
Chromium再起動後 chrome://gpu にて有効になっている確認します。
Chromiumプラグインのh264ifyをインストール
下記のサイトにてh264ifyをインストールします。
h264ifyは強制的に H.264 コーデックで再生させるためのプラグインです。すでにGPUがVP9に対応しているのであれば不要です。
Intel Quick Sync Video - Wikipedia にてIntelのGPUについて対応コーデックが確認が出来ます。
動作確認
youtubeのサイトを開き、任意の動画を閲覧します。動画を再生したままで、新しいタブを開き、chrome://media-internals/ にてハードウェアアクセラレーションが有効になっているか確認します。
Video_decoderの項目がGpuVideoDecoderになっていれば、ハードウェアアクセラレーションが有効になっています。
Linux ubuntu 、mint用のwifi driver等のリンク
realtek 8821au driver (GW-900Dなど)
MediaTekmt7610uDriver (GW-450Dなど)
DKMSの導入方法
参考にしたサイト
https://github.com/xtknight/mt7610u-linksys-ae6000-wifi-fixes
ソースを/usr/src/mt7610u_sta-1.0にコピー
sudo cp -R . /usr/src/mt7610u_sta-1.0
DKMSとしてインストール
sudo dkms add mt7610u_sta/1.0
sudo dkms build mt7610u_sta/1.0
sudo dkms install mt7610u_sta/1.0
DKMSからアンインストールする場合
sudo dkms remove -m mt7610u_sta -v 1.0 --all
dkms status コマンドで次のようなのエラーが出た場合、下記のwebページを参照すべし。
WARNING! Diff between built and installed module!
vboxhost: WARNING! Diff between built and installed module! | Lo Shiba, questo strano essere...
再起動時に認識しない場合の対処法
起動後、認識しないこともあるので、その場合ネットワークマネージャを再起動させる。
sudo systemctl restart network-manager
予めシャルスクリプトを作り、ダブルクリックするだけで起動できるようにすると便利である。
1.任意のディレクトリに空のドキュメントを作る。
2.次の内容をコピー・アンド・ペーストする。<ファイル名>.shとして保存する。
#!/bin/bash
sudo systemctl restart network-manager
3.コマンドで権限を与える*1。
chmod a+x <ファイル名>.sh
Windowsのドライバーを使ってインストール
その他
eMMCをSecure Eraseにて完全消去
参考にしたサイト
GParted Live on USB にて、ライブUSBからGPartedを起動させます。
今回はLIVA*1のeMMCのデータを消去しました。
GParted Live on USBの作成方法は下記を参考にしてください。
1.GParted Live on USBをUSB bootさせる。
usb bootは下記を参照してください。
(3)UbuntuやWindowsをUSBで起動してみよう! | 日経 xTECH(クロステック)
2.GPartedをデフォルトで起動させます。
3.デスクトップにGPartedのアイコンがありますので、ダブルクリックし、起動させてください。
4.その上で、除去したいデバイス名を確認してください。
5.下記のコマンドでデータを消去します。
sudo blkdiscard -s <デバイス名>
これで、データが消去されます。
Linux mint , ubuntu で Intel GPU によるVAAPI( ハードウェアアクセラレーション ) を使用できるようにする
VLCで動画を閲覧していた時のCPU使用率が50%と高く、ハードウェアアクセラレーション(動画再生支援)が適切に設定が出来ていないため設定しました。
今回使用した環境
CPU:Celeron N2807
GPU:Intel Atom® プロセッサー Z3700 シリーズ向けインテル® HD グラフィックス
OS:linux mint 19
この方法は Intel のCPUに内蔵されているGPUを使用する場合です。
まず、mpvプレイヤーで再生状況を確認しました。
mpv abcd.mp4 --hwdec=vaapi --vo=opengl
Playing: abcd.mp4
(+) Video --vid=1 (*) (h264 640x360 23.976fps)
(+) Audio --aid=1 --alang=und (*) (aac 2ch 44100Hz)
VO does not support requested hardware decoder, or loading it failed.
AO: [pulse] 44100Hz stereo 2ch float
VO: [opengl] 640x360 yuv420p
AV: 00:00:03 / 00:01:30 (3%) A-V: 0.000 Cache: 9s+5MB
VO does not support requested hardware decoder, or loading it failed.
とありますので、ハードウェアアクセラレーションが適切に設定できていないようです。
vainfo を先ず、インストールします。
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install vainfo
$ vainfo
libva info: VA-API version 1.1.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit
vaInitialize failed with error code -1 (unknown libva error),exit
とありますので、MintやUbuntu VAAPI を利用するためには libva1 と i965-va-driverのインストールが必要です*3*4。libva1はVAAPIのランタイム、i965-va-driverはIntel用のVAAPI ドライバーです。すでにMintではlibva1はインストール済みです。
CentOS で VAAPI を利用するためには libva と libva-intel-driver が必要です*5*6。
i965-va-driver をインストールします。
今回は、Synapticパッケージマネージャにてインストールしました。
Synapricパッケージマネージャには検索機能がありますので、「vaapi」 と検索します。
i965-va-driverにチェックボックスにチェックし、適用をクリックしインストールをします。なお上の写真はi965-va-driverインストール後の写真です。コマンドでインストールする場合は「 sudo apt-get install i965-va-driver 」 でインストールできます。
インストール後にvainfoで状況を確認します。
$ vainfo
libva info: VA-API version 1.1.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_1
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.1 (libva 2.1.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Bay Trail - 2.1.0
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Simple : VAEntrypointEncSlice
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileH264StereoHigh : VAEntrypointVLD
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileNone : VAEntrypointVideoProc
VAProfileJPEGBaseline : VAEntrypointVLD
きちんと認識されているようです。VLCのハードウェアアクセラレーションの設定をVAAPI、出力をOpenGLにしました。その結果、CPU使用率も下がりました。
chromiumもハードウェアアクセラレーションを使用したい場合は下記を見てください。
参考になったサイト
*2:LIVA【終息】 | 株式会社リンクスインターナショナル
*3:QSV 対応 Intel CPU で H.264 のハードウェアエンコード on Linux - Qiita
*4:vaInitialize failed with error code -1 (unknown libva error),exit · Issue #60 · intel/libva · GitHub
*5:QSV 対応 Intel CPU で H.264 のハードウェアエンコード on Linux - Qiita
*6:vaInitialize failed with error code -1 (unknown libva error),exit · Issue #60 · intel/libva · GitHub
Personal Blocklist が機能しなくなった問題。また、代替プラグインuBlacklistについて。
Personal Blocklist は、見たくないサイトを任意で指定して除外するプラグインです。
Googleで検索した時に検索結果の下に表示されている「~をブロック」をクリックしたり、メニューバーに表示されるアイコンから「現在表示中のドメイン/ホストをブロック:~」をクリックしてブロックリストを作り検索結果から除外します。
しかし、2018年9月よりpersonal blocklistが全く機能しなくなりました。
使用方法
代替プラグインとして、uBlacklistが使えます。
Googleで検索した時に検索結果の下に表示されている「~をブロック」をクリックしたり、メニューバーに表示されるアイコンから「オプション」をクリックするとブラックリストが表示されるのでそれを編集することでGoogleの検索結果から除外出来ます。
personal blocklistからのデーターの移動
personal blocklistのエクスポート機能を使うと下記のようなフォーマットで出力されます。
----------------------------------------------------
hamusoku.com/
jin115.com/
www.akb48matomemory.com/
----------------------------------------------------
このままの状態では、uBlacklistで使用できません。
uBlacklistで使用する場合は、先頭に *://*. 、末尾に /* を加えてください。
----------------------------------------------------
*://*.hamusoku.com/*
*://*.jin115.com/*
*://*.www.akb48matomemory.com/*
----------------------------------------------------
uBlacklistは、マッチパターンと正規表現が使用できます。
* はワイルドカードです。詳しくは、マッチパターン - Mozilla | MDN をご覧ください。
秋月のUSBオーディオ UAC3552A を活用する
秋月電子で販売している、10W+10WステレオD級アンプモジュール(USBI/F付き をDACとして使用しました。
因みに、何かしらの改造が必要です。改造しないと、ステレオミニジャックのみから出力できますが、音量が小さいです。
改造の方向性として、
D級アンプのTA1101Bのみを使用する為の改造か、
DACのUAC3552Aのみを使用する為の改造か、
TA1101BとUAC3552Aの両方を使用する為の改造が考えられます。
今回は、DACのUAC3552Aのみ使用する方法を考えます。UAC3552Aの出力がデータシートによると12mW(32Ω時)ですが、結局外付けアンプを追加しました。外付けアンプを付けなくても音は出ますので、利便性を求める方や手持ちのヘッドホンアンプを使用する場合は、ゲイン調整だけでいいかと思います。
D級アンプのTA1101Bを使用したい方は後述のリンク集を参照してください。
ゲインの調整
冒頭で述べた通り、改造しなければステレオミニジャックのみから出力できますが、音量が小さいです。
UAC3552Aのデータシート (左の図)を見るとUAC3552Aにはローパスフィルターが実装されていることが分かります。右の図は、サンプル回路図でのローパスフィルター部分になります。ローパスフィルターはUAC3552Aの内蔵のオペアンプで構成されています。
オペアンプのローパスフィルタの遮断周波数(Hz)は、
で表す事が出来ます(R2をFOPL(R)とFINL(R)の間にある抵抗の15KΩとする)。
従って、入力抵抗(FOUTL(R)とFOPL(R)の間にある抵抗)を変更しても、遮断周波数に全く影響しないので、入力抵抗(15kΩ)を交換してゲイン(利得)調整する事が出来ます。これは、コンデンサー(330p)を無視すれば一般的なオペアンプの 反転増幅回路と見なすことができるからです。
出力を2倍にしたいならば、入力抵抗(15kΩ)を7.5kΩに
出力を3倍にしたいならば、入力抵抗(15kΩ)を5kΩに
出力を約4倍にしたいならば、入力抵抗(15kΩ)を3.6KΩに
赤色で囲んでいるチップ抵抗(入力抵抗)を交換します。5kΩ(ゲイン3倍)がお勧めです。
上の写真では、すでにチップ(抵抗5kΩ(ゲイン3倍))を交換してあります。
ヘッドホンアンプを外付けしない場合はこれで改造は終わりです。あとは、三端子レギュレーター端子を切断して、そこにバスパワーの5Vを接続してください(下の写真を参照)。USB端子(D+、D-)とGNDは付属の実体配線図を参考にしてください。
ヘッドホンアンプの外付け
UAC3552Aの最大出力がデータシートによると12mW(32Ω時)です。このままでも実用上差し支えありませんが、バスパワーで動作するヘッドホンアンプを外付けしました。ところで、オペアンプを使用する場合は両電源を使用しますが、DACと同じ電源で仮想GNDを作ることはできません。これは、DACのGNDと仮想GNDが構造上ショートしているためです。そこで、チャージポンプIC LT1054を使用すれば負電源ができ、先ほどの問題は発生しません。ただ秋月電子で400円もするので、ほかの方法を考えます。(後で分かったことですが、チャージポンプIC ICL7660のセカンドソース品TJ7660が秋月で60円で販売されているようです。この価格なら、オペアンプ式のアンプでもいいかと思います。)
今回は、単電源式のアンプをディスクリート設計することにします。回路図は、誠文堂新光社から出版された 奥沢 清吉/奥沢 煕【著】「はじめてトランジスター回路を設計する本」とMini Watters project を参考に設計しました。
差動式アンプではありませんので、ペア選別が不要です。「はじめてトランジスター回路を設計する本」では、Tr3のベースの付近にブートトラップ用*1の電解コンデンサーがありましたが、音質劣化を招くため*2設置しませんでした。トランジスターは、2N3904(NPN) 2N3906(PNP)を使用していますが、2SC1815(NPN) 2SA1015(PNP)を代替使用しても構いません。
電源は利便性を考えヘッドホンアンプはバスパワー(5V)で動作するようにしました。電源回路は、ノイズ対策としてLCフィルターと10Ωの抵抗を使いました。LCフィルターはL-chとR-ch共通ですが、R10Ωの抵抗はL-chとR-chそれぞれ独立していますので留意してください。Tr1のバイアス抵抗の近くに0.1uFのコンデンサーがありますが、ノイズ対策用のバイパスコンデンサーです。なるべくバイアス抵抗の近くにバイパスコンデンサーを配置してください。
なお、ヘッドホンアンプ部分の電源を外部電源にするとノイズが激減すると思います。因みにこのアンプの利得は約3倍です。1kΩと250Ωの並列抵抗は200Ω(200=1/(1/1000+1/250))で、gain=1+(200/100)=3 [倍]となります。
回路図中のUAC3552A analog out は下の図のL-ch out put、R-ch out put に相当します。L-ch out put、R-ch out put を外付けアンプの入力に接続してください。DACの電源は三端子レギュレーター端子を切断して、そこにバスパワーの5Vを接続してください。USB端子(D+、D-)とGNDは付属の実体配線図を参考にしてください。
UAC3552Aは24bit48kHzで一応ハイレゾということもあって、音質は600円のDACにしてはなかなかの高音質だと思います。
リンク集
秋月の10W+10WステレオD級アンプモジュール(USB I/F付き)を活用
D級アンプを使用するための基本的な改造方法を詳細な図解で紹介。秋月のモジュールを改造する場合は必ず閲覧したほうが良い。
USB接続ヘッドフォーンアンプを作ってみる - Biglobe
電源周りの回路、DAC(UAC3552A)周りの回路が詳細に紹介されている。また、opアンプを使用た外付けアンプの改造も併せて紹介してある。
秋月のモジュールをアンプとdacの両方が使用できるように改造した記事。
秋月のモジュールをアンプとdacの両方が使用できるように改造した記事。
TA1101Bにショットキーバリアダイオードを追加し安定性を向上させる改造や、TA1101B UAC3552A の利得アップの改造。それに伴う改造によりLPFの遮断周波数が変わるため、コンデンサーの変更も併せて変更している。
秋月USBオーディオ(D級アンプモジュール) : 趣味の覚書(Junk_Audio)
秋月の10W+10WステレオD級アンプモジュールの部分的な回路図が掲載されている。
バスパワーでTA1101BとUAC3552Aの両方を使用した事例。
秋月TA1101B D級アンプ基板の改造 その1 : TYO.STDのおきらく写真生活
TA1101B D級アンプのみを使用した事例。
USBアンプモジュール-喪失のメロディー : すみません、取り乱しました。