Текущее время: 22 дек 2024, 09:31 • Часовой пояс: UTC + 3 часа |
По тюнеру DVB T2
Автор | Сообщение |
Людмила
|
|
Зарегистрирован: 17 мар 2015, 03:13 Сообщения: 264
|
В первом мультиплексе (РТРС-1) три трубы: PLP 0, PLP 1 (Россия 1, Радио России), PLP 2 (Россия 24).
|
|
|
f2065
|
|
Зарегистрирован: 28 сен 2006, 05:01 Сообщения: 830 Откуда: Russia,Moscow
|
Людмила писал(а): В первом мультиплексе (РТРС-1) три трубы: PLP 0, PLP 1 (Россия 1, Радио России), PLP 2 (Россия 24). Вопрос был не про это. Как программно узнать кол-во PLP в мультиплексе??? Предполагаемый микрософтовский способ через BDA-интерфейс - с бехолдером ни у кого не работает (вероятно есть какая-то тонкость, о которой никто не знает). В ProgDVB пришлось вот просто тупо назначить всем мультиплексам по 4 PLP, и перебирать их. Нужен пример по получению кол-ва PLP именно для бехолдеровского BDA. Авторы Behold TV уже много лет упорно не отвечают на этот вопрос, хотя вопрос возникает у многих разработчиков.
|
|
|
Tolyan249
|
|
Зарегистрирован: 17 авг 2012, 07:26 Сообщения: 62
|
Спасибо за ответ. Да нужно программно узнать , или перебирать PLP,просто я не знаю как тюнер переключить на другой PLP. 2-года бьюсь пока результат 0.
|
|
|
Людмила
|
|
Зарегистрирован: 17 мар 2015, 03:13 Сообщения: 264
|
Tolyan249 писал(а): Да нужно программно узнать , или перебирать PLP,просто я не знаю как тюнер переключить на другой PLP. Мне кажется, что вопрос этот сродни вопросу, сколько реальных 8-мегагерцовых несущих содержит полоса, к примеру, 24 или 64 МГц. В принципе, оператор может разместить на одной DVB-T2 несущей произвольное число PLP. Сколько их в эфирном DVB-T2 потоке, можно узнать, по-моему, только перебором, примерно так же, как сканированием определяется количество несущих в каком-то диапазоне частот. Программно, число PLP легко определяется при анализе T2-MI потока, который включает в себя все PLP, подаваемые на Gateway, на выходе которого получается единый сервис, поднимаемый на спутник и принимаемый затем ретрансляторами. Принятый T2-MI поток непосредственно подается затем на DVB-T2 модулятор, с которого PLP идут уже самостоятельными подпотоками. К мысли о переборе подводит история с тюнерами Geniatech/MyGica типа Т230/Т230С. Их драйвер использует для приема PLP, отличных от PLP 0, фейковые частоты. Их драйвер определяет именно при частотном сканировании. То есть, назначается слепое сканирование, после которого выдаются как истинные частоты несущих, так и фейковые, на которых якобы транслируются PLP 1, PLP 2. Дальше настраиваешь тюнер на эти частоты и принимаешь PLP 1, 2 и т.д. Так что перебор, пожалуй, единственный надежный способ. А Beholder, создавая свой BTV, скорее всего, принимал в расчет, что у нас в одном из мультиплексов всего 3 PLP. Кроме того, мудрые разработчики сохранили возможность при ручной настройке задавать все, что нужно, в том числе и номер PLP. За что им особое спасибо! Это - классика BDA! Мало у кого это есть.
|
|
|
f2065
|
|
Зарегистрирован: 28 сен 2006, 05:01 Сообщения: 830 Откуда: Russia,Moscow
|
Людмила писал(а): К мысли о переборе подводит история с тюнерами Geniatech/MyGica типа Т230/Т230С. Их драйвер использует для приема PLP, отличных от PLP 0, фейковые частоты. А вот астромета не использует никаких фейковых частот, и мгновенно (ещё до сканирования состава мультиплекса) выдаёт перечень доступных PLP при фиксации частоты. По косвенным признакам - бехолдер тоже мгновенно узнаёт перечень доступных PLP. Но вот как у него это спросить через BDA - не понятно.
|
|
|
Tolyan249
|
|
Зарегистрирован: 17 авг 2012, 07:26 Сообщения: 62
|
Спасибо огромное за ответы и помощь,будем дальше искать, у меня есть исходник на visual си++ и скомпилированный файл , он работает с PLP , но я пишу на DELPHI ,не могу переписать . Сюда не могу выложить размер не позволяет ,если кому нужно ,отправлю на мыло , пишите на tomoct@mail.ru.
|
|
|
f2065
|
|
Зарегистрирован: 28 сен 2006, 05:01 Сообщения: 830 Откуда: Russia,Moscow
|
Tolyan249 писал(а): у меня есть исходник на visual си++ и скомпилированный файл , он работает с PLP , Там есть функция которая выдаёт кол-во PLP на текущей частоте? И она работает на бехолдере?
|
|
|
Tolyan249
|
|
Зарегистрирован: 17 авг 2012, 07:26 Сообщения: 62
|
Да прекрасно все работает. каналы все находит у меня USB cruize lite тюнер. Может кто поможет разобраться с исходником на си++, и переделать на delphi функции по PLP. Например там есть строки: Код: var plpSupported = KsPropertyHelper.KSSupported(graph.TunerPin, KSPropSets.KSPROPSETID_BdaDigitalDemodulator, (int)KSPROPERTY_BDA_DIGITAL_DEMODULATOR.KSPROPERTY_BDA_PLP_NUMBER); plpSupported - что за переменная где искать её описание? Есть функция там по поиску контактов демодулятора KSPROPERTY_BDA_PLP_NUMBERКод: // Gets the property value (ksGuid property set and its ksParam) from ksTarget public static object KSGetNode(IKsPropertySet ksTarget, Guid ksGuid, int ksParam, Type ksType) { object obj;
var dataPtrSize = Marshal.SizeOf(ksType); var dataPtr = Marshal.AllocCoTaskMem(dataPtrSize); var instancePtrSize = Marshal.SizeOf(typeof(KSP_NODE)); var instancePtr = Marshal.AllocCoTaskMem(instancePtrSize);
try { int cbBytes; var result = ksTarget.Get( ksGuid, ksParam, instancePtr, instancePtrSize, dataPtr, dataPtrSize, out cbBytes);
if (result != 0) throw new Exception( string.Format("KSPropertySet KSP_NODE GET method failed [{0:X}]", result)); obj = Marshal.PtrToStructure(dataPtr, ksType); } finally { if (dataPtr != IntPtr.Zero) Marshal.FreeCoTaskMem(dataPtr); if (instancePtr != IntPtr.Zero) Marshal.FreeCoTaskMem(instancePtr); } return obj; }
как её переделать на delphi не понятно. Вот ссылка на скачивание проекта на C++ https://www.codeproject.com/Articles/82 ... bControls/Спасибо.
|
|
|
Tolyan249
|
|
Зарегистрирован: 17 авг 2012, 07:26 Сообщения: 62
|
Пробую установить PLP через IKSPROPERTYSET не работает ,может кто что подскажет ? Спасибо. Код: function TBDAFilterGraph.set_PLP(plpnum: integer):boolean; var PropertySet : IKSPropertySet; dwSupported, cbBytes: DWord; Property_ : KSPROPERTY; hr:Hresult; begin
if SUCCEEDED(FTunerDevice.QueryInterface(IID_IKSPropertySet, PropertySet)) then begin ZeroMemory(@Property_, sizeof(Property_)); Property_.Set_:= KSPROPSETID_BdaDigitalDemodulator; Property_.Id:=Cardinal(KSPROPERTY_BDA_PLP_NUMBER); Property_.Flags:=KSPROPERTY_TYPE_SET; Property_.Alignment:=plpnum;
dwSupported:=2;
hr:=PropertySet.QuerySupported(KSPROPSETID_BdaDigitalDemodulator, AMPROPERTY_PIN(KSPROPERTY_BDA_PLP_NUMBER),dwSupported);
if (hr <> S_OK) then exit;
hr:=PropertySet.Set_(KSPROPSETID_BdaDigitalDemodulator, AMPROPERTY_PIN(KSPROPERTY_BDA_PLP_NUMBER), PKSPROPERTY(@Property_), SizeOf(Property_) - SizeOf(PKSPROPERTY), @Property_, SizeOf(Property_));
end;
end;
|
|
|
Tolyan249
|
|
Зарегистрирован: 17 авг 2012, 07:26 Сообщения: 62
|
Вопрос модераторам форума . Помогите пожалуйста написать функцию по переключению PLP на pascale или на СИ#. Уже 2 года мучаюсь не могу сделать переключение PLP.
Спасибо.
|
|
|
Кто сейчас на конференции |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1 |
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения
|
|