08/12/07 03:34:50 UeXDm2VJ
>>507
code=-5 は ARIB_STD_B25_ERROR_NO_PMT_IN_HEAD_32M ですね。(arib_std_b25_error_code.h参照)
放送局が送ってきたTSをb25がうまく解釈できなかった場合に起こるエラーです。ハード的な問題ではないはずです。
で、このエラーが起こる場合(-4,-5,-6が該当)、b25はまだ復号の準備ができていない為に、
それまでに入力したデータは全てb25の内部にバッファされていて1バイトも出力されてない状態です。
recfriioに実装したエラー回避は、今までb25に入力したデータは既に復号されて出力されていることを前提としている為、
b25内部にデータが溜まっている今回のような場合にまずいことになります。
一応、被害に遭う可能性があるデータは_IN_HEAD_32Mが表わす通り先頭32MB分です。
回避するにはb25内のデータを吐き出させるか、先頭32MB分をrecfriio側でバックアップするかなのですが、なかなか面倒です。
さらに回避させた場合、出力されたデータをb25しなおすと同じエラーで落ちるという問題もあります。