今回はあまり言及されることのない、Windows 8でのサウンド機能の改良について解説しよう。
Windowsのサウンド機能の変遷
覚えている方もおられるだろうが、Windowsが最初に登場したとき、サウンド機能はパソコンの標準機能ではなかった。正式にサウンドカードなどがサポートされたのは、Windows 3.0からだ。DOSの時代にはいろいろなサウンドカードが存在したが、Windows 3.0用に1991年に登場した「Multimedia Extension」によって、CD-ROMドライブとサウンドカードが正式サポートされたのだ。また、マイクロソフトが「Multimedia PC」なる仕様を提案し、パソコンメーカーなどにサウンドカードの搭載を呼びかけたこともあった。
初期のサウンドカードは、現在でいうPCM音源とMIDI音源を搭載しており、多く場合CD-ROMドライブ用のインターフェースを持っていた。当時は現在のストレージ用インターフェースの標準規格である「ATA」が制定される前であり、いくつかの規格が存在した。また音楽用CDの再生はCD-ROMドライブ側の機能を使う関係で、スピーカーに接続するサウンドカードと音声出力を接続する必要もあったからだ。
その後サウンド機能はパソコンの標準機能となっていき、その過程で圧縮音声データの伸張やMIDI音源、CD-DA再生、ミキサーなどがソフトウェアで実現された。また動画再生性能も向上し、オーバーレイを使わずにある程度の品質の動画を再生できるようになった。
動画は必然的に音声再生をともなうが、当時は動画再生とサウンドの再生タイミングを合わせることも難しかった。MP3の再生は、Windows 98で可能になっていたが、ソフトウェア処理による遅延があり、音質的にはあまりいいものではなかった。再生タイミングによっては、テンポが変わったりノイズが入ることもあった。
こうした問題もあってWindowsでは、ネットワークによるパケットの送信速度(一定時間内に送信するパケット数)に制限を加えて、サウンド再生のための処理時間を確保できるようにした。この制限はいまでもレジストリに残っている。
Windows 8でのメディア再生機能の改良は
バッテリー駆動時間を延ばすため
Windows 8ではバッテリー寿命や消費電力の改善のため、サウンド/ビデオの処理をハードウェアで行なう「オフロード」が可能になるように作られた。もちろん従来のWindowsでも、ビデオ再生/録画にGPU側の機能を使うことができた。しかし、ARM系のSoCでは動画関連のハードウェアだけでなく、音楽再生や静止画のエンコード/デコード処理などにも、ハードウェア機能を搭載しているものが少なくない。
一般的に同じ処理を行なうのであれば、ソフトウェアよりもハードウェアで処理したほうが全体の消費電力は小さくなる。そのため組み込み系SoCでは、サウンドやビデオなどファイル形式が決まったメディアデータ※1の、再生専用ハードウェアが組み込まれる傾向にあるというわけだ。
※1 MP3やMPEGなどは本来ハードウェア再生を前提として作られたフォーマット。
ビデオキャプチャーに関しては、Windows 8ではプログラムが大きく変更されている。従来の「DirectShow Capture API」ではなく、新たに作られた「Windows 8 Media Foundation Capture API」を使うようになった。これによりエンコード性能があがり、CPU使用率を下げることが可能になったという。WMVファイルのデコードでは、Windows 7ではCPU負荷が32%だったのに対して、Windows 8では14%に下がった。またキャプチャー画像のプレビューでは、同じく27%が8%に下がっている。
また、サウンド再生でもマルチスレッドを使うことで、再生のためのデータ形式の変換処理を並列に行なって、結果的にCPUがアイドル状態になる時間の割合が長くなった、つまり省電力化されたという。手順としては、さまざまなサウンド形式から再生に必要なデータ(サウンド機能が必要とするデータ形式)を、従来よりも大容量のバッファに保存しておき、次にデータを作る必要ができるまでは処理を休む。音楽データは時間に応じて一定量のデータを出力していくものなので、繰り返しの周期はバッファに貯める再生用データのサイズと、再生のビットレートで決まる。
より多くのデータをバッファに貯めれば、繰り返し周期を長くできるが、処理時間も比例して長くなるので、1曲を再生する時間で見ると、スリープする時間は変わらない。これに対して、処理を高速化して大きなバッファを使えば、一曲再生する時間でのスリープ時間の比は大きくなり、かつスリープの持続時間も長くできるようになる。
Windows 7までは、間欠的にスリープできる時間が10ミリ秒程度だった。これをWindows 8では、1秒程度まで延長したという(図1)。
この連載の記事
-
第34回
PC
Windows 8の狙いは、UIの変化よりもAPIの変化が本質 -
第33回
PC
Windows 8が動作しなくなった? 新しくなった修復機能 -
第32回
PC
Windows 8でIMEに求められる新しい要素とはなにか? -
第31回
PC
Windows 8の無線LANをコマンドラインで細かく制御 -
第30回
PC
Windows 8をマウスで使いやすくするレジストリの小技 -
第29回
PC
周辺機器・アプリがWindows 8/RTで動くか確認する方法 -
第28回
PC
Windows 8のキーボードショートカットを全公開 -
第27回
PC
Windows 8が使いにくい? マウスを変えると印象も変わる -
第26回
PC
実はNFCに対応しているWindows 8 ただしアプリは不足 -
第25回
PC
実は扱いがまったく異なるWindows 8でのタッチパネル -
第24回
PC
Surfaceから見えるWindows RTの実像と、将来PCへの影響 - この連載の一覧へ