-
Notifications
You must be signed in to change notification settings - Fork 0
/
Readme-B25Decoder.txt
159 lines (110 loc) · 7.15 KB
/
Readme-B25Decoder.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
- B25Decoder Ver.2.20 -
1.概要
・Multi2Decのエンジンを使用した汎用のスクランブル解除用ライブラリです。
MPEG2システムの試験又は研究用ツール開発の目的に限りフリーウェアとして提供しております。
B25Decoder.dll ライブラリ本体
B25Decoder.lib インポートライブラリ
IB25Decoder.h インタフェースヘッダ
2.動作環境
・Windowsから利用可能なスマートカードリーダ及び正規にライセンスされたB-CASカード。
・WindowsXP SP3 以上
※本ソフトウェアの動作には「Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ」が必要です。
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=200b2fd9-ae1a-4a14-984d-389c36f85647
3.注意事項
・Multi2Decのドキュメントに記載の注意事項に準じます。
4.構成について
・Multi2Decと異なり動作に必要なBonフレームワーク及びBonモジュールを全て内蔵しているため単独で使用可能です。
5.使用方法
・アプリケーション側は下記要件を満たす必要があります。
- C++のクラスを扱えること。
- RTTIを使用可能なこと。
・作成するアプリケーションにB25Decoder.libをリンクするか、直接CreateB25Decoder()のエントリーポイントを取得し、
CreateB25Decoder()を呼び出してインスタンスを生成してください。
IB25Decoder *pB25Decoder = ::CreateB25Decoder();
以降Release()を呼び出してインスタンスを開放するまでこのインタフェースを利用してメソッドに
アクセスします。
基本的なメソッド呼び出しのシーケンスは下記になります。
Initialize(); // B-CASカードをオープンし、デコーダを初期化する(引数は無視されます)
Decode(); // 復号前データを入力し、復号されたデータのサイズとバッファへのポインタを取得する
// データが出力されないこともあることに注意してください。(出力サイズ0もあり得る)
// pSrcBuf 入力データへの有効なポインタ(TSパケット含むバイナリストリーム)
// dwSrcSize 入力データのサイズ(バイト単位)
// ppDstBuf 出力データを受け取るポインタへのポインタ
// pdwDstSize 出力データのサイズ(バイト単位)を受け取る変数へのポインタ
Release(); // 本ライブラリのインスタンスを開放する。(これ以降ポインタは無効)
※Flush()は作用なし、Reset()はInitialize()と同じ作用です。
・Ver.2.00からはMulti2Decと同等の機能へアクセスするためにIB25Decoder2インタフェースを搭載しています。
IB25Decoder2インタフェースはRTTIの機能を使用してIB25Decoderインタフェースから取得します。
IB25Decoder2 *pB25Decoder2 = dynamic_cast<IB25Decoder2 *>(pB25Decoder);
IB25Decoder2を搭載していないバージョンに使用した場合はNULLを返すはずです。
(もしエラーが発生するようならstd::__non_rtti_object例外をハンドリングして処理してください。)
// IBonDriver2インタフェース取得
try{
pB25Decoder2 = dynamic_cast<IB25Decoder2 *>(pB25Decoder);
}
catch(std::__non_rtti_object){
pB25Decoder2 = NULL; // IB25Decoder2インタフェース利用不可
}
以前のバージョンとの互換性を無視して最初からIB25Decoder2としてインスタンスを生成する場合
IB25Decoder2 *pB25Decoder2 = ::CreateB25Decoder2();
・IB25Decoder2インタフェースのメソッドの使用方法はソースコードのB25Decoder.cppのコメントを参考にしてください。
・C++以外の言語からも利用できるようにMobileHackerzさんのcap_hdus付属の25Decoder_d.dllのソースを参考に
グローバルメソッドを追加しています。(互換性があります)
6.ライセンスについて
・本パッケージに含まれる全てのソースコード、バイナリについて著作権は一切主張しません。
・B25Decoder.dllをオリジナルのまま配布する場合に限り各自のアプリケーションに添付することができます。
このときソースコードの開示は不要です。(このとき本ソフトウェアの著作権表示を行うかどうかは任意です。)
・本ライブラリは従来バージョンとの互換性を維持するためBonフレームワークを単一のバイナリに内蔵しています。
これはBonフレームワークの設計思想と大きく異なり特例的な処置であるため、本パッケージに含まれるソース
コードを改変することで作成したライブラリ(B25Decoder.dllと同等の機能を持つ)を配布することは禁止します。
・ただし、ソースコード中に含まれる個々のBonクラスを改変または流用し、アプリケーションに組み込むことは
可能です。(Bonフレームワークを利用しない形で再利用する場合)
・Bonフレームワークを利用し、Bonモジュールに適合するライブラリを作成した場合その著作権は作者にあります。
(フレームワークのライセンスはモジュールには及びません)
・本ライブラリはLGPLに従うことを要求しますので改変物を組み込む場合はソースコードの開示が必須となります。
・ビルドに必要な環境
- Microsoft Visual Studio 2005 以上
- Microsoft Windows SDK v6.0 以上
7.参考文献
・ARIB STD-B10
・ARIB STD-B24
・ARIB STD-B25
・ARIB STD-B32
・ISO/IEC 11172-3
・ISO/IEC 13818-1
・ISO/IEC 13818-2
・ISO/IEC 13818-7
・まるも製作所「ARIB STD-B25 仕様確認テストプログラム」
・Meru氏「CapUSB M-Edition」
・MobileHackerz氏「cap_hdus」 http://mobilehackerz.jp/contents/Software/cap_hdus
・作者不明「Mpeg2-TSのストリームからデータ放送情報を抽出するテスト」
・Microsoft DirectX 9.0「PSI パーサー フィルタ サンプル」他
8.サポート、連絡先
連絡先 : 拡張ツール中の人 nakanohito@2sen.dip.jp
公式サイト: http://2sen.dip.jp/friio/
9.更新履歴
Ver.2.20 ・MULTI2の復号を若干高速化。
・リアルタイム用途に使用される可能性があるためバッファリングは無効です。
Ver.2.14 ・EMMが処理できない不具合修正。
Ver.2.13 ・異なるネットワークのストリームを連続して入力した場合に例外が発生する不具合を修正。
Ver.2.12 ・PID 0x0000のパケットが1つ余分にカウントされる不具合修正。(逆に別のPIDは1つ少ない)
Ver.2.11 ・初期化とデコードメソッドに排他制御を追加した。
Ver.2.10 ・C++以外の言語からも使用できるようにグローバルメソッド追加。
Ver.2.00 ・Bonフレームワークを利用したプログラムとして新規に作り直した。
・EMM処理に対応した。(安全のため7日以上前のTSファイルには適用されません)
・188バイト以外のTSファイルにも対応した。(出力は必ず188バイトになります)
・IBonDriver2インタフェースを追加した。
Ver.1.21 ・PMTのDescriptors Fieldに複数のDescriptorが含まれている場合に復号できなかった不具合修正。
→Descriptors Fieldを抽象化したクラスを追加しこれに伴うインタフェースの変更も行った。
・CTsPacketParserのデフォルトでNULLパケットを出力しないようにした。(出力設定も可能)
Ver.1.20 ・BonTsEngine更新
- CMediaDecoder派生クラス間で転送されるCMediaDataを動的に生成しないようにした。
→メモリ確保/開放のオーバーヘッドが無くなったためパフォーマンスが向上。
- スクランブル解除できなかったパケットも出力するようにした。(Meru氏の指摘反映)
- ECM処理に失敗した場合は1度だけB-CASカードの初期化を試行するようにした。(Meru氏の指摘反映)
- その他バグフィックス、調整多数
Ver.1.10 ・途中でネットワーク変更を含むストリームが入力された場合に正常に復号できなくなることがあった
不具合を修正。(BonTsEngine更新)
・その他微調整。
・ライセンスを一部変更。(B25Decoder.dllを添付する場合はソースコードの開示を不要にした)
Ver.1.03 ・初回リリース