by tolyan249 » Sun Nov 24, 2019 10:31 am
I try the code that is described above(translated to delphi), it gives an error.
KSPROPSETID_BdaTunerExtensionProperties:TGuid='{FAA8F3E5-31D4-4e41-88EF-D9EB716F6EC9}';
//---------------------------------------------------------------------------------------
TYPE
KSPROPERTY_BDA_TUNER_EXTENSION=(
KSPROPERTY_BDA_DISEQC_MESSAGE=0,
KSPROPERT_Q__D__D_D_D_T_T_T_F_RU_DB_RU_IQ_REG_REG_RUE_IND_C_I_RU_R_R_C_R_R_R_E_DI_R_R_TR_R_C_PR_RID_R_R_R_R_R_Rid_R_R_L_R_R_D_D_D_D_RDRDDWDWDWD,
KSPROPERTY_BDA_SCAN_FREQ, // Не поддерживается
KSPROPERTY_BDA_CHANNEL_CHANGE, // настраиваемого свойства для изменения канала
KSPROPERTY_BDA_DEMOD_INFO, // настраиваемого свойства для возвращения демодулятора FW состояния и версии
KSPROPERTY_BDA_EFFECTIVE_FREQ, // Не поддерживается
KSPROPERTY_BDA_SIGNAL_STATUS, // настраиваемого свойства для возвращения качества сигнала, силы, BER и других атрибуты
KSPROPERTY_BDA_LOCK_STATUS, // Пользовательский свойство для возврата индикаторов блокировки
KSPROPERTY_BDA_ERROR_CONTROL, // пользовательское свойство для управления исправлением ошибок и окном BER
KSPROPERTY_BDA_CHANNEL_INFO, // пользовательское свойство для отображения заблокированных значений частоты, скорости передачи символов и т. д. после
KSPROPERTY_BDA_NBC_PARAMS,
KSPROPERTY_BDA_BLIND_SCAN,
KSPROPERTY_BDA_GET_MEDIAINFO,
KSPROPERTY_BDA_STREAMTYPE_PARAMS,
KSPROPERTY_BDA_INPUTMULTISTREAMID, // добавили 2011 01 27
KSPROPERTY_BDA_MACACCESS, // добавили 2010 12 07
KSPROPERTY_BDA_SETHV, // добавили 2011 05 21 управления HV, 22k, ч = 1; v = 0; // 6925; 6984
KSPROPERTY_BDA_SET22K, // 22k 0 off; 1 on // 6925; 6984
KSPROPERTY_BDA_CI_ACCESS, // BOB ci / 6992,6618,6928
KSPROPERTY_BDA_UNICABLE, // ****** добавлен интерфейс 2011 10 19 для всех карт ***** /
KSPROPERTY_BDA_PMT_ACCESS, // ci mce / 6992,6618,6928
KSPROPERTY_BDA_TBSACCESS,
KSPROPERTY_BDA_PLPINFO=22, // добавлено 2012 11 09 июля DVBT2-интерфейс PLP
KSPROPERTY_BDA_GOLDCODE, // добавлено 2013 02 25 июля
KSPROPERTY_BDA_MODCODES,
KSPROPERTY_BDA_TBSI2CACCESS, // добавлена 20140617 luchy Для ТБС PCI-E моста I2C интерфейса
KSPROPERTY_BDA_FPGA_RDID = 100,
KSPROPERTY_BDA_FPGA_ERASE_WriteCtrl = 101,
KSPROPERTY_BDA_FPGA_WRITEONEPAGE = 102,
KSPROPERTY_BDA_FPGA_VERIFY = 103
);
TKSPROPERTY_BDA_TUNER_EXTENSION = KSPROPERTY_BDA_TUNER_EXTENSION;
type
TBS_PLP_INFO=record // PLP info for TBS tuners struct
plpId:integer; //The Rel PLPID need to set
cplpCount:integer; //PLP count number
plpResered1:integer;//
plpResered2:integer;// memory size set to 4
plpIdList:integer;//store the Rel PLPID
end;
TTBS_PLP_INFO=TBS_PLP_INFO;
procedure TBDAFilterGraph.setPLPINfo(TunerD:IBaseFilter; plpint:integer);
var
BytesRead:long;// = 0;
TypeSupport:DWORD ; //= 0;
hr:HRESULT;
plp:TBS_PLP_INFO;
PropertySet : IKSPropertySet;
dwSupported:Dword;
ret:Dword;
begin
ZeroMemory(@plp, sizeof(PLP));
hr:=TunerD.QueryInterface(IID_IKsPropertySet,PropertySet);
if (FAILED (hr)) then showmessage ('сбой установки интерфейса TunerD');// тут hr=0(S_OK)
hr:=PropertySet.Get(KSPROPERTYSET_IID_BdaTunerExtensionProperties,
AMPROPERTY_PIN(KSPROPERTY_BDA_PLPINFO),
NiL,
0,
plp,
sizeof(TTBS_PLP_INFO),ret); //Ошибка тут result<>0
if (FAILED (hr)) then showmessage ('сбой чтения PLP_INFO');
plp.plpId:=plpint; // это значение plp, которое вы хотите установить.
hr:=PropertySet.Set_(KSPROPSETID_BdaTunerExtensionProperties,
AMPROPERTY_PIN(KSPROPERTY_BDA_PLPINFO),
nil,
0,
@plp,
sizeof(TTBS_PLP_INFO)); //Ошибка тут result<>0
if (FAILED (hr)) then showmessage ('сбой установки PLP');
end;
Procedure BDAFilterGraph.addfilter(ch,bn,plpid:integer;TunerPath,CapturePath:string);
// Load tuner device and connect to network provider
hr := LoadFilter(KSCATEGORY_BDA_NETWORK_TUNER, FTunerDevice,FNetworkProvider, true, TunerPath);
if FAILED( hr) then
begin
WriteLog('Could not load tuner ' + SysErrorMessage(hr));
Result := hr;
Exit;
end;
//Дальше устанавливаем частоту
end;
Procedure BDAFilterGraph.rungraph;
begin
//получаем интерфейс ImediaControl
hr:=(FGraphBuilder as IFilterGraph2).QueryInterface(IID_IMediaControl, FMediaControl);
if FAILED(HR) then
begin
showmessage('Не могу получить интерфейс FmediaControl');
result:=hr;
EXIT;
end;
//устанавливаю частоту ,запускаю граф фильтров
FMediaControl.Run;
//Устанавливаем PLP
SetPlpINFO(FTunerDevice,1); 1-это номер PLP
end;
I find the interface of the tuner, I check whether it has IID_IKsPropertySet, if there is that we read PLP_INFO then we install PLP_INFO.
Thanks for the help and answers.