Marumo ISDB Splitter ver. 0.2.22 を公開しました。ダウンロードは [URI] からどうぞ。今回の更新内容は次の通りです。
今回の更新では 2ch DTV 板 TS 関連ソフト総合スレ Part13 の 45 以降[URI] で報告していただいたバグおよび不具合の修正をしました。
ver. 0.2.20 の更新の際に私は次のような内容を書いていたのですが……
これまではシーク時に見つけた I ピクチャに合わせたタイムスタンプをシーク成功位置としてアプリケーションに返して、シーク後の再生ではサンプルのタイムスタンプが 0 以上となるようにしていたのですが、今回からシークは必ず成功したこととして、指定時間よりも前のサンプルに関しては負のタイムスタンプを付けて下流フィルタに渡すように変更しました。
実はサンプルに付けていたタイムスタンプがきちんと補正されておらず、ver. 0.2.19 までと同じシーク後の再生開始位置を 0 原点とするタイムスタンプで下流側フィルタに流していました。そりゃシーク後の再生位置がずれますよね。これが一つ目のバグ修正の方です。
もうひとつの問題修正の方ですが……はい、蟲師に負けました。蟲師ってホント良く縮むのですよね。CM 部分とかと比べるとビットレート半分以下ですから……。
これまではファイルを開いた際に取得した区間毎の PCR からシーク位置を固定算出していたのですが、今回の変更からシークオフセットを仮決定した後、実際にそのオフセットの PCR を確認して目標位置から極端にずれていないか確認して、ずれていた場合は取得した PCR を元にシーク先を再計算するように変更しました。
一応手元ではテストをして対策コードを入れていますが、素材によってはシーク時に無限ループに落ちてフリーズしてしまうものもあるかもしれません。このバージョンも人柱向けということでお願いします。
Marumo ISDB Splitter ver. 0.2.23 を公開しました。ダウンロードは [URI] からどうぞ。今回の更新内容は次の通りです。
今回の更新は ver. 0.2.20 以降でシークと追いかけ再生に発生している問題を修正することを目指したものです。
一応ある程度問題は解消されると確認の上での公開のつもりですが、最近のバグ修正でバグを埋めてしまう状況を振り返るとちょっと自信が無くなっています。
一点だけ、MPC-HC / 付属 LAV Filters 環境で、一時停止状態でシークした場合、映像にシーク前のものが表示されたまま更新されないことがあります。この症状については手元で確認済みです。
ただし、こちらはスプリッター側の問題の可能性が低く、アプリケーション又はデコーダ/レンダラが原因の可能性が濃厚なため、スプリッター側では対処できそうにありません。
余裕ができたら調べるかもしれませんが、一時停止を解除して再生を行えば正しいシーク位置からの再生が行われ、特に深刻な問題という訳でもないので当面は放置する予定でいます。
Marumo ISDB Splitter ver. 0.2.24 を公開しました。ダウンロードは [URI] からどうぞ。今回の更新内容は次の通りです。
やはり昨日のバージョンにはバグが残っていました。これがラストになると良いなと思いながらの修正版です。
PCR 探索処理で収束を早くするために、可能な場合は PCR を一度のファイルアクセスで 2 地点評価するようにしたのですが、その片方で PCR のラップアラウンド対策を入れるのを忘れてしまっていました。結果、本来はシーク目標よりも後ろの箇所を遥かに手前であると解釈して、映像が当分の間更新されなくなるなどの異常挙動を示すことがありました。
今回のバグでは maki (@maki_rxrz) さんから PCR ラップアラウンド系のサンプルを提供していただいたことで原因特定および修正までの時間が短縮されました。とても感謝しています。