Текущее время: 01 май 2025, 19:49 • Часовой пояс: UTC + 3 часа |
По тюнеру DVB T2
Автор | Сообщение |
Tolyan249
|
|
Зарегистрирован: 17 авг 2012, 07:26 Сообщения: 62
|
здравствуйте. Вопрос такой что есть поддержка в драйвере KSPROPERTY_BDA_PLP_NUMBER , в directshow 9 , я не нашел этого описания, как мне это использовать где можно найти пример.
Спасибо. Пишу на delphi/
|
|
|
BTVSoft
|
|
Beholder |  |
Зарегистрирован: 19 авг 2004, 11:47 Сообщения: 190
|
Добрый день. Вам самому придется добавлять определение для KSPROPSETID_BdaDigitalDemodulator. Вот перечисляемый тип данного property set: Код: typedef enum { KSPROPERTY_BDA_MODULATION_TYPE = 0, KSPROPERTY_BDA_INNER_FEC_TYPE, KSPROPERTY_BDA_INNER_FEC_RATE, KSPROPERTY_BDA_OUTER_FEC_TYPE, KSPROPERTY_BDA_OUTER_FEC_RATE, KSPROPERTY_BDA_SYMBOL_RATE, KSPROPERTY_BDA_SPECTRAL_INVERSION, KSPROPERTY_BDA_GUARD_INTERVAL, KSPROPERTY_BDA_TRANSMISSION_MODE, KSPROPERTY_BDA_ROLL_OFF, KSPROPERTY_BDA_PILOT, KSPROPERTY_BDA_SIGNALTIMEOUTS, KSPROPERTY_BDA_PLP_NUMBER } KSPROPERTY_BDA_DIGITAL_DEMODULATOR;
Параметр для KSPROPERTY_BDA_PLP_NUMBER размером sizeof(ULONG). При передаче put запроса параметр задает номер PLP от 0 до 254. При указании любого числа <= 0, драйвер переключится на авто режим выборки PLP, который задается микрокодом демодулятора. Этот режим используется по умолчанию при управлении через BDA интерфейсы. Драйвер принимает как get так и put вызовы.
|
|
|
Tolyan249
|
|
Зарегистрирован: 17 авг 2012, 07:26 Сообщения: 62
|
Спасибо огромное за разъяснения, и что ответили. буду пробовать если что отпишусь.
|
|
|
Tolyan249
|
|
Зарегистрирован: 17 авг 2012, 07:26 Сообщения: 62
|
Да Это описано в directshow 9
KSPROPSETID_BdaDigitalDemodulator : TGUID = '{EF30F379-985B-4d10-B640-A79D5E04E1E0}'; {$EXTERNALSYM KSPROPSETID_BdaDigitalDemodulator}
type KSPROPERTY_BDA_DIGITAL_DEMODULATOR = ( KSPROPERTY_BDA_MODULATION_TYPE, KSPROPERTY_BDA_INNER_FEC_TYPE, KSPROPERTY_BDA_INNER_FEC_RATE, KSPROPERTY_BDA_OUTER_FEC_TYPE, KSPROPERTY_BDA_OUTER_FEC_RATE, KSPROPERTY_BDA_SYMBOL_RATE, KSPROPERTY_BDA_SPECTRAL_INVERSION, KSPROPERTY_BDA_GUARD_INTERVAL, KSPROPERTY_BDA_TRANSMISSION_MODE );
{$EXTERNALSYM KSPROPERTY_BDA_DIGITAL_DEMODULATOR} TKSPropertyBDADigitalDemodulator = KSPROPERTY_BDA_DIGITAL_DEMODULATOR;
Просто добавить то что не хватает из вашего описания , и оставить тот же TGUID = '{EF30F379-985B-4d10-B640-A79D5E04E1E0}';
или нужен другой TGUID ?
Спасибо.
|
|
|
BTVSoft
|
|
Beholder |  |
Зарегистрирован: 19 авг 2004, 11:47 Сообщения: 190
|
Вам нужно добавить новые значения после KSPROPERTY_BDA_TRANSMISSION_MODE. Это перечисляемый тип.
GUID тот же самый, только новые ID для KsProperty.
|
|
|
Tolyan249
|
|
Зарегистрирован: 17 авг 2012, 07:26 Сообщения: 62
|
Ясно понятно, Спасибо огромное за разъяснения. буду пробовать отпишусь,что получилось.
|
|
|
Tolyan249
|
|
Зарегистрирован: 17 авг 2012, 07:26 Сообщения: 62
|
Вопрос такой,можно ли получить с DVB T2 карты весь поток, что бы вывести все каналы разом? Если можно то как,указывать pid как c dvb s2,или как то по другому.
Спасибо.
|
|
|
BTVSoft
|
|
Beholder |  |
Зарегистрирован: 19 авг 2004, 11:47 Сообщения: 190
|
Вывести все каналы одновременно из всех DVB-T2 PLP в один общий TS поток невозможно. Т.е. каждая PLP выглядит как изолированная труба.
Внутри каждой PLP все каналы идут в общем TS потоке, фильтруются программно по PID. Стандартная практика получения PID каждого канала основана на сканировании PAT/PMT/SDT таблиц из TS потока. У Microsoft есть готовые программные инструменты для сканирования TS в виде COM объектов, но все это сделано достаточно "топорно".
ПО Beholder использует собственные инструменты для сканирования и демультиплексирования TS потока.
|
|
|
alex333
|
|
Зарегистрирован: 29 май 2011, 10:27 Сообщения: 661
|
У нас в кабельном под прием 2 эфирных мультиплексов задействовано 4 физических тюнера, иначе тоже никак...
T7, T8
|
|
|
Tolyan249
|
|
Зарегистрирован: 17 авг 2012, 07:26 Сообщения: 62
|
Писал программы для DVB S и S2 , разбор потока TS у меня есть , как получить название каналов это есть, Думаю так: 1-Узнать сколько PLP их id или номер. 2-переключать PLP в тюнере 3-Получить TS поток этого PLP 4-Разобрать его, по данным названия каналов, найти PID(video,audio) и 2 служебных PID не помню как они называются.
Только если TS поток такой же как используется в DVB S или S2.
Пока думаю так, если что отпишусь.
если в PLP0 идет 3-программы телевидения и 2 радио ,то их можно сразу вывести(показать) с одного PLP?
и еще не большой вопрос:
( При передаче put запроса параметр задает номер PLP от 0 до 254. При указании любого числа <= 0, драйвер переключится на авто режим выборки PLP )
это если отправить 0-драйверу ,он перейдет в режим авто PLP, Что это за режим авто PLP.
Спасибо огромное за ответы и помощь.
|
|
|
BTVSoft
|
|
Beholder |  |
Зарегистрирован: 19 авг 2004, 11:47 Сообщения: 190
|
Цитата: Только если TS поток такой же как используется в DVB S или S2. Такой-же, стандарт ISO общий. Цитата: если в PLP0 идет 3-программы телевидения и 2 радио ,то их можно сразу вывести(показать) с одного PLP? Да, они же замуксированы в общий TS поток. У каждой программы свои метки времени (PCR). Цитата: Что это за режим авто PLP. Это автоматический выбор первого PLP ID, потому как вы не можете знать заранее, сколько PLP на текущем мультиплексе и с какого PLP ID идет отсчет.
|
|
|
Tolyan249
|
|
Зарегистрирован: 17 авг 2012, 07:26 Сообщения: 62
|
Ясно, спасибо огромное за информацию.
|
|
|
Tolyan249
|
|
Зарегистрирован: 17 авг 2012, 07:26 Сообщения: 62
|
Кому интересно нашел исходники фильтров ,плагинов на DELPHI для написания своих программ, поддерживает [ DVB s, DVB C, DVB T , DVB ATS ], проверил ,откомпилировал ,работает,каналы находит. Да простят меня модераторы за ссылку для страницы где можно скачать эти библиотеки. [ http://www.dsp-worx.de/?n=11 ]
|
|
|
Tolyan249
|
|
Зарегистрирован: 17 авг 2012, 07:26 Сообщения: 62
|
Здравствуйте. Подскажите как и какой подключить фильтр для получения потока MEDIASUBTYPE_MPEG2_TRANSPORT, фильтры все соединил до MPEG-2 demultiplexer,все нормально, ошибок нет, К фильтру MPEG-2 demultiplexer не могу ни чего подключить, там 5-пинов из которых 3 только работают, это 1-пин,5-пин и MPEG2 Stream. Нету пинов (Video и Audio). Мне нужно получить весь поток который идет с фильтра DVB-T Capture? там данные идут по 188 байт, или можно этот поток взять с фильтра MPEG-2 demultiplexer ? Но там надо указать pid видео и звука. Застрял на одно месте.
Нашёл что можно добавить фильтр Samlegrabber к фильтру DVB-T Capture. Ошибок нет но и потока в Samlegrabber я не получаю.
И еще вопрос как можно получить уровень сигнала?
Спасибо.
Вложения:

DVB_T2_beholder.PNG [ 19.15 КБ | Просмотров: 46580 ]

2.PNG [ 20.64 КБ | Просмотров: 46574 ]
|
|
|
Tolyan249
|
|
Зарегистрирован: 17 авг 2012, 07:26 Сообщения: 62
|
Сигналы получил но только 2 а не как у все з
procedure TForm1.Timer1Timer(Sender: TObject); var FTuner: ITuner; strength:integer; Trigger:integer; begin if FTuner=nil then exit; FTuner.get_SignalStrength(strength); FTuner.TriggerSignalEvents(Trigger); gauge1.MaxValue:=100; gauge1.Progress:= strength;
gauge2.MaxValue:=100; gauge2.Progress:= Trigger end;
Получение сигнала в FTuner больше нет ни каких.
установил частоту и bandwidth , уровень сигнала появился и меняется в не больших пределах, т.е. сигнал идет в реальном времени. Trigger всегда показывает 100% сигнала . strength колеблется от 60 до 65.
SNR сигнал как найти?
Cигнал появился только тогда когда была запущена программа beholder потом закрыта,видимо настройки тюнера остались при закрытии программы beholder.
И ещё один вопрос , какие параметры указать тюнеру что бы он показал уровень сигнала?
0-перевести тюнер для приёма в DVB T формат (DVB_TERRESRIAL) 1-указать частоту 2-FEC 3- BandWidth(ширина канала) 4- модуляцию 64QAM 5-
и еще что я не знаю.
в directshow нашел что нужно установить но откуда взять данные не понятно,и что задавать. или данные идут в потоке MPEG 2 ТS настройки тюнера ,если так то тогда как их взять от туда? или установить в ручную?
var DVBTLocator: IDVBTLocator;
DVBTLocator.put_Bandwidth(); DVBTLocator.put_LPInnerFEC(); DVBTLocator.put_LPInnerFECRate() ; DVBTLocator.put_HAlpha(); DVBTLocator.put_Guard(); DVBTLocator.put_Mode(); DVBTLocator.put_OtherFrequencyInUse() DVBTLocator.put_CarrierFrequency() DVBTLocator.put_InnerFEC() ; DVBTLocator.put_InnerFECRate(); DVBTLocator.put_OuterFEC(); DVBTLocator.put_OuterFECRate() ;
данные программ скорее всего одинаковые по всей России DVB T2, кроме канала вещания.(моё мнение)
Спасибо.
|
|
|
Кто сейчас на конференции |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1 |
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения
|
|