Navigation Log - なびろぐ -
2008/06版 その1

...X680x0 spirit inside...

Last update: Saturday, 04-Jun-2011 17:29:01 JST
Access Count: (start 1997/07/04)
この日記はGNSで生成しています。
この日記の画像はOPTPiX webDesigner Ver.4で生成しています。

hauN
Go amazon.co.jp

■ご注文リストから■ [一覧]
■Amazonギフト券■ [購入]
GeChic モバイルモニタ On-Lap 1101F レトロ調カラー 11インチ フルHD解像度 IPS液晶 24Hz入力対応 []
GeChic モバイ...
Amazonほしい物リスト


2008/06/01 (日) 晴時々曇

あさ〜 (生活)

_ 0430充電開始、0930再起動。


レP作業 (イベント)

_ レP倉庫でラック作成&整理大会。今回でようやく半分くらいラックに収まったか。


2008/06/02 (月) 曇後雨

あさ〜 (生活)

_ 0430充電開始、1130再起動。


aviutlバグレポート (PC, MOVIE)

_ わりと前から「aviutlの24fps化インターレース解除に外部プラグインを使うと動作がおかしい」現象があって気になっていたんだが、自分でダミーのインターレース解除プラグインを書いてみたら理由がはっきりした。

_ 上記は「何もしないで動作ログだけ出力する、ダミーのインターレース解除プラグイン」。ログ出力先は「c:\temp\ditest.log」に固定なので、自分で試したいときは注意。

_ で、適当な映像ファイルを読み込ませてから[フレームレートの変更]に[24fps←30fps]、[24fps←30fpsの間引きには自動24fpsの処理を使う]をOFFにして、[インターレースの解除]に[ditest]を選んでおく。これでインターレース解除・間引きともditestプラグインが呼び出されることになる。

_ そして、まずは標準のAVI出力機能を実行してみると、こんなログが出てくる。「func_is_saveframe()」が間引きするかどうかを判定するAPI、func_proc()が間引きを反映したうえで各フレームの画像を再構成して返すAPI。このダミープラグインは「全フレームを間引かず、フレーム画像は何も加工しないでそのまま返す」ので、素直に1フレーム判定しては1フレーム画像を返すということになっている。


========
func_save_start(): s=0, e=124
func_is_saveframe(): saveno=0, frame=0, fps=24, edit_flag=0, inter=0
func_proc(): frame=0
func_is_saveframe(): saveno=1, frame=1, fps=24, edit_flag=0, inter=0
func_proc(): frame=1
func_is_saveframe(): saveno=2, frame=2, fps=24, edit_flag=0, inter=0
func_proc(): frame=2
func_is_saveframe(): saveno=3, frame=3, fps=24, edit_flag=0, inter=0
func_proc(): frame=3
func_is_saveframe(): saveno=4, frame=4, fps=24, edit_flag=0, inter=0
func_proc(): frame=4
func_is_saveframe(): saveno=5, frame=5, fps=24, edit_flag=0, inter=0
func_proc(): frame=5
func_is_saveframe(): saveno=6, frame=6, fps=24, edit_flag=0, inter=0
func_proc(): frame=6
func_is_saveframe(): saveno=7, frame=7, fps=24, edit_flag=0, inter=0
func_proc(): frame=7
func_is_saveframe(): saveno=8, frame=8, fps=24, edit_flag=0, inter=0
func_proc(): frame=8
func_is_saveframe(): saveno=9, frame=9, fps=24, edit_flag=0, inter=0
func_proc(): frame=9
func_is_saveframe(): saveno=10, frame=10, fps=24, edit_flag=0, inter=0
func_proc(): frame=10
func_is_saveframe(): saveno=11, frame=11, fps=24, edit_flag=0, inter=0
func_proc(): frame=11
func_is_saveframe(): saveno=12, frame=12, fps=24, edit_flag=0, inter=0
func_proc(): frame=12
func_is_saveframe(): saveno=13, frame=13, fps=24, edit_flag=0, inter=0
func_proc(): frame=13
func_is_saveframe(): saveno=14, frame=14, fps=24, edit_flag=0, inter=0
func_proc(): frame=14
func_is_saveframe(): saveno=15, frame=15, fps=24, edit_flag=0, inter=0
func_proc(): frame=15
func_is_saveframe(): saveno=16, frame=16, fps=24, edit_flag=0, inter=0

_ さて、今度はプラグインで出力してみると、こんなログが出てくる。注目点は2つ。ひとつは「func_is_saveframe()」が変な順序で呼び出されていること、もうひとつはフレーム番号(frame)に4,9,14……の抜けがあること。


========
func_save_start(): s=0, e=124
func_is_saveframe(): saveno=0, frame=0, fps=24, edit_flag=0, inter=0
func_proc(): frame=0
func_is_saveframe(): saveno=0, frame=0, fps=24, edit_flag=0, inter=0
func_is_saveframe(): saveno=1, frame=1, fps=24, edit_flag=0, inter=0
func_proc(): frame=1
func_is_saveframe(): saveno=0, frame=0, fps=24, edit_flag=0, inter=0
func_is_saveframe(): saveno=1, frame=1, fps=24, edit_flag=0, inter=0
func_is_saveframe(): saveno=2, frame=2, fps=24, edit_flag=0, inter=0
func_proc(): frame=2
func_is_saveframe(): saveno=0, frame=0, fps=24, edit_flag=0, inter=0
func_is_saveframe(): saveno=1, frame=1, fps=24, edit_flag=0, inter=0
func_is_saveframe(): saveno=2, frame=2, fps=24, edit_flag=0, inter=0
func_is_saveframe(): saveno=3, frame=3, fps=24, edit_flag=0, inter=0
func_proc(): frame=3
func_is_saveframe(): saveno=5, frame=5, fps=24, edit_flag=0, inter=0
func_proc(): frame=5
func_is_saveframe(): saveno=5, frame=5, fps=24, edit_flag=0, inter=0
func_is_saveframe(): saveno=6, frame=6, fps=24, edit_flag=0, inter=0
func_proc(): frame=6
func_is_saveframe(): saveno=5, frame=5, fps=24, edit_flag=0, inter=0
func_is_saveframe(): saveno=6, frame=6, fps=24, edit_flag=0, inter=0
func_is_saveframe(): saveno=7, frame=7, fps=24, edit_flag=0, inter=0
func_proc(): frame=7
func_is_saveframe(): saveno=5, frame=5, fps=24, edit_flag=0, inter=0
func_is_saveframe(): saveno=6, frame=6, fps=24, edit_flag=0, inter=0
func_is_saveframe(): saveno=7, frame=7, fps=24, edit_flag=0, inter=0
func_is_saveframe(): saveno=8, frame=8, fps=24, edit_flag=0, inter=0
func_proc(): frame=8
func_is_saveframe(): saveno=10, frame=10, fps=24, edit_flag=0, inter=0
func_proc(): frame=10
func_is_saveframe(): saveno=10, frame=10, fps=24, edit_flag=0, inter=0
func_is_saveframe(): saveno=11, frame=11, fps=24, edit_flag=0, inter=0
func_proc(): frame=11
func_is_saveframe(): saveno=10, frame=10, fps=24, edit_flag=0, inter=0
func_is_saveframe(): saveno=11, frame=11, fps=24, edit_flag=0, inter=0
func_is_saveframe(): saveno=12, frame=12, fps=24, edit_flag=0, inter=0
func_proc(): frame=12
func_is_saveframe(): saveno=10, frame=10, fps=24, edit_flag=0, inter=0
func_is_saveframe(): saveno=11, frame=11, fps=24, edit_flag=0, inter=0
func_is_saveframe(): saveno=12, frame=12, fps=24, edit_flag=0, inter=0
func_is_saveframe(): saveno=13, frame=13, fps=24, edit_flag=0, inter=0
func_proc(): frame=13
func_is_saveframe(): saveno=15, frame=15, fps=24, edit_flag=0, inter=0
func_proc(): frame=15
func_is_saveframe(): saveno=15, frame=15, fps=24, edit_flag=0, inter=0
func_is_saveframe(): saveno=16, frame=16, fps=24, edit_flag=0, inter=0

_ このシーケンスには規則性がある。まずfunc_is_saveframe()が1回呼び出されてfunc_proc()、次は2回・3回・4回呼び出されたあとにfunc_proc()が呼ばれるようになった後、次のフレームがスキップされている。この動作に思い当たることといえば・・・これは「間引きのためにaviutlが行っているであろう演算処理」ではないかと。

_ つまりこういうことだ。間引きを外部プラグインに任せたつもりが実はaviutl内部で処理してしまっており、しかもその内部処理から更に間引きプラグインを呼び出してしまった上で、結局間引きは内部処理の値で行われてしまっていると。こりゃさっぱり正しくないわけである。

_ さらに調べたところ、プラグイン出力だけでなくVFAPIでフレーム出力しているときもこの誤動作が出ていることがわかった。つまり期待通りの動作をしているのは標準AVI出力のときだけで、他の出力動作のときは間違った間引きが行われていることになる。

_ ちうことで、aviutl作者にとりあえず報告メールを出しておいた。反応があるといいのだが。

_ 追記。2-3プルダウン映像*1を読ませて、「自動フィールドシフトVF」でコーミング解除*2、「ditestで24fps化」を指定してプラグイン出力やVFAPI出力をさせると、不思議なことに正しい逆プルダウンが行われてしまう。前述の通り、ditestは「間引きをしない」間引きプラグインなので、他の誰かが間引きをしてしまっているということになる。これは「間引きを外部プラグインに任せたつもりが実はaviutl内部で処理してしまっている」ことの証明となる。

*1: サンプルとしてpulldown.aviを用意してみた。読み込みにはHuffyuv 2.1.1が必要。ついでに2-3プルダウン加工する前のcount.aviも置いておく。各フレームが正しく処理されているかどうかの確認なんかに便利。

*2: afs.aufではなくafsvf.aufのほうなので、間引きは行われない。


2008/06/03 (火) 雨後曇

あさ〜 (生活)

_ 0430充電開始、1130再起動。


aviutlバグレポート続き (PC, MOVIE)

_ お返事来る。とても丁寧、しかもMDXerでした。


2008/06/04 (水)

あさ〜 (生活)

_ 0430充電開始、1130再起動。


今日のブックマーク (ブックマーク)


2008/06/05 (木)

あさ〜 (生活)

_ 0430充電開始、1130再起動。


今日のお買い物 (買い物)


2008/06/06 (金)

あさ〜 (生活)

_ 0430充電開始、1130再起動。


今日のブックマーク (ブックマーク)


2008/06/07 (土)

あさ〜 (生活)

_ 0430充電開始、1130再起動。


よる〜 (生活)

_ えすさんとパトラッシュ。えらい混んでて注文したものの来るタイミングがよろしくない感じ。

_ 佐世保バーガーでしめたあと、口福堂でおはぎ買って解散。


2008/06/08 (日)

あさ〜 (生活)

_ 0530充電開始、1130再起動。


ひるよる〜 (生活)

_ 録画の消化とかをしつつ裏でコード書き。


2008/06/09 (月)

あさ〜 (生活)

_ 0530充電開始、1130再起動。


今日のブックマーク (ブックマーク)


2008/06/10 (火) 晴時々曇

あさ〜 (生活)

_ 0530充電開始、1130再起動。


今日のお買い物 (買い物)




hauN Last update: Saturday, 04-Jun-2011 17:29:01 JST
Access Count: 823423 (start 1997/07/04)

メールはこちらへ...[後藤浩昭 / Hiroaki GOTO / GORRY / gorry@hauN.org]

「表紙へ戻る」
「会議室」 「最新版」 「なびろぐindex」 「GNSソースを読む」