2016年06月29日

MPEG1デコーダー挫折

MPEG1デコーダーを作りたい話の続きです。挫折しました。

前回書いたようにMPEG1のファイルはスタートコードとデータの繰り返しになっています。
映像部分はスタートコード以下に階層構造になっており、
 スライス・・・「マクロブロック」が並んでいる。
  ↓マクロブロック・・・16*16のサイズで、輝度4ブロック、色差2ブロックの計6「ブロック」の塊。
   ↓ブロック・・・8*8のDCT変換されたのデータ。
という感じのようです。なので、デコードの手順は、
   ↓ブロック・・・8*8の単位で逆DCT変換。
  ↓マクロブロック・・・輝度と色差をRGBに変換。16*16に拡張。
 スライス・・・画面上のマクロブロックの位置を決めて並べていく。
たぶんこうだと思うのですが・・・他にも映像の画の種類として普通の画のIフレーム、前か後から予測して作るPフレームBフレームなどあったりするのですがもう無理です。Iフレームのブロックのデコードからわかんないです。誰かツッコミお願いします。

とりあえずゲームのほうを先にメドつけようと思います。ああMPEG1の挫折で6月が終わってゆく・・・
posted by たあし at 22:52| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2016年06月15日

MPEG1挫折一歩前

ドリームキャスト用MPEG1デコーダを作りたい話。
なんでMPEG1なのかというと、MPEG2とかMPEG4とかは複雑そうなのとライセンスが面倒くさそうだからです。ていうか先にゲーム作れ。

MPEG1のデータ構造としては、
1.4バイトのヘッダ開始コード
2.開始コードに対応した数バイトのヘッダ
3.ヘッダに対応するデータ
ざっと見たところこの三つがファイル終端まで繰り返されているようです。
つまり開始コードを識別する処理と、開始コードごとの分岐処理を作り、それをファイル終端まで繰り返せばいいということだと思います。

あとは分岐処理の中にデコード処理を含めていけばいいというわけなのですが、もうわけからーん!たぶんこの辺で投げます。
posted by たあし at 14:35| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2016年06月09日

野望のストレッチゴール

自分の作ったゲームに自分で描いたアニメを載せるという野望があるのですが、現在使っているドリームキャスト用ライブラリKallistiOSに動画ファイルを扱う機能がついていないことが分かりました。そんなバナナ。MP3やJPEGも扱えるのになぜだ!

野望のストレッチゴール(下にいくほどただの妄想)
・ドリームキャストのゲームをリリース
・アニメを載せる
・3Dゲームを作る
・フルスクラッチ
・フルアセンブラで最適化
・GD-ROM化

というわけなので、MPEG1デコーダー実装は乗り越えるべき壁なんでしょうか。引くときは引けと偉い人も言っていますがううむ。無理なもんは無理だろうし。
posted by たあし at 22:43| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする