Ga naar inhoud

DVB-C-multiplexing

Een hotel, een ziekenhuisafdeling of een zorginstelling opnieuw bekabelen is het duurste wat iemand in een renovatieoverleg kan voorstellen. Het betekent vloeren openbreken, sleuven in muren frezen, kamers sluiten en omzet mislopen zolang het werk duurt. Heel vaak wordt het voorgesteld, niet omdat de bestaande infrastructuur tekortschiet, maar omdat het nieuwe systeem er niet mee overweg kan.

Het coaxnetwerk ligt er al, in vrijwel elk gebouw van dit type, en het bereikt al elke kamer. Elke televisie die in ongeveer de laatste vijftien jaar is gemaakt, heeft een ingebouwde DVB-C-tuner. Door de zenders op de coax te zetten, werkt het gebouw zoals het is: geen apparaat per kamer om te kopen, van stroom te voorzien, te monteren, bij te werken of te vervangen als een gast ermee vertrekt, en geen afhankelijkheid van het wifi-netwerk waarover diezelfde gasten al klagen.

De keerzijde is dat een broadcastdraaggolf een gedeelde leiding met vaste capaciteit is. Alles op deze pagina volgt daaruit.

Een ondersteunde DVB-C-modulatorkaart in een PCIe-slot van het apparaat. De kaart doet de modulatie; Castmux produceert de gemultiplexte transportstream en configureert de draaggolf.

Dit is ontwikkeld en gemeten met TBS-kaarten, en de referentiehardware is de TBS 5862. Het programmeren van de kaart verloopt via de tool van de fabrikant en de device nodes die die verwacht, dus een kaart van een andere fabrikant is geen kwestie van configuratie — neem contact met ons op voordat u er een koopt.

ParameterBereik
FrequentieOngeveer 47–1002 MHz, dat de VHF- en UHF-kabelbanden dekt.
ConstellatieQAM 16, 32, 64, 128 of 256.
Symbol rateOngeveer 1.0–7.14 MS/s.

Meerdere kaarten, of meerdere uitgangen, betekenen meerdere multiplexen. Eén modulatorapparaat stuurt één multiplex aan; zie Beperkingen.

Een DVB-C-draaggolf heeft een vaste netto bitrate die volledig wordt bepaald door de symbol rate en de constellatie:

Terminal window
# Net transport-stream bitrate of a DVB-C carrier
net = symbol_rate × log2(QAM) × 188/204

De term 188/204 is de Reed–Solomon-buitencode: elk transportpakket van 188 bytes wordt op de kabel als 204 bytes verzonden, dus ongeveer 7.8% van de ruwe capaciteit is foutcorrectie en niet beschikbaar voor video.

Netto bitrate in Mbps voor de combinaties die u het meest zult gebruiken:

Symbol rateQAM 16QAM 64QAM 128QAM 256
5.000 MS/s18.427.632.336.9
6.111 MS/s22.533.839.445.1
6.875 MS/s25.338.044.350.7
6.900 MS/s25.438.144.550.9
6.952 MS/s25.638.444.851.3

De twee gebruikelijke werkpunten zijn 6.9 MS/s bij QAM64, goed voor ongeveer 38 Mbps, en 6.9 MS/s bij QAM256, goed voor ongeveer 50.9 Mbps. Een hogere constellatie levert capaciteit op ten koste van ruismarge: QAM256 vraagt een schoner netwerk dan QAM64, en op oude coax met gecorrodeerde connectoren en passieve splitters is die marge er misschien niet. Tonen televisies aan het eind van een kabeltracé af en toe blokvorming, verlaag dan de constellatie voordat u de bron de schuld geeft.

De berekening hierboven geeft een theoretisch plafond. Wie daarop plant, krijgt een multiplex die precies op de momenten dat het ertoe doet gaat haperen.

Castmux transcodeert niet, dus elke service neemt de bitrate in die zijn bron produceert, en bronnen van het soort dat hier wordt gebruikt hebben een variabele bitrate. Een zender die als „7 Mbps HD” wordt omschreven, noemt een gemiddelde. Bij een statisch studiobeeld zit hij misschien op 3 Mbps; bij een pan over een menigte, confetti, een voetbalveld of een actiescène kan hij pieken boven 10. Dat meerdere zenders tegelijk pieken is niet onwaarschijnlijk — om 20.00 uur is het vrijwel gegarandeerd.

Wanneer de som van de services de capaciteit van de draaggolf overschrijdt, kan de multiplexer het overschot nergens kwijt en worden pakketten weggegooid. De schade blijft niet beperkt tot de zender die over de grens ging: wat wordt weggegooid, komt uit de samengestelde stream, dus één gulzige service verslechtert tegelijk het beeld van elke service in de multiplex.

Een multiplex wordt gedefinieerd door een frequentie en de parameters van zijn draaggolf. Maak er een aan en vul in:

VeldOpmerkingen
FrequentieKies uit de voorinstellingen voor UHF- en VHF-kanalen, of voer direct een frequentie in. De voorinstellingen bestaan omdat de meeste installaties draaggolven op standaardposities van het kabelkanaalraster plaatsen, en de automatische zoekfunctie van een televisie die sneller vindt.
ConstellatieQAM 16, 32, 64, 128 of 256. Zie capaciteit.
Symbol rateBinnen het bereik van de kaart, ongeveer 1.0–7.14 MS/s.
ModulatorapparaatAutomatisch gevonden. Apparaten die al aan een andere multiplex zijn toegewezen, staan niet in de lijst, omdat een apparaat er maar één kan dragen.
NetwerknaamWordt in de NIT meegestuurd en door sommige televisies tijdens het zoeken getoond. De naam van het pand is een redelijke keuze.
Netwerk-IDIdentificeert het netwerk als geheel. Houd het gelijk voor elke multiplex in één gebouw.
Transportstream-IDIdentificeert deze multiplex binnen het netwerk. Moet per multiplex verschillen.

Zenders die in Castmux bestaan, verschijnen in een pool met beschikbare zenders. Sleep er een naar een multiplexkaart om hem toe te voegen, en sleep binnen de kaart om de volgorde te wijzigen.

De volgorde is niet cosmetisch. De positie van een zender in de multiplex is zijn slot, en het slot bepaalt zowel het blok PID’s dat de service krijgt als zijn service-ID.

Elke elementaire stream in een transportstream heeft een unieke packet identifier nodig, en twee services die dezelfde PID gebruiken, leveren een kapotte multiplex op.

Castmux neemt niet aan wat een zender bevat. Voordat het de multiplex opbouwt, peilt het de eigen multicastuitvoer van de zender en leest het welke elementaire streams die daadwerkelijk bevat — video, elke audiotrack, ondertitelstreams, teletekst. Een vaste indeling aannemen zou eenvoudiger zijn en voortdurend fout gaan: bronnen verschillen in het aantal audiotracks, in de aanwezigheid van ondertitels, en in de vraag of de ladder-trede die een resolutieprofiel kiest dezelfde streams bevat als de master.

Elk slot krijgt vervolgens een blok van 16 PID’s. Zestien is gekozen om een realistisch worstcasescenario te dekken — video, meerdere audiotalen, meerdere ondertiteltracks en teletekst — en de blokken overlappen niet, zodat een wijziging in één service nooit kan botsen met de volgende.

Daaruit volgen twee consequenties, en beide zijn bewust:

  • Bij een service met meer dan 16 elementaire streams wordt het overschot weggelaten. Het alternatief zou zijn doorlopen in het blok van het volgende slot, wat een heel andere zender beschadigt. De zeventiende stream van één service verliezen is een kleinere storing dan de zender ernaast kapotmaken, en het is een storing die beperkt blijft tot waar hij begon.
  • Een zender die niet kan worden gepeild, wordt uit de multiplex weggelaten. Hij wordt niet met geraden PID’s toegevoegd. Een verkeerde gok levert een service op waarvan de PMT naar streams wijst die er niet zijn; televisies tonen dat als een zender die wel afstemt en dan niets laat zien — een storing die lijkt op een kapotte televisie in plaats van een ontbrekende peiling. Een weggelaten zender is direct zichtbaar.

Een DVB-ontvanger heeft service-informatie nodig om een draaggolf te begrijpen. Castmux genereert:

TabelDoelStatus
PATProgram Association Table. Somt de services in de multiplex op en waar de PMT van elke service te vinden is.gegenereerd
PMTProgram Map Table, één per service. Somt de elementaire streams op waaruit de service bestaat, met hun PID's.gegenereerd
SDT-ActualService Description Table voor deze multiplex. Bevat de naam die elke service op de televisie toont.gegenereerd
NIT-ActualNetwork Information Table voor deze multiplex. Declareert het netwerk en de afstemparameters van deze draaggolf.gegenereerd
EITEvent Information Table: de programmagids op het scherm. Wordt meegestuurd voor elke zender die aan een XMLTV-gids is gekoppeld, op een zender met de pass-through-engine; zonder deze tabel levert de gidsknop een leeg raster op. Zie Programmagids (EPG).als een gids is ingesteld

Expliciet vermeld, omdat een installateur elk hiervan redelijkerwijs kan verwachten en het anders pas bij de ingebruikname zou ontdekken:

FunctieWaarom het ertoe doetStatus
LCNLogische kanaalnummers zetten zender 5 op toets 5 van elk toestel in het gebouw, in plaats van in de volgorde waarin elke televisie ze toevallig vond.gepland
Kruisverwijzing in de NITEen televisie die één multiplex vindt, leert uit de NIT daarvan waar de andere zijn, in plaats van de hele band af te zoeken.gepland
TDT / TOTDe Time and Date Table en de Time Offset Table zetten de klok van elke gasttelevisie gelijk vanuit de uitgezonden stream, zodat niemand ze met de hand hoeft in te stellen.gepland

Eén slot kan naar een andere bron worden omgezet zonder dat de draaggolf wegvalt. De multiplex blijft draaien, de andere services worden niet gestoord, en alleen de omgewisselde service verandert wat hij toont.

Dit bestaat omdat het alternatief onaanvaardbaar is in de omgevingen waarvoor dit product bedoeld is. Eén bron wijzigen door de multiplex opnieuw op te bouwen, zou elke televisie in het gebouw zolang op zwart zetten, en in het ergste geval toestellen achterlaten die opnieuw moeten zoeken voor een wijziging die één zender betrof. Ter plekke omwisselen houdt de identiteit van de service intact, zodat televisies dezelfde service met andere inhoud zien doorgaan — en dat is precies wat een zenderwissel is.

Een afzonderlijk slot kan worden gepauzeerd en hervat zonder de rest van de multiplex aan te raken. Handig voor een zender waarvan aan de bron wordt gewerkt, of een die alleen op bepaalde tijden gewenst is.

Een wijziging in de zenderlijst — een zender toevoegen, verwijderen of de volgorde wijzigen — herstart de hele multiplex. Dat is grof, en het is bewust.

De reden is dat de tabellen met service-informatie en de elementaire streams met elkaar moeten overeenkomen. Een multiplex die nog een PAT en SDT uitzendt die de vorige zenderlijst beschrijven terwijl hij de nieuwe draagt, is erger dan een multiplex die even afwezig is: televisies die erop zijn afgestemd, tonen een service die in de tabellen bestaat en geen pakketten heeft, of houden ongemerkt een verouderde naam bij nieuwe inhoud, en geen van beide toestanden lost zich op zonder opnieuw zoeken. Een korte, schone onderbreking laat elke ontvanger daarna in een correcte toestand achter.

Een multiplex die herhaaldelijk kort na elkaar herstart, geeft het op in plaats van eindeloos door te gaan. Een herstartlus op een broadcastdraaggolf is erger dan een draaggolf die plat ligt: elke cyclus laat elke televisie in het gebouw het signaal opnieuw zoeken, en een gestopte multiplex is tenminste een ondubbelzinnige storing die wordt onderzocht. Kijk in de logweergave wat de herstarts veroorzaakte voordat u hem hervat.

Een zender kan niet in twee multiplexen zitten

Section titled “Een zender kan niet in twee multiplexen zitten”

Elke multiplex kent een service-ID toe op basis van het slot dat de zender inneemt. Een zender in twee multiplexen zou tegelijk twee service-identiteiten nodig hebben, en de tabellen die voor elke draaggolf worden gegenereerd, zouden dezelfde inhoud verschillend beschrijven. De gebruikersinterface voorkomt de toewijzing in plaats van het willekeurig op te lossen.

Moet dezelfde inhoud echt op twee draaggolven verschijnen, definieer die dan als twee zenders met aparte bestemmingen. Let op de capaciteitskosten: het zijn twee volledige kopieën van de bitrate, geen gedeelde.

Opnieuw zoeken, en waarom service-identiteit ertoe doet

Section titled “Opnieuw zoeken, en waarom service-identiteit ertoe doet”

Dit is het operationele pijnpunt dat meerdere van de bovenstaande beslissingen bepaalt, dus het verdient een eigen vermelding.

Een televisie slaat de services op die ze bij de laatste zoekactie heeft gevonden, op basis van identiteit. Verandert de identiteit van een service, dan klopt de opgeslagen vermelding niet meer: het toestel toont misschien de verkeerde naam bij de inhoud, toont een service die geen pakketten meer heeft, of raakt de zender gewoon kwijt. De enige betrouwbare oplossing is opnieuw zoeken, op elke getroffen televisie.

In een hotel met tweehonderd kamers betekent opnieuw zoeken dat iemand met een afstandsbediening tweehonderd kamers binnenloopt, of een onderhoudsvenster dat gasten verdringt. Het wordt gemeten in dagen werk en is verreweg de duurste consequentie van welke wijziging op deze pagina dan ook.

Omdat service-ID’s momenteel van de slotvolgorde worden afgeleid, veroorzaakt elke herschikking precies dit. De praktische beperking van de schade is op dit moment: plan de zenderlijst voordat het gebouw wordt afgestemd, laat ruimte voor zenders die u verwacht toe te voegen, en gebruik hot-swap in plaats van herschikken wanneer een bron verandert.

Vastgezette service-identiteit — een service-ID dat aan de zender is gekoppeld in plaats van aan zijn positie, en beschermd tegen onbedoelde wijziging — is gepland, en is de echte oplossing.