Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

多重フレーム(TSMF)の処理への対応 #90

Merged
merged 10 commits into from
May 23, 2021

Conversation

akkkix
Copy link
Contributor

@akkkix akkkix commented Mar 31, 2021

お世話になっております。今回、多重フレームの処理をMirakurunに追加しましたのでプルリクとして上げさせていただきます。

目的

CATVでISDB-C方式で再送信されているBSの一部チャンネルのストリームを入力したときに、正しいTSが出力できるように多重フレームから目的のTSのみを取り出す処理の追加
(「BSの一部チャンネル」が、具体的にどのチャンネルが該当するかはCATV局によって異なるようです。私の環境ではBS朝日が該当しました。)

処理を行わないことによって起こる問題(確認できているもの)

  • 複数のTSが一つのストリームに流れている事により、TSパケットのcontinuity counterが飛び飛びになり録画後にツールを使用したDROP判定が正しく行えない。
  • TVTestにBondriver_mirakurunを使用してTSを入力した際に、画面が点滅または全く視聴できない。Dカウンタ、Sカウンタが上がり続ける。
    (VLCでは視聴可能であるようですが、複数のTSで映像が流れている場合は不明です)

検証した環境

$ uname -a
Linux ***** 5.4.0-70-generic #78-Ubuntu SMP Fri Mar 19 13:29:52 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
$ node -v
v10.19.0

追加した処理の概要

多重フレームヘッダ(PIDが0x002Fであるパケット)の相対ストリーム番号/スロット対応情報を取得し、channnels.ymlで指定した相対ストリーム番号に該当するスロットに入っているパケットのみを取り出す処理。
スロット配置法の区別(relative_stream_number_mode)は0(静的割当)であること前提、多重フレーム形式(frame_type)は0x1(15相対ストリーム,52スロット)であること前提で実装しています。この2つの項目は特に検証する処理を入れていません。

実装の際に参考にしたもの

追加コードについて

  • api.d.ts , api.yml , Channel.ts , DhannelItem.ts ,config.ts
    https://github.com/Chinachu/Mirakurun/pull/15/files を参考に追加しました
  • TSFilter.ts
    nullパケットを落とす前にtsmfの分離処理を追加しました
  • Tuner.ts
    TSFilterにtsmfの相対ストリーム番号を渡す行を追加しました。
  • ChannelsConfigurator.tsx
    webUIに表示されるように周辺のコード辺を参考に追加しました

編集したファイルが多くなってしまいましたが、もしよろしければご確認のほど宜しくお願い致します。

@kanreisa
Copy link
Member

コードは特に問題なさそうに見えました
検証できた CATV 局を差し支えなければ教えていただけますでしょうか?

@kanreisa kanreisa merged commit 1d40a1b into Chinachu:master May 23, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants