ぼく用あれこれまとめ
oggファイル
最終更新:
bokuyo
-
view
oggファイル
oggとは
- 読み方は「オグ」「オッグ」である。「おーじーじー」だなんて読んでる人とは縁を切りたいくらいなの。
- 僕はおーじーじーってよんでるんですけど...
- BSDライセンスなのでありがたく使わせていただきたい音声ファイル形式1位なのだ!
OggVorbis
- 多くの人が"ogg" で指し示す音声ファイル形式の正式名称は「OggVorbis」って言うらしいの。
- というのも、oggはマルチメディア(音楽に限らず動画とか)を扱ったフォーマットのことだそうで…。
- その中の音声ファイルフォーマットがVorbis(読み方はヴォrrrビス:巻き舌で)なの。
- ogg自体はコンテナフォーマットというそうですが、ぼくはよく知りません。
コンテナフォーマット
- oggがその例。これについてはあとで詳しく調べたい。
oggファイルを読み込む
- ov_fopen();したときに返ってくるエラーメッセージ。
- Libvorbisfileドキュメント Ver.1.65 日本語訳 - ov_test_callbacks
量子化ビット数を取得できない?
- 8bit か16bit が妥当なわけですが、これをogg で取得する方法ってあるのかな…?
OggVorbisを導入してビルドしたとき
1> libogg_static.lib(framing.obj) : MSIL .netmodule または /GL を伴って コンパイルされたモジュールが見つかりました。/LTCG を使用して再開始してください。 リンカーのパフォーマンスを向上させるためには、コマンドラインに /LTCG を追加してください。
プロジェクト>プロパティ>構成プロパティ>リンカー>コマンドライン>追加オプション>/LTCG>OK
これでメッセージはなくなるっぽい。
まったくもって仕組みはわからないのだけど、/GLと/LTCGを使うとコンパイル時/リンク時に最適化が行われるみたい。
それで、libogg_static.libのほうで/GLを使ってるみたいだから、「/LTCGを使うと最適化されますよー」って教えてくれてたみたい。
この解釈であってるかちょっとよくわからんけどね。
MSDN - /LTCG (リンク時のコード生成)
これでメッセージはなくなるっぽい。
まったくもって仕組みはわからないのだけど、/GLと/LTCGを使うとコンパイル時/リンク時に最適化が行われるみたい。
それで、libogg_static.libのほうで/GLを使ってるみたいだから、「/LTCGを使うと最適化されますよー」って教えてくれてたみたい。
この解釈であってるかちょっとよくわからんけどね。
MSDN - /LTCG (リンク時のコード生成)
1>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: defaultlib 'msvcrt.lib' は他のライブラリの使用と競合しています。 /NODEFAULTLIB:library を使用してください。
ogg(libogg_static.lib)のほうではmsvcrt.lib(/MDでライブラリをビルドしたから)を使いたいのに、テストプログラムではMSVCRTD.lib(/MDdだから)を使おうとしてて起こる現象。
もちろん、oggがリンクしようとしてるmsvcrt.libのほうを無視させたいから
もちろん、oggがリンクしようとしてるmsvcrt.libのほうを無視させたいから
- プロジェクト>プロパティ>リンカー>入力>特定の既定のライブラリの無視>編集>MSVCRT(またはmsvcrt.lib)>OK
とすることで、ogg側が呼び出したいライブラリを無視させる、ってこと。
- プロジェクト>プロパティ>リンカー>入力>すべての既定のライブラリの無視>編集>はい(/NODEFAULTLIB)>OKを使うと、呼びだそうとするライブラリを全て無視しちゃえるっぽい。
ov_fopen()がうまくいかない!!
temp.exe の 0x5305be46 (msvcr100d.dll) で初回の例外が発生しました: 0xC0000005: 場所 0x02b15000 を読み込み中にアクセス違反が発生しました。 temp.exe の 0x5305be46 (msvcr100d.dll) でハンドルされていない例外が発生しました: 0xC0000005: 場所 0x02b15000 を読み込み中にアクセス違反が発生しました。
もうなにこれええええええええええええええEEEE!!!!!!
これはね、ov_fopen()の第二引数に、NULLの入ったポインタを渡してるからこうなるの。newしたポインタをあたえると吉。
これはね、ov_fopen()の第二引数に、NULLの入ったポインタを渡してるからこうなるの。newしたポインタをあたえると吉。
OggVorbis_File* ovf = new OggVorbis_File(); char* filename = "bgm.ogg"; int error = ov_fopen( filename, ovf );
でおっけー。
ダウンロード
参考文献
- http://www.xiph.org/(開発元)