Compressed layered bitstream splitter¶
Register name used to load filter: bssplit
This filter is not checked during graph resolution and needs explicit loading.
Filters of this class can connect to each-other.
This filter splits input stream by layers and sublayers
The filter supports AVC|H264, HEVC and VVC stream splitting and is pass-through for other codec types.
Splitting is based on temporalID value (start from 1) and layerID value (start from 0).
For AVC|H264, layerID is the dependency value, or quality value if svcqid
is set.
Each input stream is filtered according to the ltid
option as follows:
- no value set: input stream is split by layerID, i.e. each layer creates an output
all
: input stream is split by layerID and temporalID, i.e. each {layerID,temporalID} creates an outputlID
: input stream is split according to layerlID
value, and temporalID is ignored.tID
: input stream is split according to temporal sub-layertID
value and layerID is ignoredlID.tID
: input stream is split according to layerlID
and sub-layertID
values
Note: A tID value of 0 in ltid
is equivalent to value 1.
Multiple values can be given in ltid
, in which case each value gives the maximum {layerID,temporalID} values for the current layer.
A few examples on an input with 2 layers each with 2 temporal sublayers:
-
ltid=0.2
: this will split the stream in:- one stream with {lID=0,tID=1} and {lID=0,tID=2} NAL units
- one stream with all other layers/substreams
-
ltid=0.1,1.1
: this will split the stream in:- one stream with {lID=0,tID=1} NAL units
- one stream with {lID=0,tID=2}, {lID=1,tID=1} NAL units
- one stream with the rest {lID=0,tID=2}, {lID=1,tID=2} NAL units
-
ltid=0.1,0.2
: this will split the stream in:- one stream with {lID=0,tID=1} NAL units
- one stream with {lID=0,tID=2} NAL units
- one stream with the rest {lID=1,tID=1}, {lID=1,tID=2} NAL units
The filter can also be used on AVC and HEVC DolbyVision streams to split base stream and DV RPU/EL.
The filter does not create aggregator or extractor NAL units.
Options¶
ltid (strl): temporal and layer ID of output streams
svcqid (bool, default: false): use qualityID instead of dependencyID for SVC splitting
sig_ltid (bool, default: false): signal maximum temporal (max_temporal_id
) and layer ID (max_layer_id
) of output streams (mostly used for debug)