Некорректные (одинаковые) пиды

  • пытаюсь заставить ведро работать с каналами с одинаковыми пидами на разных транспондерах, коих навалом на 80Е, и у меня в iptv
    сделал что при старте когда ведро парсит каналы на пердмет одинаковых пидов, если транспондеры разные то канал не удаляется а рид увеличивается на 1
    осталось сделать чтобы при сканировании каналы добавлялись

  • кажется сделал то что хотел
    теперь одинаковые пиды проверяются с учетом транспондера
    если найдены одинаковые пиды на одном транспондере, канал удаляется как дубликат
    если найдены одинаковые пиды, а транспондеры разные, то увеличивается рид на 1 для обеспечения уникальности


    при сканировании рилчанелсканом происходит примерно тоже
    если новый канал содержит пиды, уже имеющиеся в базе каналов, но при этом в базе прописан другой транспондер, канал добавляется в базу
    если транспондер такой же, то канал не считается новым


    я протестил на эспрессе ам2 80е, и у себя с айпи тв провайдером - куча каналов с разными айпи адресами и одинаковыми пидами


    патчи я сделал для ведра 1.5.12, пропатченного для айпитв и не пропатченного, и рилчанелскана 0.4.1(оригинальной версии)

    Файлы

    • incorrect-pid.tar.bz2

      (3.38 kB, скачали 3 раз, последнее скачивание: )
  • извиняюсь, косячок сделал, не полный патч выложил
    кто сливал, скачайте снова


    кстати налаживается на последний патч для н264, правда с одним неизлечимым фейком в nit.c, но кажется можно не патчить этот файл, потому что н264 патч меняет его структуру

    Файлы

    • incorrect-pid.tar.bz2

      (2.27 kB, скачали 3 раз, последнее скачивание: )

    Сообщение было отредактировано 1 раз, последнее редактирование пользователем ua0lnj ().

  • а ты не пробовал бороться с одинаковыми пидами с помощью RID - Radio ID в channels.conf


    Format:
    Name:FREQUENCY:Source:Srate:VPID:APID:TPID:CA:SID:NID:TID:RID
    Name - Name of channel
    FREQ - Frequenz
    PARAM - H,V?
    Source - satelite
    SRate - Symbol rate
    VPID - VideoPid
    APID - AudioPid
    TPID - VideotextPid
    CA - Conditional Access
    SID - Service ID
    NID - Network ID
    TID - Network ID ( currently unused, for the Future)
    RID - Radio ID


    RID
    The Radio ID of this channel (typically 0, may be used to distinguish channels where
    NID, TID and SID are all equal).

  • так он так и делает

    Цитата


    если найдены одинаковые пиды на одном транспондере, канал удаляется как дубликат
    если найдены одинаковые пиды, а транспондеры разные, то увеличивается рид на 1 для обеспечения уникальности

  • Цитата

    Со слов пользователя free-x
    так он так и делает


    а зачем удалять ? что будет, если прописать уникальные RID для всех каналов, имеющих одинаковые пиды на этом транспондере ?

  • сами каналы могут быть и разные, но иметь одни и те же sid, nid, tid. Но я только что посмотрел на Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу. - нет там таких примеров, так что вопрос снимаю.

  • на одном и том же транспондере по самой дефиниции не может быть 2 каналов с одинаковым sid. А вот за одинаковые sid-nid-tid на разных транспондерах надо сразу убивать на месте из рогатки

  • у меня на текущий момент 2 спутника, абс1 и ам2, и айпи тв у интернет провайдера
    во всех этих источниках есть каналы с одинаковыми пидами, причем на абс1 это не российские провайдеры, в самом низу ку диапазона там 2-3 арабских канала, с одинаковыми пидами
    про ам2 вообще молчу, хотя за 2007 год ситуация несколько улучшилась, но не полностью
    еще возможно с неправильными пидами появляются всякие фиды, а знаете ли вручную править чанел конф тоже несколько достает, особенно парсить его на поиск одинаковых пидов

  • нашел некоторые проблемы после патча н264, и еще косячок один
    уже разобрался, после тестов выложу результат

  • для ведра 1.6.0
    убрал использование и перенумерацию ридов, поскольку Клаус это не одобрил
    в аттаче 4 версии, для голого ведра, для ведра + айпитв, для ведра с патчем 1.5.18-н264 без двб-с2, и для н264+айпитв, тоже без двб-с2


    для двб-с2 версию сделаю после выхода 1.7.х, хотя этот патч тоже должен наложиться


    вообще есть идея сделать удаление неактуальных каналов при включенном обновлении транспондера, потому как вручную это делать тоже не удобно

    Файлы

    Сообщение было отредактировано 1 раз, последнее редактирование пользователем ua0lnj ().

  • весьма пользительная анти-фича для тех кто смотрит не только Астру19 )))


    хи - только я было собрался погрызть код вдр чтоб отключить нафиг удаление
    как бы дублированных каналов из списка channels.conf как оказалось что ты все сделал )))


    только проясни что происходит по этому патчу с точки зрения пользователя?
    то есть возможно использование в разных местах списка одинаковых записей?


    и если не сложно - напиши несколько слов что делает измененный код с точки зрения
    кодера (просмотрел код и если честно не совмем понял основную идею) - я б может в
    CRCS перенял бы идею - или после этого патча это уже не нужно и все найденные каналы
    будут прописаны в channels.conf? даже те что уже есть в списке?


    у меня была такая идея - найти кусок кода вдр который обнаруживает что запись дублирована и
    удаляет эту запись и просто эту часть обходить - скажем если в сетапе это указано - думал
    добавить строку установки - "удалять дублирующие записи в channels.conf"

  • прочитай весь этот топик
    твой црцс я тоже пропатчил S.
    гдето я писал об этом кстати


    суть простая, когда ведро парсит список каналов на дубли то проверяется еще совпадение транспондера, если пиды одинаковые а транспондеры разные то ничего не делается, т.е. не считается за дубли
    кстати я выкладывал патч для рилчанелскана, он актуален тоже


    в основном это добавление функции Transponder()

  • нет похоже что црцс я все же не патчил, тока рилчанелскан
    это замена функции
    cChannel *channel = Channels.GetByChannelID(tChannelID(Source(), sdt.getOriginalNetworkId(), sdt.getTransportStreamId(), SiSdtService.g
    etServiceId()));


    на


    cChannel *channel = Channels.GetByServiceID(Source(), Transponder(), SiSdtService.getServiceId());


    иначе нет привязки к транспондеру, и происходит перезапись

  • все - врубился - то есть проверяется лишь дубли и по nit-tid-sid и по параметрам
    транспондера .... то есть всеж нельзя прописать в разных местах списка
    полностью одинаковые каналы?
    хм .... я то хотел именно такой вариант - пусть бы даже наличие совпадающих до точки
    каналы возможны в списке - например у меня есть в основном списке канал - я сканирую и
    добавляются ВСЕ каналы (даже тот что уже есть выше по списку) с этого транспондера ....


    для этого варианта напрашивается всеж полна блокировка вдр фичи проверки на уникальность
    канала ....

  • можно полностью убрать проверку на дубли, не вопрос
    в channels.c, посмотри в моем патче, есть функция которая парсит каналы при старте ведра void cChannels::DeleteDuplicateChannels(void)
    в ней можно отрубить это
    еще в nit.c и sdt.c, но если в меню вырубить обновление, то их трогать не нужно, я так понимаю


    вообще я хочу сделать удаление каналов которых уже нет на транспондере, можно попробовать завести опцию в меню, или привязать к той что уже есть, например если выключено обновление каналов то дубли не удаляются вообще
    наверно я так и сделаю

  • простейший патч vdr-1.5.12-nodeldubchan.diff блокирующий удаление дублированных каналов
    в channels.conf - эта анти-фича работает только при запуске вдр!!


    кладем патч в директорию с сырцами вдр проверяем наложение и патчим и пересобираем вдр

    Исходный код
    # patch -p1 --dry-run < vdr-1.5.12-nodeldubchan.diff
    # patch -p1 < vdr-1.5.12-nodeldubchan.diff
    # make clean
    # make


    кладем новый вдр туда куда надо )))
    после первого запуска вновь собранного вдр в setup.conf появляется строка

    Исходный код
    DelDubChan  = 1


    ;) интерфейс пользователя = ручками прописываем в setup.conf
    DelDubChan = 1 - все по старому - дублирующие каналы при запуске вдр удаляются
    DelDubChan = 0 - при старте вдр дублирующие каналы не удаляются


    таким образом удается держать в разных местах channels.conf полностью дублирующих
    записей- скажем один и тот же канал можно записать в разные группы ...

    Исходный код
    : Group 1
    1TVRUS Europe;Globecast:12597:VC34M2S0Z0:S13.0E:27500:167:108:0:0:8208:318:9400:0
    : Group 2
    1TVRUS Europe;Globecast:12597:VC34M2S0Z0:S13.0E:27500:167:108:0:0:8208:318:9400:0


    к сожалению каким образом подавить паранойю вдр по созданию дублирующих записей
    в процессе работы вдр - пока не знаю .... в данном патче блокируются только функция
    DeleteDuplicateChannels() вызываемая в функции cChannels::Load которая в свою очередь
    запускается только при старте вдр ...

    Файлы

    • nodeldubchan.tar.gz

      (1.32 kB, скачали 1 раз, последнее скачивание: )
  • новый вариант патчика подавляющего фичу вдр по удалению
    дублирующих каналов - в довесок к подавлению удаления дублирующих
    каналов при запуске вдр добавлена блокировка создания дублирующих каналов
    из меню вдр "Каналы->Добавить"

    Файлы

    • nodeldubchan.tar.gz

      (1.59 kB, скачали 2 раз, последнее скачивание: )
  • обновленный патч, включает 4 версии, по названию понятно какие, БЕЗ dvb-s2
    инклуде патч от Куража :)
    фичи:


    в меню в настройках ДВБ можно выбрать удалять дубли или нет, причем если выбрать удаление дублей, то сохраняется работа с повторяющимися пидами в режиме обновления, без использования rid


    при выборе обновления каналов и транспондеров появляется новая опция - удалять отсутствующие каналы, т.е. состояние каналов становиться полностью актуальное
    естественно что если транспондер пропал полностью то ничего не удалится, т.е. временно отсутствующие транспондеры не удалятся

    Файлы

    Сообщение было отредактировано 1 раз, последнее редактирование пользователем ua0lnj ().