Skip to content

Commit a5377f8

Browse files
committed
patch latest changes from github wiki
1 parent dd1318c commit a5377f8

File tree

4 files changed

+32
-6
lines changed

4 files changed

+32
-6
lines changed

docs/Filters/cdcrypt.md

+6-2
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,15 @@ When the file is set per PID, the first `CryptInfo` with the same ID is used, ot
1717
# Options
1818

1919
<a id="cfile">__cfile__</a> (str): crypt file location
20-
<a id="decrypt">__decrypt__</a> (enum, default: _full_): decrypt mode (CENC only)
20+
<a id="decrypt">__decrypt__</a> (enum, default: _full_): decrypt mode (CENC only)
21+
2122
* full: decrypt everything, throwing error if keys are not found
2223
* nokey: decrypt everything for which a key is found, skip decryption otherwise
2324
* skip: decrypt nothing
24-
25+
* pad0: decrypt nothing and replace all crypted bits with 0
26+
* pad1: decrypt nothing and replace all crypted bits with 1
27+
* padsc: decrypt nothing and replace all crypted bytes with start codes
28+
2529
<a id="drop_keys">__drop_keys__</a> (uintl): consider keys with given 1-based indexes as not available (multi-key debug)
2630
<a id="kids">__kids__</a> (strl): define KIDs. If `keys` is empty, consider keys with given KID (as hex string) as not available (debug)
2731
<a id="keys">__keys__</a> (strl): define key values for each of the specified KID

docs/Filters/dasher.md

+22-3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ This filter requires the graph resolver to be activated.
88

99
This filter provides segmentation and manifest generation for MPEG-DASH and HLS formats.
1010
The segmenter currently supports:
11+
1112
- MPD and m3u8 generation (potentially in parallel)
1213
- ISOBMFF, MPEG-2 TS, MKV and raw bitstream segment formats
1314
- override of profiles and levels in manifest for codecs
@@ -43,6 +44,7 @@ Standard DASH replacement strings:
4344
_Note: these strings are not replaced in the manifest templates elements._
4445

4546
Additional replacement strings (not DASH, not generic GPAC replacements but may occur multiple times in template):
47+
4648
* $Init=NAME$: replaced by NAME for init segment, ignored otherwise
4749
* $XInit=NAME$: complete replace by NAME for init segment, ignored otherwise
4850
* $InitExt=EXT$: replaced by EXT for init segment file extensions, ignored otherwise
@@ -51,10 +53,12 @@ Additional replacement strings (not DASH, not generic GPAC replacements but may
5153
* $Segment=NAME$: replaced by NAME for media segments, ignored for init segments
5254
* $SegExt=EXT$: replaced by EXT for media segment file extensions, ignored for init segments
5355
* $FS$ (FileSuffix): replaced by `_trackN` in case the input is an AV multiplex, or kept empty otherwise
56+
5457
_Note: these strings are replaced in the manifest templates elements._
5558

5659
## PID assignment and configuration
57-
To assign PIDs into periods and adaptation sets and configure the session, the segmenter looks for the following properties on each input PID:
60+
To assign PIDs into periods and adaptation sets and configure the session, the segmenter looks for the following properties on each input PID:
61+
5862
* `Representation`: assigns representation ID to input PID. If not set, the default behavior is to have each media component in different adaptation sets. Setting the `Representation` allows explicit multiplexing of the source(s)
5963
* `Period`: assigns period ID to input PID. If not set, the default behavior is to have all media in the same period with the same start time
6064
* `PStart`: assigns period start. If not set, 0 is assumed, and periods appear in the Period ID declaration order. If negative, this gives the period order (-1 first, then -2 ...). If positive, this gives the true start time and will abort DASHing at period end
@@ -71,6 +75,7 @@ _Note: If multiple streams in source, only the first stream will have an AS ID a
7175
* `CropOrigin`: indicates x and y coordinates of video for SRD (size is video size)
7276
* `SRD`: indicates SRD position and size of video for SRD, ignored if `CropOrigin` is set
7377
* `SRDRef`: indicates global width and height of SRD, ignored if `CropOrigin` is set
78+
* `HLSPL`: name of variant playlist, can use templates
7479
* `HLSMExt`: list of extensions to add to master playlist entries, ['foo','bar=val'] added as `,foo,bar=val`
7580
* `HLSVExt`: list of extensions to add to variant playlist, ['#foo','#bar=val'] added as `#foo \n #bar=val`
7681
* Non-dash properties: `Bitrate`, `SAR`, `Language`, `Width`, `Height`, `SampleRate`, `NumChannels`, `Language`, `ID`, `DependencyID`, `FPS`, `Interlaced`, `Codec`. These properties are used to setup each representation and can be overridden on input PIDs using the general PID property settings (cf global help).
@@ -135,9 +140,19 @@ This will layout the `v2` below `v1` using a global SRD size of 1280x720.
135140

136141
The segmenter will create multiplexing filter chains for each representation and will reassign PID IDs so that each media component (video, audio, ...) in an adaptation set has the same ID.
137142

138-
For HLS, the output PID will deliver the master playlist __and__ the variant playlists.
143+
For HLS, the output manifest PID will deliver the master playlist __and__ the variant playlists.
139144
The default variant playlist are $NAME_$N.m3u8, where $NAME is the radical of the output file name and $N is the 1-based index of the variant.
140-
145+
146+
When HLS mode is enabled, the segment [template](#template) is relative to the variant playlist file, which can also be templated.
147+
148+
Example
149+
```
150+
gpac -i av.mp4:#HLSPL=$Type$/index.m3u8 -o dash/live.m3u8:dual:template='$Number$'
151+
```
152+
153+
This will put video segments and playlist in `dash/video/` and audio segments and playlist in `dash/audio/`
154+
155+
141156
## Segmentation
142157
The default behavior of the segmenter is to estimate the theoretical start time of each segment based on target segment duration, and start a new segment when a packet with SAP type 1,2,3 or 4 with time greater than the theoretical time is found.
143158
This behavior can be changed to find the best SAP packet around a segment theoretical boundary using [sbound](#sbound):
@@ -163,6 +178,7 @@ gpac -i source.mp4 -o live.mpd:segdur=2:profile=live:dmode=dynamic:sreg
163178
```
164179

165180
For low latency segmentation with fMP4, you will need to specify the following options:
181+
166182
* cdur: set the fMP4 fragment duration
167183
* asto: set the availability time offset for DASH. This value should be equal or slightly greater than segment duration minus cdur
168184
* llhls: enable low latency for HLS
@@ -211,12 +227,14 @@ The segmenter can take a list of instructions, or Cues, to use for the segmentat
211227

212228
Cue files can be specified for the entire segmenter, or per PID using `DashCue` property.
213229
Cues are given in an XML file with a root element called &lt;DASHCues&gt;, with currently no attribute specified. The children are one or more &lt;Stream&gt; elements, with attributes:
230+
214231
* id: integer for stream/track/PID ID
215232
* timescale: integer giving the units of following timestamps
216233
* mode: if present and value is `edit`, the timestamp are in presentation time (edit list applied) otherwise they are in media time
217234
* ts_offset: integer giving a value (in timescale) to subtract to the DTS/CTS values listed
218235

219236
The children of &lt;Stream&gt; are one or more &lt;Cue&gt; elements, with attributes:
237+
220238
* sample: integer giving the sample/frame number of a sample at which splitting shall happen
221239
* dts: long integer giving the decoding time stamp of a sample at which splitting shall happen
222240
* cts: long integer giving the composition / presentation time stamp of a sample at which splitting shall happen
@@ -238,6 +256,7 @@ The segmenter can be used to generate manifests from already fragmented ISOBMFF
238256
In this case, segment boundaries are attached to each packet starting a segment and used to drive the segmentation.
239257
This can be used with single-track ISOBMFF sources, either single file or multi file.
240258
For single file source:
259+
241260
- if onDemand [profile](#profile) is requested, sources have to be formatted as a DASH self-initializing media segment with the proper sidx.
242261
- templates are disabled.
243262
- [sseg](#sseg) is forced for all profiles except onDemand ones.

docs/Filters/nvdec.md

+3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ This filter may be automatically loaded during graph resolution.
88
This filter decodes MPEG-2, MPEG-4 Part 2, AVC|H264 and HEVC streams through NVidia decoder. It allows GPU frame dispatch or direct frame copy.
99
If the SDK is not available, the configuration key `nvdec@disabled` will be written in configuration file to avoid future load attempts.
1010

11+
The absolute path to cuda lib can be set using the `cuda_lib` option in `core` or `temp` section of the config file, e.g. `-cfg=temp:cuda_lib=PATH_TO_CUDA`.
12+
The absolute path to cuvid lib can be set using the `cuvid_lib` option in `core` or `temp` section of the config file, e.g. `-cfg=temp:cuvid_lib=PATH_TO_CUDA`.
13+
1114

1215
# Options
1316

docs/xmlformats/Common-Encryption.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ The following example shows a simple GPAC DRM system info:
8181
* `selectiveType` : specifies how selective encryption is to be used. The possible values are:
8282
* **None** : no selective encryption, all samples encrypted (this is the default behavior).
8383
* **Clear**: samples are not encrypted but track is signaled as using encryption and sample group seig is used.
84-
* **ForceClear[=N]**: samples are not encrypted, track is signaled as using encryption but no sample groups are used. If `N` is set, only leaves the first N samples in the clear and switch to regular encryption after.
84+
* ForceClear[=N]**: samples are not encrypted, track is signaled as using encryption but no sample groups are used. If `N` is set, only leaves the first N samples in the clear and switch to regular encryption after. If N is 0, all samples are encrypted. If N is -1, no samples are encrypted.
8585
* **RAP** : only Random Access Samples (key frames) will be encrypted. If all media samples are RAPs, this defaults to `None`.
8686
* **Non-RAP** : only non-Random Access Samples (non-key frames) will be encrypted. If all media samples are RAPs, this defaults to `None`.
8787
* **Rand** : random selection of samples to encrypt is performed.

0 commit comments

Comments
 (0)