2015年11月24日

ESP8266でPNGデコーダを実装してみた

esp826613.jpg

前回、「ESP8266でオンメモリでPNGをデコードするのは難しいかも」と書きましたが、あれこれ考えた結果、ぎりぎり何とかなりそうな見通しが立ったので、この3連休を使って実装してみました。

Deflate圧縮の伸張には、前回紹介した中から「tiny inflate」を選びました。

jibsen / tinf − Bitbucket

PNGファイル自体の扱いは、主に以下を参考にしながら自力で書きました。

apankrat/lpng
PNG画像を自力で読む
Portable Network Graphics (PNG) Specification (Second Edition)

懸念点だったメモリについては、グローバルメモリに32KBのリングバッファと、スキャンライン2本分のバッファを用意しました。
前者はLZ77圧縮の復号、後者は復号後のフィルター処理にどうしても必要となりますが、これだけで
グローバル変数が 72,814バイト (88%) の 動的メモリを使用しており、ローカル変数に 9,106 バイトが残っています。最高は 81,920バイトです

という状態になっており、かなり苦しい感じです。

描画速度もGIFより遅いので、フルカラーが使えるという以外にはあまりメリットは無いかもしれません。
posted by boochow at 02:26| Comment(0) | ESP8266/ESP32 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
人気記事