「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パケットの処理フローをどうすればいいかわからない、門外漢の素人ができるのはこのくらいまで
番組名:ドラマアンコール「水戸黄門 第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呼び出し
+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