Skip to content

CBR for DVB

A modulator does not need an average rate, it needs evenness at the TS packet level: the bandwidth is allocated, and the stream must occupy it exactly, with no dips and no bursts. The same requirement comes from professional receivers and from networks where transport is counted by bandwidth rather than by a per-minute average.

CBR in Mcaster is a property of the outgoing multiplexer, not a separate "enable CBR" button.

What the multiplexer does

  • The target rate is derived from the track bitrates — with roughly 5% headroom for growth and a budget for the service tables.
  • Sparse places are filled with null packets (PID 0x1FFF): the bandwidth is occupied evenly even when the frames arrived in bursts.
  • The PCR is placed from a drift-free clock, so the divergence between PCR and DTS does not accumulate even over many hours of broadcasting.
  • The decoder buffer model (HRD) is accounted for — overflows and underruns are tracked rather than discovered at the receiver.

Evenness is measured against the stream's internal clock (27 MHz), not against wall time: the layout does not depend on how unevenly the frames arrive from the source.

What evenness costs

The three requirements of a multiplex — lay the packets out evenly, never stall, never drop anything — are pairwise satisfiable and jointly are not. Evenness is a claim about the future while the data is a fact about the past: to lay packets out evenly the schedule has to know the pace in advance, and the pace can only be measured from what has already arrived.

In practice this means:

  • A PID with nothing to send yields its slot instead of stopping the multiplex. An audio track announced in the PMT but silent must not hang the video — and it does not.
  • A lagging PID catches up inside the window instead of being dropped. A classic broadcast mux loses data at this point; here the trade is made the other way.
  • The pace is measured from the packed PES, not inferred from the declared bandwidth times a constant.

What follows for the operator: set the output bitrate honestly, with headroom for peaks, rather than to the last bit. An understated bandwidth is not "slightly worse quality", it is a systematically lagging PID.

Set the output tracks

Open the stream, the Transcoder tab. You can start from a preset — say Standard ladder 1080/720/360 + AAC — and edit the rungs from there.

On a rung in the Video (ladder) block:

  • Bitrate (kbps) — the track's target rate. The sum of the tracks plus the service tables is the bandwidth the transport stream will occupy.
  • GOP length and GOP structure — for broadcast the GOP is usually exactly one second: an entry point for the receiver and for splicing. The Unify GOP button aligns it across all rungs.
  • Codec — with the value As is the rung is not re-encoded. If the source already arrived in the right shape, the multiplexer needs no transcoder to lay it out evenly.
  • Height, Rate control and Encoder preset — the rung's other properties.

The Encoding block chooses what does the work: CPU or NVIDIA GPU (with a card selected, or automatically the least loaded one).

Warning

A passthrough rung next to encoded ones degrades the ladder: its GOP and keyframes are not aligned with the other rungs. The panel marks such a rung separately.

Deinterlacing

An interlaced input — SD MPEG-2, broadcast 1080i — encoded into progressive video shows up as a comb. Deinterlace lives in the Decoder block, because it is a property of the input rather than of a rung: the decode happens once, and the resolved picture goes to every output track.

Mode What it does
Automatic (interlaced frames only) the default: the filter is applied to frames the decoder marked as interlaced; a progressive input passes through at no cost
Force (all frames) for sources that lie about interlacing
Off no filter is built, the frames go into the encoder as they are

Deinterlacing does not change the frame rate: one progressive frame per input frame.

Checking

What to look at on the output:

  • the rate at the receiver — it must not wander; a dip means the multiplex had nothing to send;
  • the PCR jitter and the continuity counters — see TR 101 290; an even stream with an incorrect PCR does not help a modulator;
  • the service tables — the receiver must see the service under the expected number, see Outgoing MPEG-TS.

Overriding the tables on an individual destination does not break the CBR: the destination gets a copy of the shared output with rewritten PIDs and tables, while the packet layout and the PCR remain those of the shared multiplex.

What next