MachiKania

MachiKania type PUで動画再生

2025年5月24日

MachiKania type PU ver 1.5.2 では、CPU のクロック周波数の変更が可能になり、従来の 157.5 MHz だけではなく、クロックアップした 315 MHz でも実行できるようになった。また、ビデオ表示の際、描画と表示のデーターバッファーを使い分けることができるようになったので(ダブルバッファリング)、スムーズな画像表示も可能になった。

加えて、ver 1.5.3 ではファイルシステムの動作周波数もクロックアップできるようになるので、より高速なファイルアクセスが行える。
(注:2025年5月24日現在、ver 1.5.3 は未公開です。GitHub レポジトリーのプロダクションブランチのソースコードからビルドするか、こちらのバイナリーを用いてください。PLAYAVI クラスは、ここにあります。)

これらの向上した機能を用いて、MachiKania type PU で動画を再生することができるようになったので、メモ。主に、RP2350 を搭載した、Raspberry Pi Pico 2 を用いる。

typePUmovie.png
動画は、こちら


動画の再生には、クラスライブラリーの PLAYAVI クラスを用いる。上の画像下のリンクで紹介した動画を再生する BASIC コードは、以下の通り。
useclass PLAYAVI

for i=3 to 0 step -1
  wait 60
  print i;" ";
next

cls
system 51,15
system 50,315000000
system 57,40000000

a=new(PLAYAVI,"crick15.avi")

do
  wait 1
loop while a.play()
end

「system 51」「system 50」「system 57」はそれぞれ、CPU の電圧、CPU のクロック速度、MMC(ファイルシステム)のクロック速度を設定する命令。CPU のクロックを 315 MHz (デフォルトは157.5 MHz)、MMC のクロックを 40 MHz(デフォルトは 10 MHz)に設定するようにしている。この設定により、高速でファイルを読み込み、表示することが可能になる。

「a=new(PLAYAVI,"crick15.avi")」で、PLAYAVI クラスのインスタンスを一つ作成している。「crick15.avi」が動画ファイル名で、別途用意しておく。この AVI ファイルの作成方法は、別の記事に詳細を書いた。336x189のピクセルサイズで、15 fps のものである。

フレームレート調整

下のグラフは、336 ピクセル幅で高さを色々と変えたときに、10 MHz - 40 MHz のファイルシステムクロックでどれぐらいのフレームレートで動画再生ができるかを、fps (Frames Per Second) 値で示したもの。なお、Pico 2を利用し、CPU クロックは 315 MHz で実験を行った。「height (pixels)」は縦のピクセル幅、「total pixels」は、縦x横の総ピクセル数である。(生データーはこちら
250519-AllData.png
250519-axis-2.png

下は、データーのうち、最もよく使うと思われる「40 MHz」だけを表示したもの。
250519-40MHzData.png
250519-axis-2.png
グラフを見てわかるように、幅が336ピクセルの場合、高さが168ピクセル以上で(総ピクセル数が56448以上で)、40 MHz のファイルシステムクロックを用いれば安定して 15 fps で動画再生される。それより少し小さめの113-167 の場合は 20 fps になってしまうので、こういった場合は

1.ファイルシステムクロックを下げる(例えば、20 MHz)
2.ソースコード中の「wait 1」を「wait 2」に変更する

等の方法で、fps 値を調整する。ほかの条件、例えば 336x216 ピクセルの動画で、15 fps ではなく 12 fps で再生したい場合なども、ファイルシステムクロックを変更するか、「wait」値を変更するか、で対処すればよい。

なお、フレームレート(fps 値)は、MachiKania type PU の特性上、60 の約数でなければならない。論理的に、60, 30, 20, 15, 12 fps 等は可能だが、48, 24 fps 等にすることはできない。また、ここでいう「15 fps」は、正確には 15.0467 (157500000/11/908/262/4) fps である。

30 fps で再生するには

上のグラフを見てわかるように、336x216 ピクセルのフルサイズの動画では、フレームレートは 15 fps が最大だ。しかし、総ピクセル数が 36000 以下の、小さめの画面サイズなら、30 fps で再生することも可能である。下は、230x148 ピクセルサイズ(総ピクセル数:34040)で、動画再生した例。
250519-30fps.png

キャプションをつけることも可能

再生する AVI は、基本的に 256 色で作成するが、少し色数を落として(例えば 254 色)AVI ファイルを作成すれば、キャプションをつけることも可能だ。
250519-caption.png
254 色の AVI を使って PLAYAVI クラスのインスタンスを作成すれば、パレット番号 254, 255 の2つが開くので、これらを使って「GPRINT」ステートメントで容易にキャプションが入れられる。

音声付き動画も再生可能

下の例のように、音声付き動画も再生できる。これについては、別記事に詳細を述べる
250519-withSound.png

コメント

コメントはありません

コメント送信