今日は久々にMPEG2のデコードプログラムを動かしてみた。
元々、最近やってるMicroBlaze MCSをマルチコア化もMPEG2をデコードするのをモジュールごとに区切って、並列展開するために使いたいと思ってた。
本当はMicroBlazeの命令互換のオリジナルCPUにするつもりなんだけど、時間がないので当面は本家MicroBlazeを改造する。
そろそろ、準備ができそうなのでMPEG2のデコードプログラムを適当な大きさにモジュール分けする検討を開始した。
って、始めたら、MPEG2をすっかり忘れてしまったのでおさらいしよう。
ざっくり書くとこんな感じ。
MPEGの映像はIフレーム、Pフレーム、Bフレームという単位になるがIフレームが大元、PフレームがIフレーム間の補完、Bフレームがさらに補完と考えれば良い。
その中にSliceがいて、MacroBlockがいることになる。
一番小さいものにすると、Block Layerになって8x8のドットになる。
今、MPEG2をパースする部分がでかいモジュールになっているのでここを刷新して細かく分けられるモジュールにする。
そして、MicroBlazeのマルチコアに展開すると・・・