GithubHelp home page GithubHelp logo

Comments (4)

masnagam avatar masnagam commented on April 28, 2024 1

15分間隔で EPGが更新される事は知りませんでした。

MirakurunでのEPG更新が15分間隔という意味でした(設定で変わりますが).放送局側での更新間隔については私も知りません.
https://github.com/Chinachu/Mirakurun/blob/master/src/Mirakurun/Channel.ts#L39

実装の意図は理解しましたので,特にこれ以上修正することはないと思います.クローズします.

from mirakurun.

kanreisa avatar kanreisa commented on April 28, 2024

期待する動作は古いバージョンを無視することです。
バージョン番号が1つ加算した時と、0になったときは reset fields します。
これにより、いつまで経っても epgReady が発火しない問題が解決します。

しばらく動かしてみましたがそのようになっているようです。
いかがでしょうか。

from mirakurun.

masnagam avatar masnagam commented on April 28, 2024

例えば以下のような状況が発生した場合,タイムアウトまでEITセクションを処理し続けてしまう可能性があります.

Section(00): version(13)  // ここでtargetFlag.version_numberが13になる
Section(08): version(13)
Section(10): version(11)  // verDiffが-2になり,reset fields
Section(18): version(11)

仕様上,バージョン番号は番組表が更新されるたびに1つづつ増えると思われます.EPG更新は15分間隔なので,その間に複数回更新される可能性が考えられます.この場合,バージョン番号間の差は1より大きくなります.

あり得る場合をすべて考慮すると,verDiffは-15から15の間のあらゆる値を取る可能性があります.そのため,sub-tableを正しく処理しないような実装においては,バージョン番号を確認する意味がなくなります.

仕様上,EITセクションのバージョン番号はsub-tableの識別子の1つです.そのため,sub-table間のバージョン番号を比較することに意味はありません.なぜなら,バージョン番号はNID/TSID/SIDが同じsub-tableを区別するための識別子にすぎないからです(つまり,NID/TSID/SIDが同じsub-tableは16個までしか作れないという意味).

上記の帰結は,あくまでも私が仕様を読んで理解した内容に基づいています.私の理解が間違っている可能性は十分あります(専門家ではありませんので).その場合には,誰か私の間違いを指摘してくれるこを希望します.

sub-tableの定義については,以下を参照してください.

from mirakurun.

kanreisa avatar kanreisa commented on April 28, 2024

仰っていることは理解しています。
epg.ts で厳密な処理をしていない以上は epgReady を発火するのも目安程度なものです。今回のアップデートでは合理的な範囲内で修正されることを狙っています。

EPG更新は15分間隔なので,その間に複数回更新される可能性が考えられます.この場合,バージョン番号間の差は1より大きくなります.

15分間隔で EPGが更新される事は知りませんでした。教えていただきありがとうございます。

TSFilter 内で epgReady を発火するためのステートは次回に保持されない認識ですが、もし保持されるようでしたら確かに差は1より大きくなる可能性が高くなってきますね。

しばらく海外に居るためまともに修正できませんので、気になるようでしたら合理的な範囲内で修正いただけますと幸いです。(いずれにしても厳密な対応は不要です。)

from mirakurun.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.