Sunday, December 19, 2010

muxer

忘れない内にメモを取る。
形にすることで自分に鞭を打つ(ぉ

今日の夕方に、某氏に「muxer書いてみない?」と誘われた。
ffmpegベースで。
誘っていただけるなんて光栄なこと。
うれしい気持ちと不安な気持ちと、そしてなによりワクテカ。
どんなものに仕上がるかなー。
いろいろ調べたり相談したりして、要望に沿ったものが作れればいいなー。
ライセンスは、LGPLかな。

でもまだサクッと書けちゃう力量はない。
時間があるときにコードを読んでいろいろ勉強しないといけない。

締め切りは設けられていない。
でもあまり遅くなるのもなー。
うーん…(笑)
なによりも、時間がない…(切実
冬休みという名の地獄が控えている…。
自宅に缶詰状態でひたすら文書を打ち込まないといけない。
どれだけ打ち込めるかが家計に直結する。
冬休みが終わったら終わったでまた通常運転で忙しい…(笑)
正直、2月は恐怖。
1月を逃がしたら次にまとまった時間が取れるのは3月になる。
さすがにそんなに待たせられない。

兎にも角にも、自分を伸ばす絶好のチャンスですよね。
全力でがんばる。
実際にとりかかれるのはいつ頃かなー。

そんなわけで、しばらくx264を弄るのお休みということになります。
時間があれば勉強しないといけないので。
ブログも、バイナリ配布以外の記事は書かなくなるかもしれない。

さて。
気合入れていきましょう。

Saturday, December 18, 2010

muxer

忘れない内にメモを取る。
形にすることで自分に鞭を打つ(ぉ

今日の夕方に、某氏に「muxer書いてみない?」と誘われた。
ffmpegベースで。
誘っていただけるなんて光栄なこと。
うれしい気持ちと不安な気持ちと、そしてなによりワクテカ。
どんなものに仕上がるかなー。
いろいろ調べたり相談したりして、要望に沿ったものが作れればいいなー。
ライセンスは、LGPLかな。

でもまだサクッと書けちゃう力量はない。
時間があるときにコードを読んでいろいろ勉強しないといけない。

締め切りは設けられていない。
でもあまり遅くなるのもなー。
うーん…(笑)
なによりも、時間がない…(切実
冬休みという名の地獄が控えている…。
自宅に缶詰状態でひたすら文書を打ち込まないといけない。
どれだけ打ち込めるかが家計に直結する。
冬休みが終わったら終わったでまた通常運転で忙しい…(笑)
正直、2月は恐怖。
1月を逃がしたら次にまとまった時間が取れるのは3月になる。
さすがにそんなに待たせられない。

兎にも角にも、自分を伸ばす絶好のチャンスですよね。
全力でがんばる。
実際にとりかかれるのはいつ頃かなー。

そんなわけで、しばらくx264を弄るのお休みということになります。
時間があれば勉強しないといけないので。
ブログも、バイナリ配布以外の記事は書かなくなるかもしれない。

さて。
気合入れていきましょう。

引用は正確に

なーんかアクセス数が増えている…(笑)

Firefoxの高速化に成功!〜原因は分かったが対策となるとどうしたもんだろう?

どうも、知ったかです。
この記事、無視しようと思ったけど勘違いされたままなのもあれかなと思ったので、
気になる点に対して適当に反論しておきます。
以下、適宜、正確に引用しながら。


[MacOSX] x264/x264_L-SMASH binary revision 1834/1834+375 [Snow Leopard]

x264_MacOSX_rev1834.zip
x264 0.112.1834 a51816a
(libswscale 0.12.0)
(libavformat 52.88.0)
(ffmpegsource 2.14.0.1)
built on Dec 18 2010, gcc: 4.2.1 (Apple Inc. build 5664)
configuration: --bit-depth=8
x264 license: GPL version 2 or later
libswscale/libavformat/ffmpegsource license: GPL version 3 or later

x264_L-SMASH_MacOSX_rev1834+375.zip
x264 0.112.1834+375 9256907
(libswscale 0.12.0)
(libavformat 52.88.0)
(ffmpegsource 2.14.0.1)
built on Dec 18 2010, gcc: 4.2.1 (Apple Inc. build 5664)
configuration: --bit-depth=8
x264 license: GPL version 2 or later
libswscale/libavformat/ffmpegsource license: GPL version 3 or later

※ x264_L-SMASHの方にはfgoパッチを当てています

[MacOSX] x264/x264_L-SMASH binary revision 1834/1834+375 [64bit]

x264_MacOSX_rev1834.zip
x264 0.112.1834 a51816a
(libswscale 0.12.0)
(libavformat 52.88.0)
(ffmpegsource 2.14.0.1)
built on Dec 18 2010, gcc: 4.2.1 (Apple Inc. build 5664)
configuration: --bit-depth=8
x264 license: GPL version 2 or later
libswscale/libavformat/ffmpegsource license: GPL version 3 or later

x264_L-SMASH_MacOSX_rev1834+375.zip
x264 0.112.1834+375 9256907
(libswscale 0.12.0)
(libavformat 52.88.0)
(ffmpegsource 2.14.0.1)
built on Dec 18 2010, gcc: 4.2.1 (Apple Inc. build 5664)
configuration: --bit-depth=8
x264 license: GPL version 2 or later
libswscale/libavformat/ffmpegsource license: GPL version 3 or later

※ x264_L-SMASHの方にはfgoパッチを当てています

Friday, December 17, 2010

Wednesday, December 15, 2010

[x264] Revision 1825, 1826 and 1827

またx264devにちょっぴり関わらせてもらいました。
のでちょっぴりと解説記事を。
相変わらず映像の出力には関わっていませんが(笑)




r1825
他のパッチを書いていて、git statusして気付いて書いたパッチがこれ。
r1815以降、configureを走らせるとx264_config.hというファイルを生成します。
コミットメッセージにもあるように、libx264関係。
This header can be used to determine the bit-depth and license of libx264.
これが.gitignoreに追加されていなかったので、git statusで一々うるさかったのです。
黙らせるために.gitignoreにx264_config.hを追加しようとファイルを覗いてみたら…。

*.flvが追加されていない…だと…。

おいおい…flv出力実装されたのいつだよ…(苦笑)

MacOSX関連、regression test関連で他のファイルもついでに追加して#x264devに提出。
そしたらアレも追加しようぜコレも追加しようぜと出てくるわ出てくるわ…(笑)
それで最終的にこんな感じになりました。


r1826
これはあんまり影響ないし興味もないかな。
high bit depth + weightpについて。
numweightbufが2になってたけどBIT_DEPTH>8のときは1でいいので節約。
r1769と同じような修正です。
実はr1769は僕が指摘してD_S氏が直してくれたものだったり(笑)


r1827
これはregression test関係の修正。
pythonってどんなもんだろと思って先日追加されたtest_x264.pyを覗いて気づいたもの。
見てみたらinterlacedのcaseが抜けていたので追加しました。

でですね。
実は、この修正を入れた後でregression testを走らせると、failedします(爆)
うおーーregressionかーーーどこだーーーーいつだーーーーーふがーーーーーー。
と、時間かけて原因探して「このリビジョンじゃない?」と意気揚々と#x264devに投げたら、

D_S「ああ、それJMのバグ

JMェ…。
Reference Softwareェ…。

ちなみにffmpegをデコーダに指定してtestを走らせると、今度は別の理由でfailed。
以上をちょっと詳しめにまとめると、
  • JM(ldecod)をデコーダに指定すると…
    interlaced + sliced-threads + deblock でfailed
  • ffmpegをデコーダに指定すると…
    b-pyramid ≠ none でfailed
ということらしい。
ffmpegでのデコードの方はあまり関心がなくてテストも適当なので条件違うかもです。

というわけで、このコミットによりregression testは悉くfailedするようになりました
めでたしめでたし(ぉ


以上、自分のコミットの簡単な解説でした。
ビルドはまた今度。

[x264] Revision 1825, 1826 and 1827

またx264devにちょっぴり関わらせてもらいました。
のでちょっぴりと解説記事を。
相変わらず映像の出力には関わっていませんが(笑)


Sunday, December 12, 2010

[MacOSX] x264/x264_L-SMASH binary revision 1820/1820+360 [Snow Leopard]

x264_MacOSX_rev1820.zip
x264 0.110.1820 fdcf2ae
(libswscale 0.12.0)
(libavformat 52.88.0)
(ffmpegsource 2.14.0.1)
built on Dec 12 2010, gcc: 4.2.1 (Apple Inc. build 5664)
configuration: --bit-depth=8
x264 license: GPL version 2 or later
libswscale/libavformat/ffmpegsource license: GPL version 3 or later

x264_L-SMASH_MacOSX_rev1820+360.zip
x264 0.110.1820+360 cf80d1c
(libswscale 0.12.0)
(libavformat 52.88.0)
(ffmpegsource 2.14.0.1)
built on Dec 12 2010, gcc: 4.2.1 (Apple Inc. build 5664)
configuration: --bit-depth=8
x264 license: GPL version 2 or later
libswscale/libavformat/ffmpegsource license: GPL version 3 or later

※ x264_L-SMASHの方にはfgoパッチを当てています



2chのQuickTimeスレに再生テストのお願いをしたら(これ)
昔配布していたx264バイナリの方に注目した方がいたみたいで…(笑)
せっかくなのでx264_L-SMASHのビルドも再開しようかと思います。
今後はplainとx264_L-SMASHの2つをビルドする予定。
x264_L-SMASHの方は、fgoなど自分が必要なパッチは当てていくつもりです。

[MacOSX] x264/x264_L-SMASH binary revision 1820/1820+360 [64bit]

x264_MacOSX_rev1820.zip
x264 0.110.1820 fdcf2ae
(libswscale 0.12.0)
(libavformat 52.88.0)
(ffmpegsource 2.14.0.1)
built on Dec 12 2010, gcc: 4.2.1 (Apple Inc. build 5664)
configuration: --bit-depth=8
x264 license: GPL version 2 or later
libswscale/libavformat/ffmpegsource license: GPL version 3 or later

x264_L-SMASH_MacOSX_rev1820+360.zip
x264 0.110.1820+360 cf80d1c
(libswscale 0.12.0)
(libavformat 52.88.0)
(ffmpegsource 2.14.0.1)
built on Dec 12 2010, gcc: 4.2.1 (Apple Inc. build 5664)
configuration: --bit-depth=8
x264 license: GPL version 2 or later
libswscale/libavformat/ffmpegsource license: GPL version 3 or later

※ x264_L-SMASHの方にはfgoパッチを当てています


Friday, November 26, 2010

take a rest for a while

disconnect

[MacOSX] x264 binary revision 1804 [64bit]

x264_MacOSX_rev1804.zip


※パッチは当てていません

[x264] Revision 1793, 1796, 1797 and 1802

今回のコミットのうち、4つに何らかの形で関わることになりました。
一番大きいのはr1802ですけど、順番通りに一つ一つ触れます。

まずr1793
これはr1796が関係しています。
r1796のパッチで
HAVE_LAVF ? "/libavformat" : ""

HAVE_FFMS ? "/ffmpegsource" : ""
などを使用していますが、これがエラーを吐くことから発見されたもの。
configureが中途半端なために起こるものだったので、これを修正したのがr1793です。
詳細はコミットメッセージを読んでください(僕が書きましたw)。
ちなみに最初は僕が修正して#x264devに提出して、D_S氏にokを貰ったのですが、
ラスボスのペンギン様に「if/elseが多すぎる」とドリルくちばしを喰らってお流れに。
修正しようと思ったら既にkemuri氏が素早くcoolに直してしまっていました(笑)
コミットメッセージが僕のになってるのはそういう経緯です。

次はr1796
libswscale/libavformat/ffmpegsourceのバージョン、ライセンス表示のパッチです。
バージョン情報についてはぶっちゃけそれほど役に立たない疑惑がありますが…(笑)
あったらあったで便利かなと。
実はこのパッチ、最初は#x264devに提出するつもりではなかったのですよね。
自分が欲しかっただけで、需要があるとも思えなかったので。
ただ、どうせなのでライセンス表示も弄ろうとしたら、意外な発見をすることに。
./configureのとき、--disable-lavf、--disable-swscale、--disable-ffmsが選択可能です。
libavformatとffmpegsourceはどちらもlibswscaleを必要とします。
なので、./configureを走らせるときに、--disable-swscaleを有効にした場合は、
自動的にlibavformatとffmpegsourceも無効になります。
一方libswscaleはlibavformatを必要とはしないので、--disable-lavfを有効にしても
libswscaleは無効にはなりません。
実際にlibavformatが無効でも、--vfのresizeフィルターでlibswscaleが使用されます。
しかし修正前のx264は、lavf=yesかどうかでライセンスの表示の有無を判断していました。
以上の問題があったので、これを修正してライセンス表記を正確にしたのがこのパッチ。
libswscaleのみ使用している場合は
libswscale license: ***
libswscaleとlibavformatの2つを使用している場合は
libswscale/libavformat license: ***
libswscaleとlibavformatとffmpegsourceの3つを使用している場合は
libswscale/libavformat/ffmpegsource license: ***
 などのような感じに表示されるようになっています。

次にr1797
これは僕が提出したr1793に相当するはずだったパッチでに含まれていたものですが、
kemuri氏のパッチに置き換わったので、その分を補完する形になったものです。
上にも書いたようにswscaleが無効ならlavfもffmsもyesかどうか判断する必要はありません。
後半のlavf、swscale、ffmpegsourceの部分が肝心の内容ですが、
統一されていないインデントが気になったのでついでにそれも修正しました。

最後にr1802
実はこれ、僕のパッチが形を変えてコミットされたものです(笑)
[x264] Disable Duplication in Weighted Prediction for P-frames [patch]
新しい--weightp 1は、僕のパッチの--weightp 2 + --no-weightp-dupに相当します。
Blu-rayやPSPやCoreAVC(1系)やFlashPlayer(10.0系)での再生を考えるなら、
--weightp 2ではなく--weightp 1を使えば今後デコードが壊れなくなるはずです。

以上、僕が関わったコミットに関する簡単な説明でした。
ビルドはまた今度。

[x264] Revision 1793, 1796, 1797 and 1802

今回のコミットのうち、4つに何らかの形で関わることになりました。
一番大きいのはr1802ですけど、順番通りに一つ一つ触れます。

まずr1793
これはr1796が関係しています。
r1796のパッチで
HAVE_LAVF ? "/libavformat" : ""

HAVE_FFMS ? "/ffmpegsource" : ""
などを使用していますが、これがエラーを吐くことから発見されたもの。
configureが中途半端なために起こるものだったので、これを修正したのがr1793です。
詳細はコミットメッセージを読んでください(僕が書きましたw)。
ちなみに最初は僕が修正して#x264devに提出して、D_S氏にokを貰ったのですが、
ラスボスのペンギン様に「if/elseが多すぎる」とドリルくちばしを喰らってお流れに。
修正しようと思ったら既にkemuri氏が素早くcoolに直してしまっていました(笑)
コミットメッセージが僕のになってるのはそういう経緯です。

次はr1796
libswscale/libavformat/ffmpegsourceのバージョン、ライセンス表示のパッチです。
バージョン情報についてはぶっちゃけそれほど役に立たない疑惑がありますが…(笑)
あったらあったで便利かなと。
実はこのパッチ、最初は#x264devに提出するつもりではなかったのですよね。
自分が欲しかっただけで、需要があるとも思えなかったので。
ただ、どうせなのでライセンス表示も弄ろうとしたら、意外な発見をすることに。
./configureのとき、--disable-lavf、--disable-swscale、--disable-ffmsが選択可能です。
libavformatとffmpegsourceはどちらもlibswscaleを必要とします。
なので、./configureを走らせるときに、--disable-swscaleを有効にした場合は、
自動的にlibavformatとffmpegsourceも無効になります。
一方libswscaleはlibavformatを必要とはしないので、--disable-lavfを有効にしても
libswscaleは無効にはなりません。
実際にlibavformatが無効でも、--vfのresizeフィルターでlibswscaleが使用されます。
しかし修正前のx264は、lavf=yesかどうかでライセンスの表示の有無を判断していました。
以上の問題があったので、これを修正してライセンス表記を正確にしたのがこのパッチ。
libswscaleのみ使用している場合は
libswscale license: ***
libswscaleとlibavformatの2つを使用している場合は
libswscale/libavformat license: ***
libswscaleとlibavformatとffmpegsourceの3つを使用している場合は
libswscale/libavformat/ffmpegsource license: ***
 などのような感じに表示されるようになっています。

次にr1797
これは僕が提出したr1793に相当するはずだったパッチでに含まれていたものですが、
kemuri氏のパッチに置き換わったので、その分を補完する形になったものです。
上にも書いたようにswscaleが無効ならlavfもffmsもyesかどうか判断する必要はありません。
後半のlavf、swscale、ffmpegsourceの部分が肝心の内容ですが、
統一されていないインデントが気になったのでついでにそれも修正しました。

最後にr1802
実はこれ、僕のパッチが形を変えてコミットされたものです(笑)
[x264] Disable Duplication in Weighted Prediction for P-frames [patch]
新しい--weightp 1は、僕のパッチの--weightp 2 + --no-weightp-dupに相当します。
Blu-rayやPSPやCoreAVC(1系)やFlashPlayer(10.0系)での再生を考えるなら、
--weightp 2ではなく--weightp 1を使えば今後デコードが壊れなくなるはずです。

以上、僕が関わったコミットに関する簡単な説明でした。
ビルドはまた今度。

Monday, November 22, 2010

[MacOSX] x264 binary revision 1788 (patched) [64bit]



Print-video-info-when-lavf-ffms-inputをちょっとだけ更新。
 rawvideoのときに、--demuxer ffms を使うようwarning出すようにしました。

Friday, November 19, 2010

[Vim] .vimrcと.gvimrcのメモ [MacVim]

Vimをちょっぴりカスタマイズ。
例によって備忘録。
.gvimrcの方はMacVim専用にしてあるけど、Windows等もほぼ一緒の設定でいけるはず。
一部設定は.vimrcではなく.gvimrcに書かないと反映されないので注意。

Thursday, November 18, 2010

[Vim] .vimrcと.gvimrcのメモ [MacVim]

Vimをちょっぴりカスタマイズ。
例によって備忘録。
.gvimrcの方はMacVim専用にしてあるけど、Windows等もほぼ一緒の設定でいけるはず。
一部設定は.vimrcではなく.gvimrcに書かないと反映されないので注意。


Tuesday, November 16, 2010

[雑談] 5x3≠3x5 [悪しき教育]

なんかさっきツイッターで流れてきたんですけど、なんともアホらしい…。
話題の元はこれ↓
そういえば掛け算にはそんなルールがあったな

これに限らないけど、なんで日本の教育は「答えは一つ」にしたがるのか。
算数の教育において、日本では「2+3=?」という形式がほとんど。
欧米の教育では、逆らしい。
つまり、「5=?+?」という聞き方。
もちろん、1+4、2+3、3+2、4+1など、全てがマル。
もしかしたら、ちょっとしたマセガキは「-2+7」なんて答えるかもしれない。
それだって立派な「正解」。
ある生徒が「1+4」と答えても、別の生徒が「2+3でもいい」と答える。
そういう教育の方が楽しいじゃない。
教える方の体力は必要だろうけどさ。
意見まとめるの大変だろうし、答えが一つの方が教えてて楽だろうし。
でも一つの物事を多角的な観点から見る力って、こういう教育の中で育つのだと思う。

お釣りの計算だって、国によって違う。
例えばこれ↓
イタリアと日本のお釣りの支払い方の違い?!

ねえ、これもどちらかが「間違い」なの?

Sunday, November 14, 2010

[Firefox] BarTabアドオンが素晴らしい

少し前にSafariを快適にする記事を書きましたが、今日Safariを使うのを止めました(笑)
理由はBarTabという素晴らしいFirefoxのアドオンを見つけたからです。

僕は再起動をよくするので、再起動の度に前回のセッションで開いておいたタブを一度に
全て読み込むのは結構負担になるし、操作可能になるまでの時間が勿体無い。
このBarTabをインストールしておけば、最低限のタブのみ読み込んで起動してくれます。
メモリ消費も抑えてくれるし、起動後から操作可能になるまで時間がかなり短縮されます。

一番うれしいのは一定時間閲覧しないまま経過したタブを自動で待機にしてくれること。
僕は30秒操作しないタブを自動で待機するように設定しました。
メモリ節約メモリ節約…。
この機能で気をつけて欲しいのは、待機させたくないサイトをきちんと設定すること。
例えば読み込み後に一定時間経たないとリンクが現われないサイトなど。
リンクが出る前に待機モードになってしまうと、また最初からやり直しになります。
アップローダなどにはそのようなものが結構ありますね。
他にも日記を書いていたのに他の作業やっていたら待機モードになって消えた!とか(笑)
(実はこの記事を書くときにも勝手に待機になってしまって書いた内容が消えた…w)
他にも定期的にアクセスするサイトなども除外しておいたほうがいいかな。
GoogleReaderやGmailを利用している人はwww.google.co.jpをリストに入れておきましょう。
(正規表現は使えないのかしらん…orz)

それにしても素晴らしいアドオン…。
常時200MB前後しかメモリを消費しない…。

[MacOSX] x264 binary revision 1772 (patched) [64bit]



Add-no-weightp-dup-optionパッチもちょっとだけ更新。

[Firefox] BarTabアドオンが素晴らしい

少し前にSafariを快適にする記事を書きましたが、今日Safariを使うのを止めました(笑)
理由はBarTabという素晴らしいFirefoxのアドオンを見つけたからです。

僕は再起動をよくするので、再起動の度に前回のセッションで開いておいたタブを一度に
全て読み込むのは結構負担になるし、操作可能になるまでの時間が勿体無い。
このBarTabをインストールしておけば、最低限のタブのみ読み込んで起動してくれます。
メモリ消費も抑えてくれるし、起動後から操作可能になるまで時間がかなり短縮されます。

一番うれしいのは一定時間閲覧しないまま経過したタブを自動で待機にしてくれること。
僕は30秒操作しないタブを自動で待機するように設定しました。
メモリ節約メモリ節約…。
この機能で気をつけて欲しいのは、待機させたくないサイトをきちんと設定すること。
例えば読み込み後に一定時間経たないとリンクが現われないサイトなど。
リンクが出る前に待機モードになってしまうと、また最初からやり直しになります。
アップローダなどにはそのようなものが結構ありますね。
他にも日記を書いていたのに他の作業やっていたら待機モードになって消えた!とか(笑)
(実はこの記事を書くときにも勝手に待機になってしまって書いた内容が消えた…w)
他にも定期的にアクセスするサイトなども除外しておいたほうがいいかな。
GoogleReaderやGmailを利用している人はwww.google.co.jpをリストに入れておきましょう。
(正規表現は使えないのかしらん…orz)


それにしても素晴らしいアドオン…。
常時200MB前後しかメモリを消費しない…。

Saturday, November 13, 2010

[MacOSX] x264 binary revision 1766 (patched) [64bit]



[x264] Disable Duplication in Weighted Prediction for P-frames [patch]

ここ数日weightp関連のコードをずっと眺めていました。
それで一つパッチを書きましたので、こっそり公開。
おそらくある程度の需要はあると思うし、自分も今後使っていくつもりです。
ただこのパッチ、#x264devにおいてDark_Shikari氏にrejectされたパッチです。
(というかrejectされてコミットされないから自分のブログで公開してるんですけどね…w)
有用性と危険性をきちんと理解した上で自己責任で使用してください。

patch -> here

ことの発端はこの記事
Leopardのときは本当に意味不明な挙動で何が原因かサッパリわからなかったのですが、
SnowLeopardにOSを更新してからやっと不具合の出る原因にパターンが見え始めました。
(OSと一緒にQuickTime Player のバージョンも上がっています)
どうやらx264でエンコードするときに
--ref 15 & --weightp 2 または --ref 16 & --weightp 1 または --ref 16 & --weightp 2
のいずれかを指定するときちんとデコードできない動画ができあがるらしい。
(つまり ref + weightp > 16 のときにデコードがおかしくなる)

それでweightp関連のコードを読み始めたんですが、encoder/encoder.c:1418の
int x264_weighted_reference_duplicate( x264_t *h, int i_ref, const x264_weight_t *w )
以下処理が絡んでいるみたいなんですね。

それでこの処理を丸々無効にするオプション"--no-weightp-dup"を作ってみました。
そのパッチがこれ
パッチを覗いてもらえればわかると思いますけど、実装方法は至ってシンプルです。


まず、このパッチの有用性は何かと言うと、

  1. weightpを使った動画だとデコードがぶっ壊れたデコーダでもデコード可能になる
    (例えばCoreAVCのバージョン1系、FlashPlayerのバージョン10.0系など)
  2. refに制限があるハードを対象にしたエンコードにおいてweightpの選択肢が増える
    (例えばPlayStation Portableなど)
  3. weightpを使用しないよりはフェードが改善する
    (Duplicationを行なった場合ほどではないですが)
  4. weightpを使用したエンコードにおいてエンコード速度上がる
    (特に --weightp 2 の場合はDuplicationありに比べて速度向上が大きいです)

おそらく一番大きな影響は1番目ですかね。
知人の協力も得て、古いCoreAVCとFlashPlayerで再生可能なことを確認しています。
Dark_Shikari氏のこの記事で批判されている一連のデコーダですね…(笑)
次に2番目の件ですが、例えばPSPにおいてはこのような報告が出ていますが、
(どうやら、PSPは ref + weightp > 3 になると駄目みたい)
このパッチを使うと--ref 3 & --weightp 2 などのエンコードができるようになるはずです。
PSP持ってないのでこちらは確認できていないですが、たぶん大丈夫だと思います(笑)
3番目と4番目の説明は略。
興味がある方はご自分でエンコードして確認してみてください。
エンコードされた動画をバイナリエディタやMediaInfoで見てみると、
今までweightp=2などと書き込まれていた部分が、weightp=2:1などになっているはずです。
Duplicationが有効だと:1が付き、無効だと:0が付きます。


次に、このパッチが蹴られた理由は何かと言うと、

  1. デコードが壊れるのが嫌なら--weightp 0 を使えばいい
    (実際に人達はそうしている)
  2. Duplicationを使う方がフェードの質が上がる
    (そもそも質を上げるためにこんな処理をしている)
  3. 不正確な実装のデコーダを助長してしまう
    (不正確な実装のデコーダでもデコードできてしまうので)

以上がコミットされない大きな理由です。
他にもk-means(--weightp 3として実装予定かつ実装未定のもの)でDuplicationが有用とか、
mbaffとの関わりでとか、いろいろ理由があるらしいです。
そんなこんなで、"I reject this patch on principle"と言われました(笑)


ですが。
個人的には--weightp 0よりは --no-weightp-dup & --weightp > 0 の方が質は上がってると思うし、
PSP用エンコは現状 --ref 1 & --weightp 2 か --ref 2 & --weightp 1 しかweightpの選択肢がないし、
k-meansはいつ実装されるかサッパリだし(肝心のdylan氏が行方不明)、
mbaffとか自分にとっては関係ないし…。
などの理由で今後も使うことにしました。
デフォルトではDuplicationをきちんと行いますし、現状ではそこまで悪影響はないかと。
今後公開していくバイナリでもこのパッチを当てていくつもりです。
もし今後weightpの実装が変わり、このパッチがcriticalな影響を及ぼす危険があったら、
そのときはすぐに使用を止めればいいだけかなと。



例えばニコニコ動画など、限られたビットレートで画質を維持しないといけない上に
FlashPlayerを全員が最新にしているとは限らない、という場で結構使えるんじゃないかな。
他には、CoreAVCで見たいけどバージョン更新するお金がない人とか…?
あと、Blu-ray Disc用エンコードでは現在 --weightp 0 が推奨となっているらしいですが、
もしかしたらこのパッチでweightpが使えるようになるかもしれないとかそうじゃないとか。
まあどの層に需要があるかはまだハッキリしませんが、役に立てたらうれしいです(笑)



なお、今回の件でも普段からお世話になっている方々にテストなどでお世話になりました。
Special thanks for boiled_sugar, Chikuzen, and  JEEB.

[x264] Disable Duplication in Weighted Prediction for P-frames [patch]

ここ数日weightp関連のコードをずっと眺めていました。
それで一つパッチを書きましたので、こっそり公開。
おそらくある程度の需要はあると思うし、自分も今後使っていくつもりです。
ただこのパッチ、#x264devにおいてDark_Shikari氏にrejectされたパッチです。
(というかrejectされてコミットされないから自分のブログで公開してるんですけどね…w)
有用性と危険性をきちんと理解した上で自己責任で使用してください。

patch -> here

Sunday, October 31, 2010

[MacOSX] Safariを快適に [Tips]

Appleが開発しているウェブブラウザのSafari。
OSXバージョン10.3(通称Tiger)以降から標準ブラウザになっています(それ以前はIE for Mac)。
今年6月にはSafari5が公開されて機能拡張が追加されてかなり便利になりました。
今回はそんなSafariをちょっと快適にするTips集みたいなもの。
というか、例によって備忘録…(笑)

機能拡張(Safari Extension)
FirefoxでいうAdd-onに相当するもの。
ブラウザ再起動が不要なのでGoogle ChromeのExtensionの方が近いかも。
便利だけど、インストールしすぎるとSafariが重くなるので注意。
必要最低限がオススメ。
  • Better Google Reader
    Google Readerは未読記事を1000までしかカウントしてくれない。
    それ以上ある場合は1000+としか表示されないけど、これはきちんと2045+とか表示してくれる。
    また未読数をタイトル末尾から冒頭の方に移動してくれるのでタブの表示が狭くても確認しやすい。
    他にも色付け機能などがあって見やすい。
  • AutoPatchWork
    AutoPagerizeの方がよく使われているみたいだけど、たまにSafariが一瞬固まる。
    例えばGoogle Readerで読み込みが完了していない段階でさらにページスクロールをしたときとか。
    最初この原因が何なのかわからなくて結構困ってたけど、AutoPatchWorkに移行したら解決。
    Safariスレを覗いてみても一部のページで読み込みが異常に遅くなるなどの問題もある模様。
    このAutoPatchWorkはそのようなことがない(らしい)。
  • ScribeFire
    一々Bloggerのページを開かなくても記事が書けるのが便利。
    過去の記事の編集もできるし、 ブログエディタも必要なものは揃ってるしこれで十分。
    この記事も初めてScribeFireで書いてみてる。
    複数のブログを管理している人にとってはかなり便利そう。
SIMBLプラグイン
SIMBLはCocoaアプリケーションを拡張するプラグイン(を利用可能にするプラグイン)。
うちの環境で入れているプラグインは2種類。
  • SafariStand
    言わずと知れたSIMBLプラグイン。
    YouTubeとかニコニコのファイルを落とすときによく使う。
  • ReferrerHackKit
    GoogleReaderなどで画像が表示されないときはリファラーの問題。
    このプラグインでBlockするなりForgeすれば見れるようになる。
メモリ使用量を抑える
Safariはバージョンを重ねるごとに機能がどんどん追加されている。
が、反面メモリ食いに悩まされる人も増えている模様(Safariスレなどで散見)。
うちもメモリが少ない環境なのでメモリ使用量はできるだけ抑えたい。
以下、その対策を列挙(本当に効果があるかどうかは各自の判断にお任せ)。
うちでは一応これらの対策で常時実メモリ300MB以下に抑えられている。
  • 機能拡張を減らす
    機能拡張をインストールすればメモリ使用量は増える。
    すべての拡張を無効にしてからSafariを再起動して確認してみると実はそこまでメモリを食ってない。
    一つ一つ機能を有効にしてみてアクティビティモニタで確認してみるといい。
    特にAdBlock for Safariは顕著。
    うちの環境では、この機能をOFFにするだけで半分近くメモリ使用量が減った。
  • Webpage Previewsを無効化する
    Safariは訪問したページを自動で画像に保存する。
    Top Sitesで表示されるのはこの画像。
    ぶっちゃけこの機能、余計なお世話で、ロードは重いし、おまけにハードディスク容量の無駄遣い
    よく開くページはブックマークすればいいし、タブ記憶・復帰機能があるからTop Sitesは全く使わない。
    Safariが起動時にはあまりメモリを使ってないのに長時間使うと馬鹿食いする原因のひとつ(だと思う)。
    無効化の方法は下記「コマンドラインからのチューニング」を参照。
  • タブをあまりたくさん開かない
    なんだかんだ言ってこれが一番効果的(笑)
    Safari自体の問題というより、使い方の問題。
    8〜10個くらいで十分。
  • 再起動
    以上をやってもメモリを食ってしまうなら最終的にはこれ。
    まあ仕方ないね。
コマンドラインからのチューニング
さらに快適化するためにターミナル.appから設定を弄る。
コマンドを入力して操作することに恐怖感を抱く人もいるみたいだけど、
実際にやってる作業は設定ファイル(com.apple.Safari.plist)に値を書き込んでいるだけ。
Property List Editor.appなどで操作しても同じことができるけど、コピペの方が楽。
($マークの後ろをコピー、ターミナル.appの画面にペーストしてリターンキーを押す)
以下、便利なものを列挙。
  • Webpage Previewsを無効化
    $ defaults write com.apple.Safari DebugSnapshotsUpdatePolicy -int 2
  • 表示を速くする(表示開始までの待ち時間を短くする)
    $ defaults write com.apple.Safari WebKitInitialTimedLayoutDelay -float 0.25
  • DNSプリフェッチを無効化
    $ defaults write com.apple.Safari WebKitDNSPrefetchingEnabled -bool false
  • 常にタブバーを表示
    $ defaults write com.apple.Safari AlwaysShowTabBar -bool true
  • RSS機能を無効化
    $ defaults write com.apple.Safari DebugSyndicationEnabled -bool false
設定を戻すときにはwriteの部分をdeleteに変え、-bool trueなどの部分を削除してからコピペすればよい。
例えば、常にタブバーを表示する機能をオフにしたいなら
$ defaults delete com.apple.Safari DebugSyndicationEnabled

こんな感じです。

Wednesday, October 20, 2010

[MacOSX] 使用アプリケーション備忘録 [随時追加]

普段使用するアプリケーションに関するメモ。
でも中にはあまり利用しないものも…(笑)
いわゆる備忘録的なものです。
インストールしたものだけでなくOSバンドルのものも含みます。


  • インターネット系

    • ブラウザ:Safari FirefoxiCabOmniWeb
      普段はSafariを使用。またに表示確認などでFirefoxも使用。
      普段はFirefoxを使用(BarTabの便利さに惚れて…)
      iCabは意外といいブラウザ(だけどとっつきにくい)
      描画速度に関してはおそらくOmniWebが最速。

    • メーラー:Mail(.app)
      はっきり言ってひどいソフト(笑)
      ThunderBirdが64bit対応していないので。

    • 専ブラ:rep2
      Thousandから移行。

    • ツイッター:夜フクロウ
      非常に使いやすい。

    • チャット:LimeChatSkype
      OSX用のLimeChat便利すぎ。
      (YouTubeやニコニコのリンクはサムネが表示されたり)。
      Skypeはたまーにリア友と話すために使用。

    • BitTorrent:Transmission
      Ubuntuのiso落とす時に使用。

    • ストレージ:Dropbox
      1passwordとの組合せが最高。

    • FTP:Cyberduck
      おなじみですね。



  • 開発系

    • 統合開発環境:Xcode
      developerサイトから最新版を落としてきてインストール。

    • ウィンドウシステム:XQuartz
      $ ssh -X wipple@peropero.com

    • 端末エミュレータ:ターミナル(.app)
      フォントはMenlo Regular 12 pt.

    • エディタ:MacVimEmacs(Cocoa)
      Vim厨になるべく修行中。
      昔はEmacs厨だった。

    • パッケージ管理:MacPorts
      あると便利だけど、頼りすぎると痛い目にあったりする。



  • マルチメディア系

    • プレイヤー:QuickTime Player (X & 7.6.6)MPlayerVLC、etc
      いろいろ入れてるけど、主にL-SMASHのテスト目的です。

    • QuickTimeコンポーネント:x264encoderPerian
      どっちもあまり利用してないけど…。

    • リップ:MacTheRipper
      最近暇がなくてもうお蔵入り状態…。

    • エンコーダ類:x264FFmpegMPEG StreamclipHandBrake
      HandBrakeは人柱的な目的でインストールしてるが滅多に使わない。

    • オーディオ:Audacity
      たまに使う。

    • muxer:MkvtoolnixMP4Box
      たまにffmpegもmuxerとして使用。

    • ムービー情報:MediaInfoAtom Inspector
      Atom Inspectorはdeveloperサイトから。

    • その他:JM(version16.0)
      ldecod! dump-yuv! regression test!



  • ユーティリティ

    • 通知:Growl
      これがないと始まらない。

    • IME:AquaSKK
      別にことえりが嫌いなわけではない。

    • パスワード管理:1Password
      夜フクロウの作者さまからライセンスを頂きました。
      多謝m(__)m

    • Cocoa拡張:SIMBL
      主にSafariのプラグインでお世話になっていたけど最近は…。

    • セキュリティ:LittleSnitch
      監視ツール。
      Googleの自動更新とかもこれで蹴れる。

    • アーカイバ:CleanArchiverThe UnarchiverStuffIt Expander
      Windows環境の人とファイルのやりとりする機会が多いので。

    • バイナリエディタ:0xED
      ものすんごく軽い。びっくり。

    • CPU/Memory表示:atMonitor
      iStat Menusはシェアウェアになってしまった…。
      しばらく色々探し回ってやっと見つけたのがこれ。

    • バッテリー:coconutBattery
      うちのMacBookはバッテリーがイカれてる(フル充電で6%しか溜らない)



    • 描画GPU支援:QuartzGLEnableManager
      環境によっては描画がおかしくなるらしいけどうちでは無問題。

    • パフォーマンス監視:InstrumentsCHUD
      CHUDの方はdeveloperサイトから。



  • その他

    • 文書作成:iText ExpressTeXShop
      開発目的でなく、手軽にメモとるときはiText Expressで十分。
      ワープロソフトなんてインターレースとともに世の中から滅びてしまえ。

    • ビューア:Simple Comic
      書庫のまま閲覧できるので便利。

    • 互換レイヤー:Wine
      おもにAvisynthの利用のために。

    • 辞書:辞書(.app)
      便利すぎワロタ。




※ 随時追加していきます。

Tuesday, October 19, 2010

[MacOSX] 使用アプリケーション備忘録 [随時追加]

普段使用するアプリケーションに関するメモ。
でも中にはあまり利用しないものも…(笑)
いわゆる備忘録的なものです。
インストールしたものだけでなくOSバンドルのものも含みます。

  • インターネット系
    • ブラウザ:Safari FirefoxiCabOmniWeb
      普段はSafariを使用。またに表示確認などでFirefoxも使用。
      普段はFirefoxを使用。
      iCabは意外といいブラウザ(だけどとっつきにくい)
      描画速度に関してはおそらくOmniWebが最速。
    • メーラー:Mail(.app)
      はっきり言ってひどいソフト(笑)
      ThunderBirdが64bit対応していないので。
    • 専ブラ:Thousand
      狭い画面ですごく助かる専ブラ。
      BathyScapheはp2経由の書き込みに対応していないので。
    • ツイッター:夜フクロウEchofon
      メインで使用しているのは夜フクロウ。非常に使いやすい。
    • チャット:LimeChatSkype
      OSX用のLimeChat便利すぎ。
      (YouTubeやニコニコのリンクはサムネが表示されたり)。
      Skypeはたまーにリア友と話すために使用。
    • BitTorrent:Transmission
      Ubuntuのiso落とす時に使用。
    • ストレージ:Dropbox
      1passwordとの組合せが最高。
    • FTP:Cyberduck
      おなじみですね。
  • 開発系
    • 統合開発環境:Xcode
      developerサイトから最新版を落としてきてインストール。
    • ウィンドウシステム:XQuartz
      $ ssh -X wipple@moemoe.com
    • 端末エミュレータ:ターミナル(.app)
      フォントはMenlo Regular 12 pt.
    • エディタ:MacVimEmacs(Cocoa)
      Vim厨になるべく修行中。
      昔はEmacs厨だった。
    • パッケージ管理:MacPorts
      あると便利だけど、頼りすぎると痛い目にあったりする。
  • マルチメディア系
    • プレイヤー:QuickTime Player (X & 7.6.6)MPlayerVLC、etc
      いろいろ入れてるけど、主にL-SMASHのテスト目的です。
    • QuickTimeコンポーネント:x264encoderPerian
      どっちもあまり利用してないけど…。
    • リップ:MacX DVD RipperMacTheRipper
      MacXの方はライセンスキーは2010/10/30の無料配布キャンペーンでゲット。
    • エンコーダ類:x264FFmpegMPEG StreamclipHandBrake
      HandBrakeは人柱的な目的でインストールしてるが滅多に使わない。
    • オーディオ:Audacity
      たまに使う。
    • muxer:MkvtoolnixMP4Box
      たまにffmpegもmuxerとして使用。
    • ムービー情報:MediaInfoAtom Inspector
      Atom Inspectorはdeveloperサイトから。
    • その他:JM
      ldecod! dump-yuv! regression test!
  • ユーティリティ
    • 通知:Growl
      これがないと始まらない。
    • IME:AquaSKK
      別にことえりが嫌いなわけではない。
    • パスワード管理:1Password
      夜フクロウの作者さまからライセンスを頂きました。多謝m(__)m
    • Cocoa拡張:SIMBL
      主にSafariのプラグインでお世話になる。
    • セキュリティ:LittleSnitch
      監視ツール。
    • アーカイバ:CleanArchiverThe UnarchiverStuffIt Expander
      Windows環境の人とファイルのやりとりする機会が多いので。
    • バイナリエディタ:0xED
      ものすんごく軽い。びっくり。
    • CPU/Memory表示:MenuMeters
      iStat Menusがバージョン3からシェアウェアになったので。
    • バッテリー:coconutBattery
      うちのMacBookはバッテリーがイカれてる(フル充電で6%しか溜らない)
    • 描画GPU支援:QuartzGLEnableManager
      環境によっては描画がおかしくなるらしいけどうちでは無問題。
    • ファンコントロール:smcFanControl
      温度管理はアルミMacBookの使用者の宿命(笑)
    • パフォーマンス監視:InstrumentsCHUD
      CHUDの方はdeveloperサイトから。
  • その他
    • 文書作成:iText ExpressTeXShop
      開発目的でなく、手軽にメモとるときはiText Expressで十分。
      ワープロソフトなんてインターレースとともに世の中から滅びてしまえ。
    • ビューア:Simple Comic
      書庫のまま閲覧できるので便利。
    • 互換レイヤー:Wine
      おもにAvisynthの利用のために。
    • 辞書:辞書(.app) 
      便利すぎワロタ。
※ 随時追加していきます。

Wednesday, September 29, 2010

今後の方針

本当はもっと早く書くべきだったんですが、今後の方針について少し情報整理します。


Tuesday, September 28, 2010

[MacOSX] x264 binary revision 1732 (patched) [64bit]

x264_MacOSX_rev1732_patched.7z


偶然暇ができたので、久々のバイナリ配布です。
といってもMac OS X (64bit) 用だけですが(笑)




Sunday, September 26, 2010

ブログのお引越し

こっちの方がラクそうなので移民なう。
他にもいろいろ理由はあるんですけどね。

OSなどの環境も変化して今後の活動の重点が変化します。
ブログの内容も今後はMacについての記事が増えると思います。
ブログの趣旨が様変わりしますし、区切りがいいのでこの際思い切ってお引越し。
今後の方針についてはまた今度時間があるときにでも。

過去記事についてですが、livedoorブログは無料プランだとエクスポートができない。
引越しするためにお金を払うのはアホらしいので(笑)過去記事はそのままにします。
もともとバイナリ配布の記事がほとんどでしたし、そんなに支障は出ないかと。

明日からまたしばらく忙しいので、次回更新までまたまた間が空くと思います。
それではノシ