Windows版においてDLLのビルドを追加
B25Decoder.dll互換
This commit is contained in:
parent
2c1f031642
commit
eceb9c1c37
15
README.txt
15
README.txt
@ -1,12 +1,12 @@
|
||||
【名称】
|
||||
|
||||
ARIB STD-B25 仕様確認テストプログラムソースコード
|
||||
ARIB STD-B25 仕様確認テストプログラム
|
||||
|
||||
【バージョン】
|
||||
|
||||
0.2.5
|
||||
|
||||
【作者】
|
||||
【オリジナル作者】
|
||||
|
||||
茂木 和洋 (MOGI, Kazuhiro)
|
||||
kazhiro@marumo.ne.jp
|
||||
@ -69,6 +69,15 @@
|
||||
上記 2 条件に同意して作成された二次的著作物に対して、茂木 和洋は
|
||||
原著作者に与えられる諸権利を行使しない
|
||||
|
||||
【バイナリの構成】
|
||||
|
||||
・b25.exe
|
||||
ARIB STD-B25 記載の処理を行うためのプログラム
|
||||
|
||||
・libaribb25.dll
|
||||
MULTI2 復号処理を行う DLL
|
||||
B25Decoder.dll と互換性がある
|
||||
|
||||
【プログラムの構成】
|
||||
|
||||
・arib_std_b25.h/c
|
||||
@ -192,6 +201,8 @@
|
||||
|
||||
【更新履歴】
|
||||
|
||||
最新の更新内容については github を参照
|
||||
|
||||
・2012, 2/13 - ver. 0.2.5
|
||||
|
||||
WOWOW でノンスクランブル <-> スクランブル切り替え後に復号が
|
||||
|
@ -1,9 +1,11 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2013
|
||||
VisualStudioVersion = 12.0.30723.0
|
||||
# Visual Studio 14
|
||||
VisualStudioVersion = 14.0.25420.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "arib_std_b25", "arib_std_b25.vcxproj", "{6E77C1AC-A31A-49B9-9A52-9FE1E03B8FEC}"
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "b25", "aribb25\b25.vcxproj", "{6E77C1AC-A31A-49B9-9A52-9FE1E03B8FEC}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libaribb25", "aribb25\libaribb25.vcxproj", "{32FCD075-2C1D-4796-926B-A0009ECCD1E8}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
@ -21,6 +23,14 @@ Global
|
||||
{6E77C1AC-A31A-49B9-9A52-9FE1E03B8FEC}.Release|Win32.Build.0 = Release|Win32
|
||||
{6E77C1AC-A31A-49B9-9A52-9FE1E03B8FEC}.Release|x64.ActiveCfg = Release|x64
|
||||
{6E77C1AC-A31A-49B9-9A52-9FE1E03B8FEC}.Release|x64.Build.0 = Release|x64
|
||||
{32FCD075-2C1D-4796-926B-A0009ECCD1E8}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{32FCD075-2C1D-4796-926B-A0009ECCD1E8}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{32FCD075-2C1D-4796-926B-A0009ECCD1E8}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{32FCD075-2C1D-4796-926B-A0009ECCD1E8}.Debug|x64.Build.0 = Debug|x64
|
||||
{32FCD075-2C1D-4796-926B-A0009ECCD1E8}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{32FCD075-2C1D-4796-926B-A0009ECCD1E8}.Release|Win32.Build.0 = Release|Win32
|
||||
{32FCD075-2C1D-4796-926B-A0009ECCD1E8}.Release|x64.ActiveCfg = Release|x64
|
||||
{32FCD075-2C1D-4796-926B-A0009ECCD1E8}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
65
aribb25/IB25Decoder.h
Normal file
65
aribb25/IB25Decoder.h
Normal file
@ -0,0 +1,65 @@
|
||||
// IB25Decoder.h: IB25Decoder クラスのインターフェイス
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// 定数定義
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define TS_INVALID_PID 0xFFFFU // 無効PID
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// B25デコーダインタフェース
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class IB25Decoder
|
||||
{
|
||||
public:
|
||||
virtual const BOOL Initialize(DWORD dwRound = 4) = 0;
|
||||
virtual void Release(void) = 0;
|
||||
|
||||
virtual const BOOL Decode(BYTE *pSrcBuf, const DWORD dwSrcSize, BYTE **ppDstBuf, DWORD *pdwDstSize) = 0;
|
||||
virtual const BOOL Flush(BYTE **ppDstBuf, DWORD *pdwDstSize) = 0;
|
||||
virtual const BOOL Reset(void) = 0;
|
||||
};
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// B25デコーダインタフェース2
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class IB25Decoder2 : public IB25Decoder
|
||||
{
|
||||
public:
|
||||
enum // GetDescramblerState() リターンコード
|
||||
{
|
||||
DS_NO_ERROR = 0x00000000UL, // エラーなし正常
|
||||
DS_BCAS_ERROR = 0x00000001UL, // B-CASカードエラー
|
||||
DS_NOT_CONTRACTED = 0x00000002UL // 視聴未契約
|
||||
};
|
||||
|
||||
virtual void DiscardNullPacket(const bool bEnable = true) = 0;
|
||||
virtual void DiscardScramblePacket(const bool bEnable = true) = 0;
|
||||
virtual void EnableEmmProcess(const bool bEnable = true) = 0;
|
||||
virtual void SetMulti2Round(const int32_t round = 4) = 0; // オリジナルに追加
|
||||
|
||||
virtual const DWORD GetDescramblingState(const WORD wProgramID) = 0;
|
||||
|
||||
virtual void ResetStatistics(void) = 0;
|
||||
|
||||
virtual const DWORD GetPacketStride(void) = 0;
|
||||
virtual const DWORD GetInputPacketNum(const WORD wPID = TS_INVALID_PID) = 0;
|
||||
virtual const DWORD GetOutputPacketNum(const WORD wPID = TS_INVALID_PID) = 0;
|
||||
virtual const DWORD GetSyncErrNum(void) = 0;
|
||||
virtual const DWORD GetFormatErrNum(void) = 0;
|
||||
virtual const DWORD GetTransportErrNum(void) = 0;
|
||||
virtual const DWORD GetContinuityErrNum(const WORD wPID = TS_INVALID_PID) = 0;
|
||||
virtual const DWORD GetScramblePacketNum(const WORD wPID = TS_INVALID_PID) = 0;
|
||||
virtual const DWORD GetEcmProcessNum(void) = 0;
|
||||
virtual const DWORD GetEmmProcessNum(void) = 0;
|
||||
};
|
@ -990,7 +990,7 @@ static int get_arib_std_b25(void *std_b25, ARIB_STD_B25_BUFFER *buf)
|
||||
}
|
||||
|
||||
buf->data = prv->dbuf.head;
|
||||
buf->size = prv->dbuf.tail - prv->dbuf.head;
|
||||
buf->size = (uint32_t)(prv->dbuf.tail - prv->dbuf.head); // cast
|
||||
|
||||
reset_work_buffer(&(prv->dbuf));
|
||||
|
||||
@ -1069,7 +1069,7 @@ static int withdraw_arib_std_b25(void *std_b25, ARIB_STD_B25_BUFFER *buf)
|
||||
}
|
||||
|
||||
buf->data = prv->sbuf.head;
|
||||
buf->size = prv->sbuf.tail - prv->sbuf.head;
|
||||
buf->size = (uint32_t)(prv->sbuf.tail - prv->sbuf.head); // cast
|
||||
|
||||
reset_work_buffer(&(prv->sbuf));
|
||||
|
||||
@ -1927,7 +1927,7 @@ LAST:
|
||||
static int proc_ecm(DECRYPTOR_ELEM *dec, B_CAS_CARD *bcas, int32_t multi2_round)
|
||||
{
|
||||
int r,n;
|
||||
int32_t len;
|
||||
uint32_t len;
|
||||
|
||||
uint8_t *p;
|
||||
|
||||
@ -1962,7 +1962,7 @@ static int proc_ecm(DECRYPTOR_ELEM *dec, B_CAS_CARD *bcas, int32_t multi2_round)
|
||||
goto LAST;
|
||||
}
|
||||
|
||||
len = (sect.tail - sect.data) - 4;
|
||||
len = (uint32_t)(sect.tail - sect.data) - 4; // cast
|
||||
p = sect.data;
|
||||
|
||||
r = bcas->proc_ecm(bcas, &res, p, len);
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
@ -67,24 +67,26 @@
|
||||
<_ProjectFileVersion>12.0.30501.0</_ProjectFileVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<IntDir>$(Configuration)\</IntDir>
|
||||
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)Intermediate\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<TargetName>b25</TargetName>
|
||||
<TargetName>$(ProjectName)</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<TargetName>b25</TargetName>
|
||||
<TargetName>$(ProjectName)</TargetName>
|
||||
<IntDir>$(SolutionDir)Intermediate\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<IntDir>$(Configuration)\</IntDir>
|
||||
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)Intermediate\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<TargetName>b25</TargetName>
|
||||
<TargetName>$(ProjectName)</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<TargetName>b25</TargetName>
|
||||
<TargetName>$(ProjectName)</TargetName>
|
||||
<IntDir>$(SolutionDir)Intermediate\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
@ -99,7 +101,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>winscard.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)b25.exe</OutputFile>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<GenerateDebugInformation>Debug</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
@ -119,7 +121,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>winscard.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)b25.exe</OutputFile>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<GenerateDebugInformation>Debug</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
</Link>
|
||||
@ -142,7 +144,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>winscard.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)b25.exe</OutputFile>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
@ -170,7 +172,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>winscard.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)b25.exe</OutputFile>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
@ -179,23 +181,23 @@
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="aribb25\arib_std_b25.c" />
|
||||
<ClCompile Include="aribb25\b_cas_card.c" />
|
||||
<ClCompile Include="aribb25\multi2.c" />
|
||||
<ClCompile Include="aribb25\td.c" />
|
||||
<ClCompile Include="aribb25\ts_section_parser.c" />
|
||||
<ClCompile Include="arib_std_b25.c" />
|
||||
<ClCompile Include="b_cas_card.c" />
|
||||
<ClCompile Include="multi2.c" />
|
||||
<ClCompile Include="td.c" />
|
||||
<ClCompile Include="ts_section_parser.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="aribb25\arib_std_b25.h" />
|
||||
<ClInclude Include="aribb25\arib_std_b25_error_code.h" />
|
||||
<ClInclude Include="aribb25\b_cas_card.h" />
|
||||
<ClInclude Include="aribb25\b_cas_card_error_code.h" />
|
||||
<ClInclude Include="aribb25\multi2.h" />
|
||||
<ClInclude Include="aribb25\multi2_error_code.h" />
|
||||
<ClInclude Include="aribb25\portable.h" />
|
||||
<ClInclude Include="aribb25\ts_common_types.h" />
|
||||
<ClInclude Include="aribb25\ts_section_parser.h" />
|
||||
<ClInclude Include="aribb25\ts_section_parser_error_code.h" />
|
||||
<ClInclude Include="arib_std_b25.h" />
|
||||
<ClInclude Include="arib_std_b25_error_code.h" />
|
||||
<ClInclude Include="b_cas_card.h" />
|
||||
<ClInclude Include="b_cas_card_error_code.h" />
|
||||
<ClInclude Include="multi2.h" />
|
||||
<ClInclude Include="multi2_error_code.h" />
|
||||
<ClInclude Include="portable.h" />
|
||||
<ClInclude Include="ts_common_types.h" />
|
||||
<ClInclude Include="ts_section_parser.h" />
|
||||
<ClInclude Include="ts_section_parser_error_code.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
66
aribb25/b25.vcxproj.filters
Normal file
66
aribb25/b25.vcxproj.filters
Normal file
@ -0,0 +1,66 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="ソース ファイル">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="ヘッダー ファイル">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="リソース ファイル">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="multi2.c">
|
||||
<Filter>ソース ファイル</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="td.c">
|
||||
<Filter>ソース ファイル</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ts_section_parser.c">
|
||||
<Filter>ソース ファイル</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="arib_std_b25.c">
|
||||
<Filter>ソース ファイル</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="b_cas_card.c">
|
||||
<Filter>ソース ファイル</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="ts_section_parser.h">
|
||||
<Filter>リソース ファイル</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ts_section_parser_error_code.h">
|
||||
<Filter>リソース ファイル</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="arib_std_b25.h">
|
||||
<Filter>リソース ファイル</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="arib_std_b25_error_code.h">
|
||||
<Filter>リソース ファイル</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="b_cas_card.h">
|
||||
<Filter>リソース ファイル</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="b_cas_card_error_code.h">
|
||||
<Filter>リソース ファイル</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="multi2.h">
|
||||
<Filter>リソース ファイル</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="multi2_error_code.h">
|
||||
<Filter>リソース ファイル</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="portable.h">
|
||||
<Filter>リソース ファイル</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ts_common_types.h">
|
||||
<Filter>リソース ファイル</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
322
aribb25/libaribb25.cpp
Normal file
322
aribb25/libaribb25.cpp
Normal file
@ -0,0 +1,322 @@
|
||||
// libaribb25.cpp: CB25Decoder クラスのインプリメンテーション
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "libaribb25.h"
|
||||
|
||||
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
|
||||
{
|
||||
if (fdwReason == DLL_PROCESS_ATTACH) {
|
||||
DisableThreadLibraryCalls(hinstDLL);
|
||||
} else if (fdwReason == DLL_PROCESS_DETACH) {
|
||||
// 未開放の場合はインスタンス開放
|
||||
if (CB25Decoder::m_pThis) {
|
||||
CB25Decoder::m_pThis->Release();
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// インスタンス生成メソッド
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
extern "C"
|
||||
{
|
||||
|
||||
__declspec(dllexport) IB25Decoder * CreateB25Decoder()
|
||||
{
|
||||
// インスタンス生成
|
||||
return (CB25Decoder::m_pThis) ?
|
||||
CB25Decoder::m_pThis : dynamic_cast<IB25Decoder *>(new CB25Decoder());
|
||||
}
|
||||
|
||||
__declspec(dllexport) IB25Decoder2 * CreateB25Decoder2()
|
||||
{
|
||||
// インスタンス生成
|
||||
return (CB25Decoder::m_pThis) ?
|
||||
CB25Decoder::m_pThis : dynamic_cast<IB25Decoder2 *>(new CB25Decoder());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// 構築/消滅
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
// 静的メンバ初期化
|
||||
CB25Decoder * CB25Decoder::m_pThis = NULL;
|
||||
|
||||
CB25Decoder::CB25Decoder(void) : _bcas(NULL), _b25(NULL), _data(NULL)
|
||||
{
|
||||
m_pThis = this;
|
||||
}
|
||||
|
||||
CB25Decoder::~CB25Decoder(void)
|
||||
{
|
||||
if (_data)
|
||||
::free(_data);
|
||||
|
||||
_mtx.lock();
|
||||
|
||||
if (_b25)
|
||||
_b25->release(_b25);
|
||||
|
||||
if (_bcas)
|
||||
_bcas->release(_bcas);
|
||||
|
||||
_mtx.unlock();
|
||||
|
||||
m_pThis = NULL;
|
||||
}
|
||||
|
||||
void CB25Decoder::Release()
|
||||
{
|
||||
// インスタンス開放
|
||||
delete this;
|
||||
}
|
||||
|
||||
const BOOL CB25Decoder::Initialize(DWORD dwRound)
|
||||
{
|
||||
int ret = FALSE;
|
||||
|
||||
_mtx.lock();;
|
||||
|
||||
if (_b25)
|
||||
goto unlock;
|
||||
|
||||
_bcas = create_b_cas_card();
|
||||
if (!_bcas)
|
||||
goto unlock;
|
||||
|
||||
if (_bcas->init(_bcas) < 0)
|
||||
goto err;
|
||||
|
||||
_b25 = create_arib_std_b25();
|
||||
if (!_b25)
|
||||
goto err;
|
||||
|
||||
if (_b25->set_b_cas_card(_b25, _bcas) < 0)
|
||||
goto err;
|
||||
|
||||
// success
|
||||
_b25->set_strip(_b25, 1);
|
||||
_b25->set_emm_proc(_b25, 0);
|
||||
_b25->set_multi2_round(_b25, dwRound);
|
||||
|
||||
ret = TRUE;
|
||||
goto unlock;
|
||||
|
||||
err:
|
||||
// error
|
||||
if (_b25)
|
||||
{
|
||||
_b25->release(_b25);
|
||||
_b25 = NULL;
|
||||
}
|
||||
|
||||
if (_bcas)
|
||||
{
|
||||
_bcas->release(_bcas);
|
||||
_bcas = NULL;
|
||||
}
|
||||
|
||||
_errtime = ::GetTickCount();
|
||||
|
||||
unlock:
|
||||
_mtx.unlock();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
const BOOL CB25Decoder::Decode(BYTE *pSrcBuf, const DWORD dwSrcSize, BYTE **ppDstBuf, DWORD *pdwDstSize)
|
||||
{
|
||||
if (!_b25)
|
||||
{
|
||||
DWORD now = ::GetTickCount();
|
||||
DWORD interval = (now - _errtime) / 1000;
|
||||
if (interval > RETRY_INTERVAL) {
|
||||
if (Initialize() < 0)
|
||||
_errtime = now;
|
||||
}
|
||||
|
||||
if (!_b25) {
|
||||
if (*ppDstBuf != pSrcBuf) {
|
||||
*ppDstBuf = pSrcBuf;
|
||||
*pdwDstSize = dwSrcSize;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if (_data) {
|
||||
::free(_data);
|
||||
_data = NULL;
|
||||
}
|
||||
|
||||
ARIB_STD_B25_BUFFER buf;
|
||||
buf.data = pSrcBuf;
|
||||
buf.size = dwSrcSize;
|
||||
const int rc = _b25->put(_b25, &buf);
|
||||
if (rc < 0) {
|
||||
if (rc >= ARIB_STD_B25_ERROR_NO_ECM_IN_HEAD_32M) {
|
||||
// pass through
|
||||
_b25->release(_b25);
|
||||
_b25 = NULL;
|
||||
_bcas->release(_bcas);
|
||||
_bcas = NULL;
|
||||
if (*ppDstBuf != pSrcBuf) {
|
||||
*ppDstBuf = pSrcBuf;
|
||||
*pdwDstSize = dwSrcSize;
|
||||
}
|
||||
} else {
|
||||
BYTE *p = NULL;
|
||||
_b25->withdraw(_b25, &buf); // withdraw src buffer
|
||||
if (buf.size > 0)
|
||||
p = (BYTE *)::malloc(buf.size + dwSrcSize);
|
||||
|
||||
if (p) {
|
||||
::memcpy(p, buf.data, buf.size);
|
||||
::memcpy(p + buf.size, pSrcBuf, dwSrcSize);
|
||||
*ppDstBuf = p;
|
||||
*pdwDstSize = buf.size + dwSrcSize;
|
||||
_data = p;
|
||||
} else {
|
||||
if (*ppDstBuf != pSrcBuf) {
|
||||
*ppDstBuf = pSrcBuf;
|
||||
*pdwDstSize = dwSrcSize;
|
||||
}
|
||||
}
|
||||
|
||||
if (rc == ARIB_STD_B25_ERROR_ECM_PROC_FAILURE) {
|
||||
// pass through
|
||||
_b25->release(_b25);
|
||||
_b25 = NULL;
|
||||
_bcas->release(_bcas);
|
||||
_bcas = NULL;
|
||||
}
|
||||
}
|
||||
_errtime = ::GetTickCount();
|
||||
return FALSE; // error
|
||||
}
|
||||
_b25->get(_b25, &buf);
|
||||
*ppDstBuf = buf.data;
|
||||
*pdwDstSize = buf.size;
|
||||
return TRUE; // success
|
||||
}
|
||||
|
||||
const BOOL CB25Decoder::Flush(BYTE **ppDstBuf, DWORD *pdwDstSize)
|
||||
{
|
||||
BOOL ret = TRUE;
|
||||
|
||||
if (_b25) {
|
||||
int rc = _b25->flush(_b25);
|
||||
ret = (rc < 0) ? FALSE : TRUE;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
const BOOL CB25Decoder::Reset(void)
|
||||
{
|
||||
BOOL ret = TRUE;
|
||||
|
||||
if (_b25) {
|
||||
int rc = _b25->reset(_b25);
|
||||
ret = (rc < 0) ? FALSE : TRUE;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void CB25Decoder::DiscardNullPacket(const bool bEnable)
|
||||
{
|
||||
// NULLパケット破棄の有無を設定
|
||||
_b25->set_strip(_b25, bEnable);
|
||||
}
|
||||
|
||||
void CB25Decoder::DiscardScramblePacket(const bool bEnable)
|
||||
{
|
||||
}
|
||||
|
||||
void CB25Decoder::EnableEmmProcess(const bool bEnable)
|
||||
{
|
||||
// EMM処理の有効/無効を設定
|
||||
_b25->set_emm_proc(_b25, bEnable);
|
||||
}
|
||||
|
||||
void CB25Decoder::SetMulti2Round(const int32_t round)
|
||||
{
|
||||
// ラウンド段数を設定
|
||||
_b25->set_multi2_round(_b25, round);
|
||||
}
|
||||
|
||||
const DWORD CB25Decoder::GetDescramblingState(const WORD wProgramID)
|
||||
{
|
||||
// 指定したプログラムIDの復号状態を返す
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CB25Decoder::ResetStatistics(void)
|
||||
{
|
||||
}
|
||||
|
||||
const DWORD CB25Decoder::GetPacketStride(void)
|
||||
{
|
||||
// パケット周期を返す
|
||||
return 0;
|
||||
}
|
||||
|
||||
const DWORD CB25Decoder::GetInputPacketNum(const WORD wPID)
|
||||
{
|
||||
// 入力パケット数を返す ※TS_INVALID_PID指定時は全PIDの合計を返す
|
||||
return 0;
|
||||
}
|
||||
|
||||
const DWORD CB25Decoder::GetOutputPacketNum(const WORD wPID)
|
||||
{
|
||||
// 出力パケット数を返す ※TS_INVALID_PID指定時は全PIDの合計を返す
|
||||
return 0;
|
||||
}
|
||||
|
||||
const DWORD CB25Decoder::GetSyncErrNum(void)
|
||||
{
|
||||
// 同期エラー数を返す
|
||||
return 0;
|
||||
}
|
||||
|
||||
const DWORD CB25Decoder::GetFormatErrNum(void)
|
||||
{
|
||||
// フォーマットエラー数を返す
|
||||
return 0;
|
||||
}
|
||||
|
||||
const DWORD CB25Decoder::GetTransportErrNum(void)
|
||||
{
|
||||
// ビットエラー数を返す
|
||||
return 0;
|
||||
}
|
||||
|
||||
const DWORD CB25Decoder::GetContinuityErrNum(const WORD wPID)
|
||||
{
|
||||
// ドロップパケット数を返す
|
||||
return 0;
|
||||
}
|
||||
|
||||
const DWORD CB25Decoder::GetScramblePacketNum(const WORD wPID)
|
||||
{
|
||||
// 復号漏れパケット数を返す
|
||||
return 0;
|
||||
}
|
||||
|
||||
const DWORD CB25Decoder::GetEcmProcessNum(void)
|
||||
{
|
||||
// ECM処理数を返す(B-CASカードアクセス回数)
|
||||
return 0;
|
||||
}
|
||||
|
||||
const DWORD CB25Decoder::GetEmmProcessNum(void)
|
||||
{
|
||||
// EMM処理数を返す(B-CASカードアクセス回数)
|
||||
return 0;
|
||||
}
|
56
aribb25/libaribb25.h
Normal file
56
aribb25/libaribb25.h
Normal file
@ -0,0 +1,56 @@
|
||||
// libaribb25.h: CB25Decoder クラスのインターフェイス
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <windows.h>
|
||||
#include <mutex>
|
||||
|
||||
#include "IB25Decoder.h"
|
||||
#include "arib_std_b25.h"
|
||||
#include "arib_std_b25_error_code.h"
|
||||
|
||||
#define RETRY_INTERVAL 10 // 10sec interval
|
||||
|
||||
class CB25Decoder : public IB25Decoder2
|
||||
{
|
||||
public:
|
||||
// CB25Decoder
|
||||
CB25Decoder(void);
|
||||
virtual ~CB25Decoder(void);
|
||||
void Release(void);
|
||||
|
||||
static CB25Decoder *m_pThis;
|
||||
|
||||
// IB25Decoder
|
||||
virtual const BOOL Initialize(DWORD dwRound = 4);
|
||||
virtual const BOOL Decode(BYTE *pSrcBuf, const DWORD dwSrcSize, BYTE **ppDstBuf, DWORD *pdwDstSize);
|
||||
virtual const BOOL Flush(BYTE **ppDstBuf, DWORD *pdwDstSize);
|
||||
virtual const BOOL Reset(void);
|
||||
|
||||
// IB25Decoder2
|
||||
virtual void DiscardNullPacket(const bool bEnable = true);
|
||||
virtual void DiscardScramblePacket(const bool bEnable = true);
|
||||
virtual void EnableEmmProcess(const bool bEnable = true);
|
||||
virtual void SetMulti2Round(const int32_t round = 4);
|
||||
virtual const DWORD GetDescramblingState(const WORD wProgramID);
|
||||
virtual void ResetStatistics(void);
|
||||
virtual const DWORD GetPacketStride(void);
|
||||
virtual const DWORD GetInputPacketNum(const WORD wPID = TS_INVALID_PID);
|
||||
virtual const DWORD GetOutputPacketNum(const WORD wPID = TS_INVALID_PID);
|
||||
virtual const DWORD GetSyncErrNum(void);
|
||||
virtual const DWORD GetFormatErrNum(void);
|
||||
virtual const DWORD GetTransportErrNum(void);
|
||||
virtual const DWORD GetContinuityErrNum(const WORD wPID = TS_INVALID_PID);
|
||||
virtual const DWORD GetScramblePacketNum(const WORD wPID = TS_INVALID_PID);
|
||||
virtual const DWORD GetEcmProcessNum(void);
|
||||
virtual const DWORD GetEmmProcessNum(void);
|
||||
|
||||
private:
|
||||
std::mutex _mtx;
|
||||
B_CAS_CARD *_bcas;
|
||||
ARIB_STD_B25 *_b25;
|
||||
BYTE *_data;
|
||||
DWORD _errtime;
|
||||
};
|
179
aribb25/libaribb25.vcxproj
Normal file
179
aribb25/libaribb25.vcxproj
Normal file
@ -0,0 +1,179 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{32FCD075-2C1D-4796-926B-A0009ECCD1E8}</ProjectGuid>
|
||||
<RootNamespace>libaribb25</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<IntDir>$(SolutionDir)Intermediate\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<IntDir>$(SolutionDir)Intermediate\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<IntDir>$(SolutionDir)Intermediate\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<IntDir>$(SolutionDir)Intermediate\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>
|
||||
</SDLCheck>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>winscard.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>
|
||||
</SDLCheck>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>winscard.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Full</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>
|
||||
</SDLCheck>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<StringPooling>true</StringPooling>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalDependencies>winscard.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
||||
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Full</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>
|
||||
</SDLCheck>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<StringPooling>true</StringPooling>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalDependencies>winscard.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
||||
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="arib_std_b25.c" />
|
||||
<ClCompile Include="b_cas_card.c" />
|
||||
<ClCompile Include="libaribb25.cpp" />
|
||||
<ClCompile Include="multi2.c" />
|
||||
<ClCompile Include="ts_section_parser.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="arib_std_b25.h" />
|
||||
<ClInclude Include="arib_std_b25_error_code.h" />
|
||||
<ClInclude Include="b_cas_card.h" />
|
||||
<ClInclude Include="b_cas_card_error_code.h" />
|
||||
<ClInclude Include="IB25Decoder.h" />
|
||||
<ClInclude Include="libaribb25.h" />
|
||||
<ClInclude Include="multi2.h" />
|
||||
<ClInclude Include="multi2_error_code.h" />
|
||||
<ClInclude Include="portable.h" />
|
||||
<ClInclude Include="ts_common_types.h" />
|
||||
<ClInclude Include="ts_section_parser.h" />
|
||||
<ClInclude Include="ts_section_parser_error_code.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="ソース ファイル">
|
||||
@ -7,59 +7,65 @@
|
||||
</Filter>
|
||||
<Filter Include="ヘッダー ファイル">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="リソース ファイル">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="aribb25\arib_std_b25.c">
|
||||
<ClCompile Include="b_cas_card.c">
|
||||
<Filter>ソース ファイル</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="aribb25\b_cas_card.c">
|
||||
<ClCompile Include="multi2.c">
|
||||
<Filter>ソース ファイル</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="aribb25\multi2.c">
|
||||
<ClCompile Include="ts_section_parser.c">
|
||||
<Filter>ソース ファイル</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="aribb25\td.c">
|
||||
<ClCompile Include="arib_std_b25.c">
|
||||
<Filter>ソース ファイル</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="aribb25\ts_section_parser.c">
|
||||
<ClCompile Include="libaribb25.cpp">
|
||||
<Filter>ソース ファイル</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="aribb25\arib_std_b25.h">
|
||||
<ClInclude Include="multi2.h">
|
||||
<Filter>ヘッダー ファイル</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="aribb25\arib_std_b25_error_code.h">
|
||||
<ClInclude Include="multi2_error_code.h">
|
||||
<Filter>ヘッダー ファイル</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="aribb25\b_cas_card.h">
|
||||
<ClInclude Include="portable.h">
|
||||
<Filter>ヘッダー ファイル</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="aribb25\b_cas_card_error_code.h">
|
||||
<ClInclude Include="ts_common_types.h">
|
||||
<Filter>ヘッダー ファイル</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="aribb25\multi2.h">
|
||||
<ClInclude Include="ts_section_parser.h">
|
||||
<Filter>ヘッダー ファイル</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="aribb25\multi2_error_code.h">
|
||||
<ClInclude Include="ts_section_parser_error_code.h">
|
||||
<Filter>ヘッダー ファイル</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="aribb25\portable.h">
|
||||
<ClInclude Include="arib_std_b25.h">
|
||||
<Filter>ヘッダー ファイル</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="aribb25\ts_common_types.h">
|
||||
<ClInclude Include="arib_std_b25_error_code.h">
|
||||
<Filter>ヘッダー ファイル</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="aribb25\ts_section_parser.h">
|
||||
<ClInclude Include="b_cas_card.h">
|
||||
<Filter>ヘッダー ファイル</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="aribb25\ts_section_parser_error_code.h">
|
||||
<ClInclude Include="b_cas_card_error_code.h">
|
||||
<Filter>ヘッダー ファイル</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="IB25Decoder.h">
|
||||
<Filter>ヘッダー ファイル</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="libaribb25.h">
|
||||
<Filter>ヘッダー ファイル</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
Loading…
x
Reference in New Issue
Block a user