「がらくた置き場」の編集履歴(バックアップ)一覧に戻る

がらくた置き場 - (2023/03/20 (月) 15:24:38) の編集履歴(バックアップ)


PowerShell💩は初めて使いました。
英語はわかりません、perlもよくわかりません。
アダプテーションフィールドやポインターの処理もしていません。
プロトタイプ以前のテストコードなのであえてコメントも入れていません。

  • ACPI_Wake_Alarm_Fix

「Intel 300シリーズチップセット以降のスリープ解除遅延問題」にとりあえず対応するためのツールです。
  • タスクスケジューラーに登録されている直近のタスクの起動時刻を調べ、遅延を考慮した起動時刻のタスクを別途登録します
  • タスクの登録はタスクスケジューラーから起動するPowerShellスクリプトで行います
  • タスク名は英語のみ対応します


  • 導入手順
1.スクリプトを格納するフォルダを作成("ACPI_Wake_Alarm_Fix_Set")

"ACPI_Wake_Alarm_Fix_Set.ps1"をこのフォルダにコピー

2.スクリプトの修正

スクリプト内の設定部分を環境に合わせて変更

3.タスクを作成(ACPI_Wake_Alarm_Fix)

[トリガー]タスクの開始=スケジュール1回のみ(日時は適当)[操作]プログラムの開始(プログラム/スクリプト="")[条件]タスクを実行するためにスリープを解除するをチェック

4.タスクをエクスポート(ACPI_Wake_Alarm_Fix)

"ACPI_Wake_Alarm_Fix.xml"を"ACPI_Wake_Alarm_Fix_Set.ps1"と同じ場所にエクスポート

5.タスクを作成(ACPI_Wake_Alarm_Fix_Set)

[全般]最上位の特権で実行する[トリガー]タスクの開始=イベント時、ログ=システム、ソース=Kernel-Power、イベントID=187(スリープ要求時)[トリガー]タスクの開始=イベント時、ログ=システム、ソース=Power-Troubleshooter、イベントID=1(スリープ復帰時)[操作]プログラムの開始、プログラム/スクリプト=powershell、引数の追加=ACPI_Wake_Alarm_Fix_Set.ps1

6.TvRockの設定にある「復帰処理をタスクスケジューラで行う」をチェック

7.sleep実行後、スリープの解除がTvRockで登録したスケジュールに対して1分程度の誤差で解除されるはず



TSファイル中のエレメンタリPIDとストリーム形式種別を適当に出力してみるテスト
ついでにTOTも適当に出力してみる
ついでに地デジのEIT(!=0x0012)のイベント識別と継続時間も適当に出力してみる
放送中と思われる地デジ番組のEITも適当に捜してみる
EITの中の番組情報で使われている8単位文字符号をデコードするためのかなり適当な関数
JIS互換漢字やUnicode規格バグの処理追加
8単位文字符号デコード処理の機能設計レベルのフローみたいなものの例
SPD(プログラム構造図法の一種)のC言語風の味付け
Unicode規格バグの処理追加など

  • メモ
  • TSファイルにはSITが含まれていないためTOT,EITなどを元に番組情報を取り出す必要がある。
  • CRC32の計算方式は「CRC-32-IEEE 802.3」らしい。
  • 8単位文字符号というのは結局ISO 2022 (JIS X0202) ベース。
  • ARIB STD-B24の文字符号化を見なければいけなかった。
  • ARIB STD-B05の初期化動作でG3の指示は片仮名集合の間違いではないだろうか?
  • 追加記号の追加漢字はARIB STD-B24の表7-19で変換すればいいようだが追加記号とのからみが悩ましい。
  • 8単位文字符号の処理をARIBの仕様書から直接perlに落とすのは色々な意味で無謀だった。
  • 分割されたペイロードの取り扱いがわからない。
  • Encode-JIS2Kを入れようと思ったがEncodeを入れ直さないといけないらしいとわかりEncodeを入れ直そうと思ったらdmakeのインストールが必要らしい。dmakeを入れてみたらEncode-JIS2Kのperl Makefile.PLでエラーが出る。Makefile.PLで$enc2xsとかに何もいれていないのが原因のようだ。"コピー ~ Makefile.PL"とかいうファイルを作っておいたらハマった。enc2xsとかはフルパスで指定してやらないといけない。これでとりあえずinstallまではできた。
  • 外人さんが漢字は文字数が多いから似た文字で代用しちゃえばいいやん(じゃん)、てなノリで作ったのがUnicode…という古い記憶
  • TSパケットの処理フローをどうすればいいかわからない、門外漢の素人ができるのはこのくらいまで

  • 8単位文字符号例
番組名:ドラマアンコール「水戸黄門 第7部」[再]
        +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F  0123456789ABCDEF
000000  1B 7C C9 E9 DE A2 F3 B3 21 3C EB 21 56 3F 65 38  .|ノ.゙「.ウ!<.!V?e8
        *1    ド ラ マ ア ン コ ー    ル 「    水    戸
000010  4D 32 2B 4C 67 21 21 42 68 1B 7E B7 49 74 21 57  M2+Lg!!Bh.~キIt!W
           黄    門    □    第    *2    7 部    」
000020  1B 24 2A 3B 1B 7D FA EA
        *3          *4    [再]
注:□は空白
*1 ESC 0x7C = G3(片仮名集合→GR呼び出し
*2 ESC 0x7E = G1(英数集合)→GR呼び出し
*3 ESC 0x24 0x2A 0x3B = 2バイトGセット(追加記号)→G2指示制御
*4 ESC 0x7D = G2(追加記号)→GR呼び出し
  • 8単位文字符号例(TSパケット)

        +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
000000  47 60 12 16 TSヘッダ
                    00 ポインターフィールド
                       event_information_section()
                       4E    tabel_id
                       F4 B3 section_length 0x4b3(12bit)=1203byte
                       0C 18 service_id
                       D9
                       01    section_number
                       01    last_section_number
                       7F C3 transport_strem_id
                       7F C3 original_netowork_id
                       01    segment_last_section_number
                       4E    last_table_id
                          4B A3          event_id
                          D8 3D 16 50 00 start_time
                          02 10 00       duration
                          04 98          running_status(3),free_CA_mode(1),descriptors_loop_lenght(12)
                             descriptor()
                             4D          descriptor_tag   0x4D=短形式イベント記述子
                             96          descriptor_lenght(150byte)
                             6A 70 6E    ISO_639_language_code("jpn")
                             0E          event_name_length(14byte)
                                event_name
                                1B 7C A4 C3 DD A6 1B 24 2A 3B 1B 7D FA D9
                             83          text_length(131byte)
                                text_char
                                3F 7B 3F 37 40 2F 38 22
                               *1B 7E(英数)
                                A1
                                4D 39 40 2F 4B 21 30 46
                               *1B 7D(平仮名)
                                E1 B0 EA めぐり
                                36 5B 47 77 32 3D 緊迫化
                               *1B 7E(英数)
                                A1 !
                                1B 7D(平仮名)
                                C9 A6 CA EB (49 26 4A 6B) どうなる
                               *1B 7E(英数)
                                BF ?
                                32 71 34 7C 31 64 44 39 4F 40 22 26 4E 36 47 4F
                               *1B 7D(平仮名)
                                F2 を
                                30 26 愛
                                B9 EB する 
                                3D 77 40 2D AC 34 6B 32 68 女性
                                B7 BF 21 44 36 65 3D 23 4A 2A-3B 3A 45 38 CE 49 71 42 66 4E 22
                                CB に
                                4C 29 43 65 22 26 4A 78 32 75 40 23 41 30 密着
                                CE の
                                35 5F 35 5E 30 65 4E 45 3F 37 救急医療新
                                BF CA たな
                                30 6C 3C 6A 21 21 42 3E 一手 他
                             50    descriptor_tag 
                             0D    descriptor_lenght
                             F1    未定義 コンポーネント内容
                             B3    コンポーネント種別
                             00    コンポーネントタグ
000000  47 20 12 17 TSヘッダ
                             6A 70 6E 言語コード "jpn"
                             31 47 41 7C 1B 7E B1 映像1
  • MPEG-2システム(Wikipedia)
  • 第3回 MPEG-2 TSの概要 前編
  • 第4回 MPEG-2 TSの概要 後編
  • デジタル放送に使用する番組配列情報
  • デジタル放送におけるデータ放送符号化方式と伝送方式(7.文字符号化)
  • 垂直帰線消去期間を使用する伝送方式の標準テレビジョン・データ多重放送(8.3.3初期化動作)
  • デジタル放送における映像符号化、音声符号化及び多重化方式(3.3TS パケット)
  • 第九回 日本語文字コード変換 mojimoji
  • UTF-8文字コード表
  • ITU-T H.222.0(Information technology - Generic coding of moving pictures and associated audio information: Systems)