2020年1月22日水曜日

小ネタ

 Haas Desktop Millの受付が始まってるっぽい。今の所アメリカ・カナダのみらしいけど。Haas Japanはやく扱ってくれ~~。

 日本からアクセスしてるせいか、回線のせいか、値段のページが開けない。いくら位で売ってるんだろう?

***

 JPEGの説明とか読んでると、PNGやGIFとの比較も出てくる。曰く「PNGは新しい形式なので古いブラウザでは対応していない場合もある」とのこと。いつの時代の話をしてるんだ……

***

 TJpgDec、どうやらFFD9で終了しているわけではないらしい。画面の大きさを知った上で、それの全体を読み込む処理を行って、全体のデコードが終了できれば正常終了、途中でデータが足りなくなれば異常終了、みたいな処理のようだ。どうりでFFD9を渡さなくても正常終了するわけだ……
 TJpgDecは当然内部にバッファを持っているわけだが、読み込み済みで未使用のデータ数はJDEC.dctrに記録されている。SOSセグメントを所定数読みだした場合、ファイル位置を-dctr分シークすると、SOSセグメントの後端まで戻せる。
 SOSセグメントの後端なので、そこから再びデコードを始めるとFFD9を読んで異常終了するので、決め打ちするなら2バイト後ろにシークしておくとか、あるいは2バイト読んでFFD9でなければ(かつセグメントマーカーであれば)さらに2バイト読み込んでフィールド長を調べて更にシークしてEOIを探すとか、そういう感じのアルゴリズムで次のフレームまでシークできる。
 in_funcで常にEOIを探すより、TJpgDecでデコード終了してからEOIの位置を確定させるほうが、計算量が少なくてヨサゲ。in_funcもシンプルに書けるし。

***

 ということで、マイコンで連続JPEGファイルの読み込みを実装。とりあえず簡単な図形のアニメーションを作って表示。一応動いてるけど、ノイズが思ったより目立つ。色深度4bitだけどLSBが結構明るいので、ノイズも明るく表示されてしまう。
 圧縮率を下げれば多少は改善するかもしれないけど、どうかなぁ。
 今回の用途だと、空間周波数成分が高い映像で、かつノイズが目立つ使い方なので、JPEGはやばそう。安易にTJpgDecをコピペして簡単に実装できると思ってたが。。。普通の動画ファイルならJPEGでも問題ないんだろうけど、今回は使い方が独特だからなぁ。というか、電光掲示板で自然画像以外を扱おうとするとインパルス成分が増えがちな気もするし、そもそも文字データとかをJPEGで保存するな、という話だし。
 APNGデコーダ作るしかないか。とりあえず画像読むだけならそんなに大変じゃないはず(フラグ)。

 まぁ、とにかく、JPEGファイルなら(固定フレームレートだけど)アニメーションの表示はできるようになった。

0 件のコメント:

コメントを投稿