THE PSP攻略+α ~SONYへの挑戦状~

PSP関連ブログ?いいえ、ただのゆとりブログです

スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --/--/-- --:-- ] スポンサー広告 | トラックバック(-) | コメント(-)

日本沈没まであと3日 

最近どうにも体調が芳しくない。
本来なら例の記事書いて体験版のコンバータでもリリースしてるところなんだが…
掲示板のレスやらコメントやら色々放置したままのような…あばばばばbb
クリスマス?何それいつやるの?
ちょこちょこ記事の下書きかいてたらPCが青画面になって作業データはパーになるし、今年の残ってる厄を一気に消化でもしているのだろうか?w
厄い。雛光臨しろ。
来年までには復活したいところ。

「俺、体調が戻ったら長文記事書くんだ…。」



何もなしで記事書くのもなんなんで、気分転換も兼ねてPSPでTheoraのデコードを試みてみる。
TheoraとはOggVorbisで有名なXiphが開発してる動画用コーデックのこと。On2VP3をベースにしてるとかなんとか。
動画がTheoraで音声がVorbisで構成されている動画形式、OggVideoFile(*.ogv)をPSPで再生してみる。
   
 
そもそも、cygwinでのライブラリのインストール方法がよくわかってないので、適当にMakefileを書いてライブラリ化してみる。
コンパイルすら通らないライブラリとかもあるが、Theoraに関しては何の問題も無くライブラリ化できた。
とりあえず、oggのヘッダを解析して動画や音声の詳細を表示するプログラムをコンパイルしてみたが、落ちることなく正常に表示された。
PSPのメモリアクセス制限に引っかかるコードが含まれてると、メモリ読み込むだけでも問答無用で落ちるので動画周りが上手くいくかどうか…。
以前、BMPを読み込むプログラムを組んだときに、Windowsで組むのと同じようなやり方だとメモリアクセス違反で落ちたことがあった。
吉里吉里2で使われてるTLG形式のデコードにも該当部分があったので、原因を突き止めるのに苦労したような…

いよいよ動画の再生をしようと思ったが、どうにも参考にできるようなソースが見つからない。
Vorbisはちょこちょこ見かけるけど、Theoraは大して普及してないっぽいからなぁ…
Vorbisの再生は、vorbisfileライブラリを使えばゆとりでも簡単に再生できる。
だがTheoraには、こういうライブラリが付いてないのでoggコンテナからページを取り出し、vorbisとtheoraのヘッダを探してパケットが云々ととても面倒な作業が必要な模様。
俺にはさっぱりわからん^^; そもそも日本語でおk
仕方なくライブラリ付属のサンプルを参考にしようとしたが、画像の描画にSDLを使ってたり、サウンド部分が訳の分からない方法で実装されてるので、色々とめんどくさそうだ…
デコードされた動画はYUV形式なのでRGB形式に変換する必要もある。
これは適当に検索して出てきたソースを利用し、VRAMに直接書き込むことに。
そういえば、PSPのハードウェアでRGBに変換できたような…
PSPはメモリをガリガリ書き込むだけでも時間が掛かるので、動画のような情報量の大きいデータをソフトウェアで処理するのは厳しい。
サウンド周りもPSP用の命令に置き換えたけど、どうにも効率が悪いので、全体的に書き換える必要がありそうだ。

かなり面倒だったがなんとか完成。
さっそく適当にogvを作成して再生してみる。
……音声は細切れ状態なうえに、なにやら動画が途中で止まる…。
処理オチが酷いので音声が細切れになるのはわかるが、動画が途中で止まるバグの原因がよくわからない。
昨日一日かけて色々調べてみた結果…
どうやら、処理落ちが酷すぎて動画のコマ落ちすら間に合ってないようだ^^;;;
つまり、動画は音声と同期してるのでタイミングがずれた場合は描画をスキップして次のフレームのデコードを行うわけだが、そのデコードも間に合わないのでスキップして(ry
という繰り返し状態になって、まったく描画されない状態になってるという話。


はぁ…
非常に残念な結果となりました…
今日も朝から色々試してみたものの、CPUは333MHz、音声なし、360x270の10fpsでやっと処理が間に合うレベル。
画面の切り替えが激しい部分だと超処理落ちが発生します^^;
結局はハードウェアでデコードしろってことか。
MP4の再生とかさっぱりわからん。海外のスーパーハカーがハードウェアでMPEG4系の動画を再生させてたりしてたけど、ソース見ても意味がわからんw

とりあえず、残念な成果物を置いときますね。
  > theora_player4psp < DL:14

2009/12/30(18:30)
サウンドの再生を別スレッド化
  > theora_player4psp rev2 <

2009/12/30(23:00)
サウンドのデコード、動画のデコード、ファイルの読み込みを別スレッド化
  > theora_player4psp rev3 <

動画は、前フレームからの差分データの更新で成り立ってるものが多いので、画面に表示させなくても毎フレームデコードする必要がある。(上でバグだと思っていた奴の原因)
というわけで、fpsを下げたりすると処理が減り、多少はマシになるので、15fpsとか10fpsぐらいにした方がサイズも減るし負荷も減る。
だが、残念なのには変わりない。30fpsでテストした時の残念さは異常。
サウンド周りが最適化されてないので、R押しながら起動を推奨。ブチブチ切れるサウンドは逆に耳障りw

pmfは、作成ソフトの入手が困難(そもそも一般人が買えるかどうか)。だが画質は良く、デコードも軽い。
連番jpgは、サイズが肥大化。(100MB超えとかざら)
ogvは、サイズが10MB以内に収まって画質も良いが、デコードが重い。
mp4は、XviDやAVCがハードウェアでデコードできるが、pmfに比べてかなりめんどくさい。

俺みたいな素人にはogvの再生が限界なんで、誰かmp4再生ライブラリでも作ってくれw

時間勿体無かったな… 普通に記事書き直してた方が良かったかもしれんw
[ 2009/12/28 17:48 ] 未分類 | TB(0) | CM(5)
No.962
MP4は使えそうなサンプルがpspdev.orgにあったので受験とか済んだらDXPに実装する予定なんですが、如何せん勉強がはかどらない…VFPUが可愛すぎて困る
専用HWの嵐っていうのが発売からこれだけの期間たっても(一部の人達に)愛されている一因なんでしょうかねw
お体お大事にです
[ 2009/12/29(火) 21:20 ] [ 編集 ]
No.963
HARU様の所ではお世話になりました。こちらではお初です。
お体の調子が優れないということですが、時期的なものでしょうか?
何にせよ、お体にはお気を付けて下さいね。お大事にです。

Theoraはそう言えば使ったことがないですね・・・。実験お疲れ様です。
ポータブル機器にはOggVorvisですら正式対応がなされていない現状をみると、少々勿体無い感じもしますね・・・。
mp4再生ライブラリは是非とも欲しいですねぇ。自分じゃ使いこなせないにしろ、動画デコードの可能性がまた広がりそうです。
[ 2009/12/29(火) 23:46 ] [ 編集 ]
No.964
>>憂煉さん
お久しぶりです。
フォーラムにcooleyes氏によるソースが色々あるんですが、元々mp4コンテナの構造とか動画に使われるアルゴリズムとか知らないので、見てもパッとしないんですよねw
意味は分からなくても、呼び出し方法が分かればなんとかなりそうな気もしますが、デコード処理を丸々コピペするような形になるとライセンスが面倒だと思ったり…
DXライブラリではTheoraに標準対応してるので、DXLPでも対応するのかなーとか思ってましたが、mp4への対応を予定していたとはw
VFPUとかさっぱり(そもそもアセンブラ自体さっぱり)なんで、自分はまだまだハードを活かしきれてないですが、初心者でも手軽にハードの機能が使えるDXLPは魅力的です。
PSPでHomebrewの世界に入った者としては、ぜひ開発者が増えて欲しいものですね。
憂煉さんもお体を壊されないよう、受験や開発に励んでください。


>>匿名希望さん
こっちではお初ですね。
ここは向こうと違ってかなり静かなブログですw
こういう開発者にしか分からない話題が多すぎるのかも…

自分が所持してる携帯型オーディオプレイヤーはoggに対応していたりしますが、購入した頃はIriverぐらいしか対応してませんでしたね。
何年も前に購入した物なので512MBと容量は少ないですw
動画や音声の圧縮関係はmpegで爆発的に流行りましたからねぇ…
DVD(mpeg2)の前身としてVideoCD(mpeg1)なるものが出ましたが、こっちはDVDほど普及した覚えがないですw
PSやセガサターンなどのゲーム機では、そこそこ使われてたような。
PCが普及して、CDを自分で焼けるようになった頃には、CDにmp3を突っ込んで聞けるプレイヤーなんかもありましたね。
っと、話が若干逸れてしまいました^^;
ちなみに、長文で話が逸れるのは、このブログでは日常茶飯事ですw
ポータブル機器でoggがあまり使われてないのには、デコードの負荷も関わってきます。
mp3より同レート時の音質が優れていて、個人的には低レートの劣化が少ないように感じられるので、容量に制限のある携帯型プレイヤーには最適な気もしますが、mp3よりデコード複雑なために電池の消耗がmp3より早くなるらしいです。
特にmp3は昔からあったので、消費電力を抑えるように最適化されたチップが量産されてるようで、制限のある電池の面ではmp3の方が有利とのことです。
若干マイナーな気もしますが、AACとかの方が対応してる機器が多い感じですね。iPodの影響でしょうか?
theoraの方は、残念なことにh264やXviDなどのMPEG4系列より画質の面で劣ってるので、普及は難しそうですw
ogg系はpngと同じく、ライセンス問題の回避のために作られましたが、消費者側は大して問題ないので製作側が重宝してますね。
mp3もmpeg2も使用にライセンス料が発生するようで…
Vorbisはダメゲーでは主流ですが、PS2のゲームなんかでもそこそこ使われてるみたいです。
動画はmpeg系が多いですが、最近はTheoraを使うメーカーもあるです。(シグナルハートのエンジンではTheoraを採用)

容量やハードの制限があるPSPでこそ、連番jpegより容量が小さく画質も良い動画の再生に対応したいところです。
この連番jpegもハードでデコードしないと、まったく速度が出ませんからねぇ…
背景に動画を利用したゲームなんかもあるので、ノベルエンジンの動画再生機能も充実していく必要がありそうですね。

自分は元々体調の変化が激しい方ですが、匿名希望さんも体調を崩されないようにしてくださいね。
[ 2009/12/30(水) 01:45 ] [ 編集 ]
No.966
>見てもパッとしないんですよねw
mpeg.co.jpにMP4の構造について参考になる記事がありますよん

>ライセンスが面倒だと思ったり…
他人のソースコードをいじり倒して取り込んでしまえばいいんじゃないかとw
色々と弄ってる間に原型を留めない程度に自分色に染まってしまったのがDXPのMP3デコード系だったり

>mp4への対応を予定していたとはw
TheoraもHWデコードできるならいいんですけどねぇ…
実用にならないものは実装する意味が(ry

>VFPUとかさっぱり
あれは・・・エロい。初期のプログラマブルシェーダ並のインパクトがありますよ
あ、今のプログラマブルシェーダはアセンブラ使えないからつまんないです
ただ、アセンブラを大真面目にやるのはやめといた方がいいです。命令長短縮の為の計算、CPU内部での並列度向上のための命令並び替え、キャッシュのための最適化、データ構造の変更…
しまいには半精度浮動小数点数でメモリにデータを格納してみたりする始末。後で仕様変更しようと思ったときに全部組み直しになることは必至ですw

>初心者でも手軽に
初心者でも手軽にハードの機能が使えるDXライブラリへの憧れとかがDXP制作の原動力の1つです
使う側がゲームのアルゴリズムに集中できるようになればいいなと

>ぜひ開発者が増えて欲しいものですね。
ですね。日本でアクティブに活動している方は人数が少ないので、ちょっぴり寂しいです
[ 2009/12/30(水) 23:41 ] [ 編集 ]
No.971
>mpeg.co.jpにMP4の構造について参考になる記事がありますよん
大雑把な構造とか、説明が色々書いてますね。
PNGのチャンク構造と同じ感じで、かなり簡単なつくりになってますが、詳しいBOXの内容やAVCを再生したりするのに必要な情報が無いですね…
自分のググり方が悪いのか。

>他人のソースコードをいじり倒して取り込んでしまえばいいんじゃないかとw
なんだか完成度の高いソースな気がするので、別物にできるかどうか…
まあ、今自分が使うとしても、元々GPLなソースのアプリぐらいなんで、大して問題は無いですね。

>TheoraもHWデコードできるならいいんですけどねぇ…
>実用にならないものは実装する意味が(ry
やる前から大体予想は出来てましたが、これで完全に実用レベルじゃないことが証明されましたねw
HWにVorbisのデコード機能だけでも欲しかった…
やっぱSONYだからAtracを推したいのか。

>ただ、アセンブラを大真面目にやるのはやめといた方がいいです。
C言語でさえ中途半端な状態なので、今はスルーした方がよさげですねw

>初心者でも手軽にハードの機能が使えるDXライブラリへの憧れとかがDXP制作の原動力の1つです
>使う側がゲームのアルゴリズムに集中できるようになればいいなと
そういえば、本家も元々はハードを気にせずにゲーム開発が出来るDirectXの煩わしい処理を気にせずにゲームが作れるようにしたライブラリでしたねw
DXLPもハード>pspsdk>DXLPという2段構造か。
自分みたいに仕組みを勉強するために車輪の再発明をするのなら良いですが、ゲームを作るのが目的ならばこういうライブラリを利用して、ゲーム製作に集中した方が良いというのはよく聞きますしね。

こういう改造系はやっぱり海外の方が進んでますね。
PSPに関係なくても、仕様書とかC言語のライブラリとかが日本語訳されて無い物が多いのも問題。
APIが日本語訳されてるだけでも、開発者が増えそうな気もするんだけどなぁ…。
[ 2010/01/06(水) 04:52 ] [ 編集 ]
コメントの投稿













管理者にだけ表示を許可する
プロフィール

七次元

Author:七次元
永遠の18才
夢を追い求める学生
プログラミング初心者(笑)
愛用言語はHSP(スイーツ)
プログラマーを目指すものの「C言語?読むだけ^^」「C++?知らんがな。クラスって何?おいしいの?」
というゆとりっぷり。
Delphi入れたりVC++2008入れたり迷走中。
夢はコミケで何かやりたい。一般参加すらしたこと無いけど。
PSP-1000(CFW)持ち。PSP-4000マダー?
よく難波周辺のゲーセンに出没するらしい。
STGも格げーも初心者。
ろ、ロリコンちゃうわ!!!

連絡先:homepage_touroku[a]yahoo.co.jp
(メールはほとんど確認してません。掲示板に書き込むのが確実です)

関連リンク
そふとうぇあこうかいじょ
公開したファイルが置いてあります。

掲示板
連絡やら雑談やら適当にどうぞ。
カウンター



現在の閲覧者数:
ブロとも申請フォーム


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。