Presentation is loading. Please wait.

Presentation is loading. Please wait.

タイムスタンプ付ストリームI/Oによる音の実時間処理

Similar presentations


Presentation on theme: "タイムスタンプ付ストリームI/Oによる音の実時間処理"— Presentation transcript:

1 タイムスタンプ付ストリームI/Oによる音の実時間処理
学籍番号 栗田 亮 指導教官 千葉 滋 講師

2 音のサンプリングの仕組み サンプリング・・・音をデジタル変換し記録する技術 Linuxカーネルにおける音の録音 kernel
サウンドデバイスにアクセスして行う ADC・・・アナログ・デジタル変換器 割り込み・・・カーネルバッファにデジタルデータが格納される read()・・・カーネルバッファからアプリケーションバッファへサウンドデータをコピー kernel application アナログデータ buffer buffer ADC

3 音飛び サンプリングでの問題 ー 音飛び 音飛びが生じると・・・一部のデータが抜け落ち、抜け落ちた分余計に記録してしまう
原因1:割り込み処理の遅れ 実際に高負荷をかけたが確認されなかった 原因2:アプリケーションの遅れ カーネルバッファが一杯になり、後からきたデータが破棄されて失われてしまう サンプリングと同時に複数のアプリケーションを実行させていると、マシンに負荷がかかり生じる

4 リアルタイムOSによる対処 既存の汎用リアルタイムOS RT-Linux ART-Linux 割り込み処理を高速化する機能を提供
音飛びの問題ではあまり重要ではない プログラミングが複雑 ART-Linux 非リアルタイム処理が遅くなる まだ研究レベル

5 提案するシステム TS-I/O (Time Stamp - I/O)
size=10 時刻 4 6 10秒 音飛び kernel buffer application buffer size=8 サウンド データ buf tsize タイム スタンプ 0..4 6..10 tbuf

6 TS-I/Oの利用 ソフトリアルタイムのI/O処理が可能に タイムスタンプを元にリカバリー処理が可能 ソフトリアルタイム・・・音飛びに対処
音飛びの発生をアプリケーションに通知 メディアストリーム処理では、応答性よりも時間軸に沿ったI/O管理が重要 複数のメディアとの同期  e.g. 自動伴奏、カラオケ I/Oのみなので、システムはシンプル タイムスタンプを元にリカバリー処理が可能   e.g. 無音データを挿入することで実時間に沿った再生が可能

7 追加したシステムコール read_gettbuf(fd,buf,tbuf,size,tsize)
read(fd,buf,size)+タイムスタンプの取り出し tbuf・・・タイムスタンプを格納するバッファ tsize・・・タイムスタンプのサイズ kernel buffer application buffer size サウンド データ buf tsize タイム スタンプ 0..4 6..10 tbuf

8 TS-I/Oの実装 対象にしたデバイス・ドライバ Linux2.2.19,linux/drivers/sound/es1371.c
es1371_read()・・・カーネルバッファにたまったサウンドデータをアプリケーションバッファへコピーする関数 es1371_interrupt()・・・カーネルバッファにI/Oデータが格納された際に呼ばれる割り込み処理関数 es1371_interrupt()が呼ばれた時刻を監視し、音飛びのタイムスタンプをカーネルに記録する es1371_read()処理後、アプリケーションにタイムスタンプを渡す es1371_read()で音飛びした分の無音データを挿入できる

9 デモ 音飛びを検出して無音区間を挿入するアプリケーション 音飛びに対して無音を入れたデータ、音源データ、音飛びしてしまったデータの比較
比較方法 波形をみる 実際に聞いてみる

10 まとめ TS-I/Oを提案 課題 LinuxにおけるI/Oレベルでのソフトリアルタイム処理を可能にする機能
タイムスタンプを利用した音飛びの通知 課題 出力もTS-I/O 音以外のI/Oデータ (例 動画) に対して TS-I/Oを適応


Download ppt "タイムスタンプ付ストリームI/Oによる音の実時間処理"

Similar presentations


Ads by Google