SSブログ
English Version

ポケコン(G850)ポリラインで動画再生 [ポケコン]

 「ポケコン(G850)高速ライン描画」の記事で高速なライン描画処理ができれば線画画像等の動画を効率よく表示できるのではないかと言うアイディアを書きましたが、少し実験してみたのでメモしておきたいと思います。

 今回の実験のために準備したものは次の通りです。

  1. ポケコン(PC-G850V)用の高速ライン描画処理
     ライン描画ループ内にPset処理を取り込むことでVRAMアドレス計算等を最小限にして想定通りの高速処理ができた(詳細は上記記事内容を参照してください)

  2. 画像ファイルからの輪郭抽出
     ネットで画像ファイルから輪郭を抽出できるPotrace(Transforming bitmaps into vector graphics)というツールを見つけた
     色々なフォーマットで輪郭のベクター情報を数値化して出力可能で、今回はベクター情報を抽出し易い json 形式での出力結果を用いた

  3. ポリラインデータ変換ツールの作成
     上記の輪郭抽出ツールで出力された json 形式のファイルから後述の G850 用の描画ツールのフォーマットに対応した形式(アセンブラでの DB 命令形式で表現)への変換ツールを自作した
     json 用モジュールを利用することも考えたが、手っ取り早く正規表現でデータ抽出し、更に輪郭抽出ツールのポリラインデータ内には同一直線上に並ぶ複数のポイントが連続する部分が結構あったのでこれらを一つの直線にまとめる処理も実装した

  4. G850の描画処理の作成
     冒頭に書いたような高速ライン処理を組み込んだ描画コマンドデータを読みながら描画処理する簡易的なインタープリタを作成した
     実装したコマンドは「画面クリア」、「ポリライン描画」、「表示(LCDコントローラへのVRAM転送)」、「ウェイト」、「終了(Breakキー待ち)」の5つのみ

  5. 試験データ
     「ポケコン(G850)用拡張基板(その8)CP/MでBadApple!!」の記事での BadApple!! 動画から抽出した画像ファイルから上記のツールを用いて試験用の動画データを作成した

 今回の実験はポリラインによる動画再生の有効性の確認が主要な目的なのでメモリ増設していない標準のG850で動作するような試験プログラムを作成しました。具体的には 44 フレーム分(1秒ちょっと)のデータで使用メモリが6600Hの手前までになりました(データサイズは画像データの複雑さにも大きく依存します)。もちろん上記の BadApple!! 動画表示の記事のように CP/M 上で SD カードにデータファイルを置けば長時間の動画再生も可能になります。

 結果としては動画再生時にフレーム毎にある程度のウェイトを入れなければ再生速度が速すぎるくらいになったので、今回使った切り絵のような動画ではポリラインでの動画再生は有効であることが判りました。

 今回の実験ではフレーム間に一定時間のウェイトを入れましたが、ウェイトを入れないと画面の複雑さによる再生速度の違いが目立ったので、ポリライン変換処理において、ポリラインの合計の長さに応じたウェイト時間を計算する等の処理が有効だと思います(または動画再生処理側で再生時間をタイマー管理する)。

 下の写真はポリラインでの動画再生時に撮影したものです。画面の白黒情報が無くなり、輪郭だけになりますが動画としては十分に楽しめます。

ポリラインでの動画再生状況


★追記 2022/01/22
 Twitterに投稿した動画付きのメッセージを貼っておきます。



nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。