■ 動画


現在はモーションJPEG
恐ろしいことに0.5fps。
要するに動画と呼べるレベルではない。


今は320*240の16bitカラー画像を品質?70%で圧縮しているようだ。
そうると概ね100kb(キロビット)になるようだ。
既にモスキートノイズも目立つ。
これ以上品質を下げるのは苦しい。
128kbpsとかの回線を狙うと、0.5fpsでも苦しいか。


時間軸を使えないか考えてみる。
先ずは直前フレームとの差分を取ってみる。
コンピュータに向かう人間というか私を映しているような場合、
殆ど動かなくても9/10程度の情報が除去出来る程度。
これでは各フレームをJPEGで圧縮したものに遠く及ばない。


0が多いからといってサブバンドな圧縮には御利益が無いような気もするが、
とりあえず差分画像をJPEGで圧縮してみる。
なんかそのままのフレームを圧縮するより小さくなった。
各フレームを圧縮した時の半分くらいか。
直流ばっかりのブロックが増えるから?
JPEGは難しいなぁ。。。


半分くらいというのが実はいやらしい数字だと思ったりする。
差分データのビット深度は元の画像のビット深度の2倍。
けどその差分情報自体もSqueakの画像として欲しかったら、
差分のビット深度を半分に間引いてたのです。
それだったら最初から差分なんか取らないで、
各フレームのビット深度を半分にするのと同じかもしれない。


この時点で既に無意味なことが確定しているような気もしたが、
一応JPEGで圧縮した差分情報からフレーム画像を作ってみる。
どうも画質が悪い。
F(A) + F(B) = F(A+B), F()はフーリエ変換
のような気がするので、差分をJPEGで圧縮するってのは、
それほど無謀でもないと思ったんだけどなぁ。


この先が困難で面白いところなんだなと感じつつも、
じゃぁフレーム間予測とか動的補償とかって具体的にどうやるの?
とかっていうところには挑戦しない。
だからいつまでたっても進歩しないんだな。
うむ。
でも本当にどうせ分からないし。


JPEG2000


JPEG2000ならもうちょっと圧縮率を上げても比較的画質が良いかもしれない。
とりあえず色々な圧縮率を試してみる。
確かに圧縮率を上げてもブロックノイズは出ない。
が、同じ程度の画質に見える場合には、
JPEGJPEG2000もファイルサイズに大差が無いように見える。


解像度に自由度があるのは工夫次第で使えるかもしれないが、
それにしてもSqueakJPEG2000を扱えるようにする手間を考えると、
現実的でない。


撃沈。
やはり頭の良い人達が頭を捻った動画フォーマットは凄いんだということを実感。


■ DirextX


というわけでその凄い動画フォーマットは使えないものかとDirextXのページを眺めてみたりする。
DirextPlayのページを眺めて鬱になる。
分かってはいたが、やってきたことややろうとしていることが既にそこにある。
少なくとも技術的には。
では技術ではない独創的な何かで勝負ということか?
いや、そんなことは疑問符を付けるまでもなく分かっていたわけだが、
証拠をもって観念せよということになると、ちょっと鬱な気分。


■ 音声


これは先週やってみたことだが、一応ここに書いておく。
変なサンプリングレートを使うと音質が極めて悪くなる。
だから適切なサンプリングレートに変換して再生すると音が良くなるか実験してみた。


正弦波とかの場合だと、それはもう全然違います。効果覿面。
けど人の声だと微妙。
というのは、人の声とかだと、変なサンプリングレートにしても、
それほど音質低下を感じないらしいのだ。少なくとも私の場合。
若干しゃがれて聞こえる程度か。
まぁ一応そのしゃがれ具合が改善されはします。


■ カメラDLL


カメラDLLが妙なデッドロックを引き起こすということが判明している。
スレッドを跨いだモーダルウィンドウについての記述なんか見当たらなくて、
何が何故デッドロックになるのか分からない。
困った。
っていうのはその現象ではなくて自分に。
こんなことでは未来が無い。