xtne6f / EDCB

BonDriver based multifunctional EPG software
Other
165 stars 37 forks source link

[要望] EPG処理時にはB25処理を無効に #24

Open tkmsst opened 6 years ago

tkmsst commented 6 years ago

EDCBのメンテナンスありがとうございます。

EDCBでは、EPGの処理を行う際に、受信したTSからEPG部分を分離した後、 B25Decoder.dllにデータを渡しているかと思います。 しかし、EPGはB25デコードが必要ないはずなので、この処理をスキップして いただけないでしょうか。

現在、B25Decoder.dll互換のlibaribb25.dllのメンテナンスを行っておりまして、 put_arib_std_b25に不完全なTSデータを入力するとデータが滞ってしまうため、 迂回処理をいれているのですが副作用が生じるため思案しております。

ご考慮いただけましたら幸いです。

xtne6f commented 6 years ago

// その部分、自分はノータッチなのでアレですが… そのDLL、名前こそそれですが実際に内部でやることは(現実にも)限定されないように思います。なのでEPG取得時だけ特別扱いすると活用方法によっては問題が出るかもしれません。 また、そこはEDCB原作から仕様が動いていないはずなので、改変版のみ動作を変えると10.69以前を使い続ける人が恩恵を受けられません。可能ならそのままにしたいです。

tkmsst commented 5 years ago

ご検討ありがとうございます。 EDCBでのEPG取得時は、B25Decoder.dllに完全なPATが渡されないわけですが、 このときB25Decoder.dll側では完全なPATが来るまで待つべきか、それとも不完全なPATで 処理を行うべきかという問題が生じてしまいます。

オリジナルのarib_std_b25(libarib25)では、完全なPATを取得するまで処理を行わず、 データを溜め込んでしまうため、EPGの取得が完了しない問題がありました。 そこで、libaribb25.dllでは不完全なPATは手付かずでそのままアプリケーション(EDCB)に 渡すようにして問題を回避したのですが、これはこれで、何らかの要因でPATが分割されて しまうとデコードに失敗してしまうという別の問題がありまして。。。

xtne6f commented 5 years ago

オリジナルに手を加えてよいのであれば、「完全なPATを得るまで全入力データを溜め込む」か「個々入力された(こま切れの)データの中でPATを探す」か、の2択ではないように思うのですが、どうでしょうか。(的外れならすいません…) 必要なのがPAT(や、その他のPSI/SI)だけなのであれば、それだけバッファにコピーして、その時点で処理できない入力はそのままアプリケーションに渡せないでしょうか。