So-net無料ブログ作成
検索選択
開発系とか ブログトップ
前の30件 | -

Lionに移行。 [開発系とか]

iPhone 4S導入後、ようやく落ち着いたので、iPhone 3GSを初期化したり。

MBPも、Lionのパーティションを10.7.2を新規インストールし直して、メイン環境を移行してみました。

SnowLeopardに比べると、特にFinderでもっさり感がありますね。新しいメールはイマイチ慣れないなぁ。

続きを読む


CodeLevelSupport。 [開発系とか]

Mac Developer Program。継続してます。

せっかくのチケット、毎年もったいないな、と思いつつ。
スクリーンショット(2011-09-27 19.20.53).png
使っちゃおうかな。

続きを読む


一段落。 [開発系とか]

一旦、libavPlayer.frameworkの更新ペースを落とそうと思う。

主立った問題はほぼ対処出来たし、クラッシュネタもほぼ潰せたから。

//

思いつく範囲で、フレームワーク側で考える必要があるのは、ColorSync/Display Color Profile対応の箇所くらいかな。でも、これはパス。知覚系カラースペースとかICCプロファイルとか、そういう世界になりそうで、面倒くさそう。

残るは、ほぼlibavformat側の問題ばかりだ。
・・・libavformatのMPEG TS/PS(.mpg、.vobを含む)のサポートが酷いな。

続きを読む


多分間違ってる。 [開発系とか]

libavformatで、DV.movの時間軸解釈がおかしい件のパッチ。

QuickTimeのSequence Grabber APIで生成したmovには、tmcd(タイムコード)トラックが埋め込まれるのだが、libavformatはこのトラックに対応しないのに、トラック情報だけは反映しようとしていた。

=> libavformat/utils.c : update_stream_timings()

この関数でやっていることは、「各トラック情報を元にムービーの時間軸をのばす」というもので、movフォーマットの管理情報を壊す、正しくないやり方になっている。が、2年以上も放置されていることからみて、「誰も気にしてない」(笑)。

 せめて解釈しないAVStreamは処理をスキップしろよ・・・

って、ここをいじるとあちこち被害が大きいな・・・。

続きを読む


ワケ分からん。 [開発系とか]

libavPlayer.framework

ようやっと、頭を悩ましていた訳の分からないdeadlockやらテクスチャ崩れやらが直った。もう2週間近く、あーでもない、こーでもない、といじり回していたので、少し気が楽になった。CPUを少し使うようになってしまったが、安定性のほうが重要だし。

結局のところ、CVDisplayLinkを使うなら、FBO/Textureを使い回すのは止めた方がいい、というのが今日の時点での結論。よく分からない症状で悩まされる。Layerの安定度と、Viewの不安定度の差がひどかった。

使い回し出来ないからと言って、速度に大して影響が出ないのは不思議だなと思ったけど。

続きを読む


ん〜。難題山積。 [開発系とか]

今のところ気がついた問題とか列挙。

自分のコード側:
・Layer側がOKでも、View側だけ表示異常になることがある。
・View側でクローズ出来ずハングするケースあり。
・DV.movで、yuv420でない画像(多分411)が返ってきて落ちる。
ライブラリ側:
・mp4とmovとflvは、最近のは割とOK。ニコニコ系はほぼ通る。
・SANYOやCASIOデジカメの60fpsサンプルムービーで落ちる。
・QTで通るH.264.mov系で画像が出ないものが散見される。
・tsがほぼ全滅。
・vobもほぼ全滅。

・・・圧倒的にダメダメじゃないか・・・ライブラリ側の問題が厳しいな。

tsとvobは・・・libavformat側の問題かな。SimplePlayerで使ってるぼろいパッチを埋め込むか。
DVは・・・420前提じゃダメということ。swscaleのところ復活させるか。
デジカメが生成する60fps.movが通らないのは・・・対処方法あるのか?

後は、libav gitじゃなくてffmpeg gitを試すとか、かな?

全部対処はまず無理なので、どこまで対処するかは適当に考えることにする。

リリース:libavPlayer Framework SDK 1.4 [開発系とか]

最新版は、サイドバー「公開中のソフトウェア」からどうぞ。

続きを読む


NSOpenGLView。 [開発系とか]

10.7.1のNSOpenGLViewはどこかおかしいです。

先日の記事の続き。

//

とりあえず、LAVPViewのオーバーヘッドを取り除くことに成功。10.6.8環境下なら、LAVPLayerとLAVPViewのCPU使用率は同等に出来ました。

LAVPLayerと同様、FBOに描いてからRectを表示する方式に書換え、CVDisplayLink割り込み時に強制表示(-setNeedsDisplay:ではなく、-displayを使う)とすることで、改善をはかりました。(github

//

・・・しかし、10.7.1ではLAVPViewのCPU負荷がやはり高いです。先日よりはマシになりましたが。

CVDisplayLink、CIContext、CVPixelBuffer辺りの動作は同一に出来たので、この状態で10.7ではCPU使用率に差が生まれる、ということは・・・。

おそらく、NSOpenGLViewにオーバーヘッドがある、ということになるでしょうか。
自分のコード側の処理方法が基本同じに出来たので、NVIDIAドライバの線も、考えづらくなりましたし。

GT330Mドライバか? [開発系とか]

自分のスキルでは、切り分けには限界があるのですが。

MacOS X 10.7.1では、以下のいずれかに不具合が残っていると判断しました。
 ・NSOpenGLView
 ・NVIDIA dirver
 ・CVDisplayLink
動きから見ると、OpenGL呼び出し部分で何かしらチューニング不足なのだろうと思います。

続きを読む


サポート終了予定のお知らせ。 [開発系とか]

拙作群における、MacOS X 10.5 Leopardのサポートにつきまして、年内をもって終了させていただくことになりました。
以降のサポート環境は、Snow Leopard+Lionのみにシフトしていくことになります。

これは単純に、Leopardを開発+テストする環境を維持するのが難しくなった、というのが理由です。

//

続きを読む


CoreVFの更新版。 [開発系とか]

開発ネタ。

使おうと思ってくれる人が居るのは、本当にありがたい。

CoreVF Framework 0.1.9のテストビルドを作りました。
 ・testbuild.dmg (リンク削除)

・Xcode 3.2でビルドし直し。
・SDKを10.5.sdkに更新。
MacOS X 10.4とPPCサポートのドロップ。
・mcdeintとpostprocについて、libav git-29773へ更新。
・imageunit、postprocの致命的なバグを修正。

バージョンが0.1.9止まりなのは、新機能がないからです(笑)

時間がなくて、手元で十分なテストが出来ていないので、しばらくベータ版扱いとします。安定しているようなら正式リリースとし直します。

CVF_ImageUnit。(追記) [開発系とか]

追記)CoreVF全体をコンパイルし直しました。(リンク

//

昨日コメントをくれた78さんへ。速度低下の対処を試みました。
 (リンク削除)
こちらを試していただけますか。よろしくお願いします。

//

拙作CoreVFのプラグインの一つ、CVF_ImageUnit。エンコード時にCoreImageフィルタをかけることが出来るのですが、長時間エンコードで不安定であるという指摘を受けていました。

いろいろ調べたのですが、
 1)NSConnection -connectionWithRegisteredName:host:を呼び
 2)connectionのrootProxyを得て
 3)setProtocolForProxy:を呼ぶ
という処理を何度も繰り返すと、proxy経由の呼び出しが徐々にスローダウンする、という現象を突き止めました。(MacOS X 10.6.8で確認)

最初は上記の処理も、proxy呼び出しのオーバーヘッドも、1/1000もかからなかいのです。が、これを数万という単位で繰り返し呼び出すと、上記の処理、さらにはproxy経由のオーバーヘッドが、どんどん増大する、という悪循環に陥るようです。
一時間も処理をまわすとconnectionのinvalidateでハングアップのような状態に陥る現象が発生し、使い物にならなくなります。

プロセス間通信のエラー処理が面倒だから、簡単に使えるNSDistributedObjectを使っているのに、こういう落とし穴があると結構困ります。

・・・こういう連続呼び出しにDOを使う方が間違っているような気もしますが・・・

Test build。 [開発系とか]

libavPlayer.frameworkのテストビルドを作りました。

興味のある方は、試してみてフィードバックをください。GPL V2ライセンスです。対応環境はSnowLeopard以降、intel-64bit環境専用です。

 ・testbuild.dmg (リンク削除)

//

 QTKit.frameworkにおけるQTMovieと同じように、libavPlayer.frameworkにはLAVPStreamクラスが用意されています。表示側は、NSOpenGLViewのサブクラスと、CAOpenGLLayerのサブクラスが利用可能です。

フレームワークにヘッダが入っているので、見れば分かると思います。実際の使い方は、
 ・https://github.com/MyCometG3/libavPlayer/tree/master/LAVPTest
あたりを見れば一発だと思います。

FFTすげぇ。 [開発系とか]

libavPlayer.framework、遂に変速再生にも対応。あと必要なのは・・・アスペクト比指定サポートくらいか?

正直、ここまで出来るとは思ってなかった。今の状態でもちょっとしたプレーヤなら作れるくらい、使える所まで来た感じ。

続きを読む


突破したかな。 [開発系とか]

開発ネタ。

libavPlayer.framework、順調に開発中。
ようやく、頭を痛めていたわけの分からない挙動はとりあえず突破したっぽい。次の段階に進むぜ。

続きを読む


10.5.sdk。 [開発系とか]

夏休みを取った。しばしの間、ふぬけ生活を満喫しますw。

//

Xcode 4.0に、10.5.SDKを強引に入れる方法を知った。Xcode 3.2.6に入っている、10.5.dmgという隠しフォルダに入っているインストーラを使い、Xcode 4のフォルダを指定するものだ。

・stackoverflow:How to add base SDK for 10.5 in xCode 4

試した所、一応動いた。が、新規Cocoaアプリを作ろうとする所で、引っかかった。

//

続きを読む


libavPlayer.framework。 [開発系とか]

一応動くレベルになったので、とりあえずgithubに上げてみた。

https://github.com/MyCometG3/libavPlayer

ffplay.cのコードをベースとした、メディアプレーヤクラス。NSOpenGLView+CAOpenGLLayerのサブクラスが利用出来る。
頑張ってSDLへの依存を排除したので、このままでMacOS X 10.6以降でコンパイル出来る。

が、実用性はまだまだ。
・開いた直後に動画が表示されない(CALayer)
・開いた瞬間にゴミが一瞬表示される(NSView)
・音がでなくなったり、凄く遅くなったり。
・字幕関連も動かない。

内部のキューの管理とか、個人的に凄く嫌いな作り。ガリガリcond_signalで同期を取る方式なんだけど、これではまともに動かすのが大変。

でも、絵が出ないのは、CAOpenGLLayerの使い勝手がおかしいと思う。drawInCGLContextが有効なtimeStamp付きで呼ばれないことがあるのは仕様なのか?

なんかこのコードは肥やしにして、作り直した方が良い気がする。

NPAPI。 [開発系とか]

自分用メモ。そのうちやる気がおきる「かも知れない」。

//

Safari 5.1(Webkit2)は、WebkitがサポートしていたWebkitPluginに対応していない。このため、NetScape Pluginとしてビルドし直す必要がある。

1. プラグイン作成に必要なnpapi.hなどはSDKがこちらから入手できる。

http://releases.mozilla.org/pub/mozilla.org/xulrunner/releases/2.0/sdk/
http://releases.mozilla.org/pub/mozilla.org/xulrunner/releases/5.0/sdk/

2. AppleのSafari FAQ 11にサンプルへのリンクが埋め込んである。Developerサイトの検索では引っかからないので注意。

http://developer.apple.com/jp/internet/safari/faq.html
http://developer.apple.com/internet/safari/samples/SamplePlugInProject.dmg

3. SDKをビルドする、必要はないかも知れないが、やったことはないので良くわからない。

https://developer.mozilla.org/ja/Gecko_SDK" target="_blank">https://developer.mozilla.org/ja/Gecko_SDK

4. あとはCarbon in Cocoaの要領でCocoaを初期化し、WebkitプラグインのObjective-Cのコードを移植すれば・・・多分動く。

//

動作テストの結果。 [開発系とか]

・・・本業が忙し過ぎて時間が取れない。あぅ。

//

最終的に、拙作の互換性は予想より高かった。

今分かっているので、動かないのはiEPGWebPlugin 0.8.1ぐらい。・・・一応WebKit Plug-inなんだが、全く認識されていない。Safari 5.1でまたまた仕様変更?

//

QuickTime Component系、CoreVF Framework、ReserveDV/recdv、QTP7Controller、movencoderなど、試した限り普通に動いている感じ。

SimplePlayerはLion対応版にしたものの、古い版でも普通に動いていたので、そこもそれほど問題なかった。

//

まあ、ReserveDV/recdvは、SequenceGrabberとかNSCalendarDateとか使っているし、しかも基本DV-NTSCなソフトなので、もう動かなくなっても仕方ないと思っている。MacOS X 10.3から開発開始したソフトだし(初めてのCocoaアプリだし)、あちこち作りが古いんだよね。

日本のアナログ放送も明日で終わり。もう使ってる人ほとんどいないと思う。直すのも疲れるので、動かなくなったらさすがにdiscontinuedかなぁ。

出る?出ない? [開発系とか]

今日は出ないのかな・・・

SimplePlayerのLion対応版(フルスクリーンサポート)は一応出来てるので、正式版が出たら動作テストしてからリリースします。

続きを読む


悪夢。 [開発系とか]

CAOpenGLLayerの話。
・・・なにかご存知のかたがいらっしゃったらお知らせください。

続きを読む


CAOpenGLLayerとFlicker。 [開発系とか]

一応、生きてます。暑いの嫌い。

//

もうずーっと、CAOpenGLLayer+CIImageと格闘している。

挫折しそう。

続きを読む


SDLとffplay。 [開発系とか]

ふとやる気になったので、ffplayを動かす努力をしてみた。
丸一日を費やしたのち、やっと動いた。

・・・音は出るが、こりゃ酷い代物だな。

//

素のままでは動かないので、ffplayのコードをばらして、SDL.frameworkを使えるように書き換える作業に入ったのだけれど。・・・これが大変。

一応、動くものは出来た。動くというだけだが。

続きを読む


よっしゃ。 [開発系とか]

Jobsやせたね・・・。

こりゃ今年中には引退かなぁ、と思います。おつかれさま。

//

さて、7月に出ることが約束されたので、Lion向けの開発を進めて行きます。
・・・WWDC2011を受けて、割とおおっぴらに書ける状況になったし。

とは言ったものの、拙作QuickTime Component群は、DP3では普通に動いていたので、多分大丈夫かと。・・・DP4は手に入れたら環境つくって試す。

なので、とりあえずSimplePlayerのLion対応とかになりますかね。

フルスクリーンアプリの挙動はまだ良くわからん。DP4で手が入っているかどうか確認してからだな。

続きを読む


年輪。 [開発系とか]

自分も、もうすぐ満6年。

 ・@MP4_maniac 6月1日 webから
つか、一体、俺は何年続けてきたんだ?
アーカイブフォルダですか?

・・・うーんと、260項目、514MBありました(笑

なんか捨てられないんだよね。うん。

続きを読む


見えないフラグ。 [開発系とか]

もうすぐWWDCですが、日曜プログラマには縁がありません(笑)。

//

一応Mac Developer登録しているので、MacOS Xのデバッグにはきちんと協力しているつもりなのですが、放置されたままになるバグレポートはホントなんとかしてほしいです。

続きを読む


ローカライズ。 [開発系とか]

ローカライズめんどい。

こちらの記事を参考に、MainMenu.stringsのローカライズをawkでガリガリ書いてみた。

 ・masakihの日記:makeとgnu sedでローカライズ

Snow Leopardのawk、普通にUTF-8が通るね。
単純な置き換え(非正規表現)が使えればもっと簡単なんだけど。

awkだと、sedと違って2番目だけ置き換えるとか使えないのがネックだな。

続きを読む


-registerDefaults:。 [開発系とか]

Cocoa アプリケーションのNSUserDefaultsは便利なのだけれど、初期値をセットアップするregisterDefaults:の記述位置を間違えると、どはまりする。

しかし、こういうのはハマってみないと分からない。

続きを読む


ML。 [開発系とか]

メンバーオンリーか・・・

//

Your mail to 'libav-devel' with the subject

   [PATCH] Add missing CONFIG_AVFILTER check.

Is being held until the list moderator can review it for approval.

The reason it is being held:

   Post by non-member to a members-only list

方針決定。(追記) [開発系とか]

追記:結局、qpminはデフォルト値を4にして、クリッピングはかけないことにしました。

//

結局、qpminを3に制限する変更を組み込むことが必要と判断しました。

//

Apple H.264 Software Decoderの問題であることは確実です。(GPUデコードではない)

手元(MacBookPro Mid 2010)での、Snow Leopard環境では、Perianが動くケースなら大丈夫ですが、そうでない場合、QuickTime X(VideoToolbox)でもQuickTime 7(QuickTimeH.264.scalar)でも再現します。

一方、○ンデ○イオン上でテストの環境では、テストした限り、Software Decodeerでの問題は修正されています。これは、QuickTime X(VideoToolbox)、QuickTime 7.6.6.app(QuickTimeH.264.scalar)を使った場合とも同じです。この問題に対しては、Perianが不要、ということです。

//

x264バイナリとの重要な違いの一つに、拙作x264Encoderには「qp固定エンコードのサポートがない」という点があります(abrエンコードかcrfエンコードのみ)。従って、qp固定で発生するケースは除外できます。となると、crfとabrの場合のみを考慮すればよいことになります。(losslessエンコードを除く)

abrはもちろん、qpminを3以下を除外すればよいわけですね。

テストでlibavcodec/libx264.cにクリッピングパッチを当てたところ
 x4->params.rc.i_qp_min = FFMAX(avctx->qmin, 3);
crfであっても、qpminの値を 3以上に 「追記:(3でも再現するケースがあるので)4以上に」制限するだけで、問題が除外出来ることを確認しました。

続きを読む


前の30件 | - 開発系とか ブログトップ
メッセージを送る

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。