DXTデコーダ作成検討

2010/11/23

MTM 会場で動画のフォーマットについて質問された方が多かったのですが、
OLED 用のデータを流用した 96×64 RGB565 の生データを利用していました。

SD カードからの読み出し速度の都合上、生データのままでは
解像度を上げられませんので、MTM 会場でも宣言していた
DXT1 のデコーダを作りたいと思います。

デコーダの性能的には QVGA/30fps がひとつの指標で、
その場合のブロック数は ( 320 * 240 / ( 4 * 4 ) * 30 ) = 138000 個 / 秒、
80MHz 動作の場合、デコードを約 580 クロックで行う必要があります。

1コアでは厳しいですが、2コアで半分ずつデコードすれば間に合いそうですね。

広告

MTM06 二日目終了

2010/11/21

お疲れさまでした!

二日目は口が慣れてきた?こともあり、昨日よりも多くの方に
声をかけてデモンストレーションさせていただきました。
濃いネタを日常会話的に交わせてしまうMTMは、すごいイベントですね。

フライヤーは二日間で180枚配布しました。
使用したPDFをこちらに置いておきます。
mtm06_paper.pdf (227k)

見た目が地味なので一瞬しか起動しませんでしたが、
ヌンチャクを振っての音生成や、6chのシーケンサーなどもありました。
これらも追って公開していきたいと思います。


MTM06 一日目終了

2010/11/21

出展者の皆様、おつかれさまでした。
ご来場いただいた皆様、ありがとうございました。

Propeller の実機を初めて見たという方、実際に使ってみようと思っていただいた方、
単純にゲームを楽しんでくれた少年少女など、自分が思っていたよりも多くの方に
興味を持っていただき、パンフレットも多数配布できました。

皆さん購入方法や価格を聞かれていたので、ユーザーが増える予感がしますよ!

PIC や AVR では作るのが大変な ”並列処理” や “安定したタイミングの生成” が
得意なマイコンですので、Propeller が一般的なホビーユースの選択肢に入る日を
夢見つつ、明日も頑張りたいと思います。


MTM06参加告知

2010/10/05

2010/11/20~21 東京工業大学大岡山キャンパスにて開催される、
「Make: Tokyo Meeting 06」 に出展する運びとなりました。

基本的には、今まで作ったものの入れ替え展示になると思います。
展示が二日あるため、期間中に何か作ってみるかもしれません。
インスピレーションを刺激される展示がいくつもありますので、
都合のつく方はお越し下さいませ。


QVGA 動画再生成功

2010/10/04

OLEDで実験した時のコンバータをファイルの解像度に対応できるようにして、
QVGA の動画を変換してみました。

SD カードからの読み出しが間に合わないため、元の動画が白黒であることを利用して
2bpp インデックスカラーに減色しています(インデックスカラーの解決はドライバ側)。
QVGA 30fps の場合、生データでは 39Mbps、2bpp にすると 4.4Mbps です。

転送する側もパレットを毎回読みに行くと間に合わず、ついにプログラムの
自己書き換えに手を出してしまいました…。コアのローカルメモリ内に
テーブルを作って、何とか 30fps で動くようにできました。

ただ、現在テストしている動画のサイズがフルではなく 16:9 なので、
QVGA 全面を更新した場合は性能が不足すると思います。
(QVGA 30fps の場合、1ピクセル当たり34サイクル以内で
送る必要がありますが、現在のドライバはそこまで速くありません)

動画ばかりやっていてもしょうがないですし、
次はタッチパネルを使ってみたいと思います。


TFTドライバのアセンブラ化

2010/09/28

初期化・通信部分だけ変換しました。

単色リフレッシュは50Hz程度?メモリーカードからの画像表示は
5コマ/秒くらいです。これはカードの読み出し側が律速になっているので、
解像度を落とした上で、何らかの圧縮を行わないと30Hzは出ません。

色空間変換(おそらくYUV420)と、各要素に対してDXT的な圧縮を
組み合わせると良いかな?と思っています。
デコードにパワーが要るのは、コア数に任せて力技で…。

マンデルブロー集合をマルチコアで演算・描画するテスト(出力はTFTドライバ)も
作りましたので、少し整理してからアップロードします。


TFTモジュール動作確認

2010/09/26

ピン数の多い ProtoBoard を使って、無改造状態での表示を確認しました。
16bit パラレルでの接続のため、信号線に20ピン使っています。ぜいたく!

Spin で作っているためリフレッシュに2秒くらい掛かっていますが、
アセンブリに変換すれば、秒10回程度は更新できると思います。


グラデーション。


ワイヤージャングル。
いくつかモジュール側に線を乗せて、外に出る線の数は減らす予定です。


SD カードに置いたRGB565のDDSファイルを表示してみました。
LEDバックライトの影響か、ちょっと青味が強いですね。発色は悪くありません。