Provided by: gpac_2.0.0+dfsg1-2build1_amd64 bug

NAME

       gpac - GPAC command-line filter session manager

SYNOPSIS

       gpac [options]FILTER[LINK]FILTER[...]
       gpac is GPAC's command line tool for setting up and running filter chains.

       FILTER:  a  single  filter declaration (e.g., -i file, -o dump, inspect, ...), see gpac -h
       doc.
       [LINK]: a link instruction (e.g., @, @2, @2#StreamType=Visual, ...), see gpac -h doc.
       [options]: one or more option strings, each starting with a - character.
         - an option using a single - indicates an option of gpac (see gpac -hx)  or  of  libgpac
       (see gpac -hx core)
         - an option using -- indicates a global filter or meta-filter (e.g. FFMPEG) option, e.g.
       --block_size=1000 or --profile=Baseline (see gpac -h doc)

       Filter declaration  order  may  impact  the  link  resolver  which  will  try  linking  in
       declaration  order.  Most  of the time for simple graphs, this has no impact. However, for
       complex graphs with no link declarations, this can lead to different results.
       Options do not require any specific order, and may be present anywhere, including  between
       link statements or filter declarations.
       Boolean values do not need any value specified. Other types shall be formatted as opt=val,
       except .I -i, -src, .I -o, -dst and .I -h options.

       The session can be interrupted at any time using ctrl+c, which can also be used to  toggle
       global reporting.

       The possible options for gpac are:

       -mem-track
              enable memory tracker

       -mem-track-stack
              enable memory tracker with stack dumping

       -ltf
              load test-unit filters (used for for unit tests only)

       -sloop (int)
              loop  execution  of  session,  creating  a  session  at  each loop, mainly used for
              testing. If no value is given, loops forever

       -runfor (int)
              run for the given amount of milliseconds

       -runforx (int)
              run for the given amount of milliseconds and exit with no cleanup

       -runfors (int)
              run for the given amount of milliseconds and exit with segfault (tests)

       -runforl (int)
              run for the given amount of milliseconds and wait forever at end (tests)

       -stats
              print stats after execution

       -graph
              print graph after execution

       -k
              enable keyboard interaction from command line

       -r (string)
              enable reporting
              * r: runtime reporting
              * r=FA[,FB]: runtime reporting but only  print  given  filters,  e.g.  r=mp4mx  for
              ISOBMFF multiplexer only
              * r=: only print final report

       -seps (string, default: :=#,!@)
              set the default character sets used to separate various arguments
              - the first char is used to separate argument names
              - the second char, if present, is used to separate names and values
              - the third char, if present, is used to separate fragments for PID sources
              - the fourth char, if present, is used for list separators (sourceIDs, gfreg, ...)
              - the fifth char, if present, is used for boolean negation
              -  the  sixth  char,  if present, is used for LINK directives (see filters help (-h
              doc))

       -i,-src (string)
              specify an input file - see filters help (-h doc)

       -o,-dst (string)
              specify an output file - see filters help (-h doc)

       -ib (string)
              specify an input file to wrap as GF_FileIO object (testing of GF_FileIO)

       -ob (string)
              specify an output file to wrap as GF_FileIO object (testing of GF_FileIO)

       -cl
              force complete mode when no link directive are set - see filters help (-h doc)

       -step
              test step mode in non-blocking session

       -h,-help,-ha,-hx,-hh (string)
              print help. Use -help or -h for basic options, -ha for advanced  options,  -hx  for
              expert options and -hh for all.
              Note: The @ character can be used in place of the * character. String parameter can
              be:
              * empty: print command line options help
              * doc: print the general filter info
              * alias: print the gpac alias syntax
              * log: print the log system help
              *  core:  print  the  supported  libgpac  core   options.   Use   -ha/-hx/-hh   for
              advanced/expert options
              * cfg: print the GPAC configuration help
              * prompt: print the GPAC prompt help when running in interactive mode (see .I -k )
              * modules: print available modules
              * filters: print name of all available filters
              * filters:*: print name of all available filters, including meta filters
              * codecs: print the supported builtin codecs
              * props: print the supported builtin PID and packet properties
              *  props  PNAME:  print  the supported builtin PID and packet properties mentioning
              PNAME
              * colors: print the builtin color names and their values
              * layouts: print the builtin CICP audio channel layout names and their values
              * links: print possible connections between each supported filters (use -hx to view
              src->dst cap bundle detail)
              *  links  FNAME:  print  sources  and  sinks for filter FNAME (either builtin or JS
              filter)
              * FNAME: print filter FNAME info (multiple FNAME can be given)
                - For meta-filters, use FNAME:INST, e.g. ffavin:avfoundation
                - Use * to print info on all filters (big output!), *:*  to  print  info  on  all
              filters including meta filter instances (really big output!)
                - By default only basic filter options and description are shown. Use -ha to show
              advanced options capabilities, -hx for expert options,  -hh  for  all  options  and
              filter capabilities including on filters disabled in this build
              * FNAME.OPT: print option OPT in filter FNAME
              *  OPT:  look  in  filter names and options for OPT and suggest possible matches if
              none found. Use -hx to look for keyword in all option descriptions

       -p (string)
              use indicated profile for the global GPAC config. If  not  found,  config  file  is
              created.  If  a  file  path  is  indicated,  this will load profile from that file.
              Otherwise, this will create a directory of the specified name and store new  config
              there.  Reserved  name 0 means a new profile, not stored to disk. Appending :reload
              to the profile name will force recreating a new configuration file

       -alias (string)
              assign a new alias or remove an alias. Can be specified several  times.  See  alias
              usage (-h alias)

       -aliasdoc (string)
              assign documentation for a given alias (optional). Can be specified several times

       -uncache
              revert all items in GPAC cache directory to their original name and server path

       -js (string)
              specify javascript file to use as controller of filter session

       -wc
              write all core options in the config file unless already set

       -we
              write  all  file extensions in the config file unless already set (useful to change
              some default file extensions)

       -wf
              write all filter options in the config file unless already set

       -wfx
              write all filter options and all meta filter arguments in the  config  file  unless
              already set (large config file !)

       -xopt
              unrecognized  options  and  filters declaration following this option are ignored -
              used to pass arguments to GUI

              The following libgpac core options allow customizing the filter session:

       -dbg-edges
              log edges status in filter graph before dijkstra resolution (for debug). Edges  are
              logged as edge_source(status, weight, src_cap_idx, dst_cap_idx)

       -full-link
              throw error if any PID in the filter graph cannot be linked

       -no-block (Enum, default: no)
              disable blocking mode of filters
              * no: enable blocking mode
              *  fanout:  disable  blocking  on fan-out, unblocking the PID as soon as one of its
              destinations requires a packet
              * all: disable blocking

       -no-reg
              disable regulation (no sleep) in session

       -no-reassign
              disable source filter reassignment in PID graph resolution

       -sched (Enum, default: free)
              set scheduler mode
              * free: lock-free queues except for task list (default)
              * lock: mutexes for queues when several threads
              * freex: lock-free queues including for task lists (experimental)
              * flock: mutexes for queues even when no thread (debug mode)
              * direct: no threads and direct dispatch of tasks whenever possible (debug mode)

       -max-chain (int, default: 6)
              set maximum chain length when resolving filter links. Default value covers for [ in
              ->  ]  dmx -> reframe -> decode -> encode -> reframe -> mx [ -> out]. Filter chains
              loaded for adaptation  (e.g.  pixel  format  change)  are  loaded  after  the  link
              resolution.  Setting the value to 0 disables dynamic link resolution. You will have
              to specify the entire chain manually

       -max-sleep (int, default: 50)
              set maximum sleep time slot in milliseconds when regulation is enabled

       -threads (int)
              set N extra thread for the session. -1 means use all available cores

       -no-probe
              disable data probing on sources and relies  on  extension  (faster  load  but  more
              error-prone)

       -no-argchk
              disable tracking of argument usage (all arguments will be considered as used)

       -blacklist (string)
              blacklist  the  filters listed in the given string (comma-separated list). If first
              character is '-', this is a whitelist, i.e. only filters listed in the given string
              will be allowed

       -no-graph-cache
              disable  internal  caching of filter graph connections. If disabled, the graph will
              be recomputed at each link resolution (lower memory usage but slower)

       -no-reservoir
              disable memory recycling for packets and properties. This uses much less memory but
              stresses the system memory allocator much more

Using Aliases

       The  gpac  command line can become quite complex when many sources or filters are used. In
       order to simplify this, an alias system is provided.

       To assign an alias, use the syntax gpac -alias="NAME VALUE".
       * `NAME`: shall be a single string, with no space.
       * `VALUE`: the list of argument this alias replaces. If not set, the alias is destroyed

       When parsing arguments, the alias will be replace by its value.
       Example
       gpac -alias="output aout vout"

       This allows later audio and video playback using gpac -i src.mp4 output

       Aliases can use arguments from the command line. The allowed syntaxes are:
       * `@{a}`: replaced by the value of the argument with index a after the alias
       * `@{a,b}`: replaced by the value of the arguments with index a and b
       * `@{a:b}`: replaced by the value of the arguments between index a and b
       * `@{-a,b}`: replaced by the value of the arguments with index a and b, inserting  a  list
       separator (comma by default) between them
       *  `@{-a:b}`:  replaced  by  the value of the arguments between index a and b, inserting a
       list separator (comma by default) between them
       * `@{+a,b}`: clones the parent word in the alias for a and b, replacing  this  pattern  in
       each clone by the corresponding argument
       *  `@{+a:b}`: clones the parent word in the alias for each argument between index a and b,
       replacing this pattern in each clone by the corresponding argument

       The specified index can be:
       * forward index: a strictly positive integer, 1 being the first argument after the alias
       * backward index: the value 'n' (or 'N') to indicate the  last  argument  on  the  command
       line.  This  can  be  followed  by  -x to rewind arguments (e.g. @{n-1} is the before last
       argument)

       Before solving aliases, all option arguments are moved at the  beginging  of  the  command
       line. This implies that alias arguments cannot be options.
       Arguments not used by any aliases are kept on the command line, other ones are removed

       Example
       -alias="foo src=@{N} dst=test.mp4"

       The command gpac foo f1 f2 expands to gpac src=f2 dst=test.mp4 f1
       Example
       -alias="list: inspect src=@{+:N}"

       The command gpac list f1 f2 f3 expands to gpac inspect src=f1 src=f2 src=f3
       Example
       -alias="list inspect src=@{+2:N}"

       The command gpac list f1 f2 f3 expands to gpac inspect src=f2 src=f3 f1
       Example
       -alias="plist aout vout flist:srcs=@{-,N}"

       The command gpac plist f1 f2 f3 expands to gpac aout vout flist:srcs="f1,f2,f3"

       Alias documentation can be set using gpac -aliasdoc="NAME VALUE", with NAME the alias name
       and VALUE the documentation.
       Alias documentation will then appear in gpac help.

Configuration file

       GPAC uses a configuration file to modify default options  of  libgpac  and  filters.  This
       configuration file is located in $HOME/.gpac/GPAC.cfg.
       Applications  in  GPAC  can  also specify a different configuration file through the .I -p
       option to indicate a profile. This allows different configurations  for  different  usages
       and simplifies command line typing.
       Example
       gpac -p=foo []

       This will load configuration from $HOME/.gpac/foo/GPAC.cfg, creating it if needed.
       The reserved name 0 is used to disable configuration file writing.
       By  default  the  configuration  file  only  holds  a  few  system  specific  options  and
       directories. It is possible to serialize the entire set of options  to  the  configuration
       file, using .I -wc .I -wf. This should be avoided as the resulting configuration file size
       will be quite large, hence larger memory usage for the applications.
       The options specified in the configuration  file  may  be  overridden  by  the  values  in
       restrict.cfg  file  located  in  GPAC  share  system  directory (e.g. /usr/share/gpac), if
       present; this allows enforcing system-wide configuration values.
       Note: The methods describe in this section apply to any application in  GPAC  transferring
       their arguments to libgpac. This is the case for gpac, MP4Box, MP4Client/Osmo4.

Core options

       The  options  from  libgpac  core can also be assigned though the config file from section
       core using option name without initial dash as key name.
       Example
       [core]threads=2

       Setting this in the config file is equivalent to using -threads=2.
       The options specified at prompt overrides the value of the config file.

Filter options in configuration

       It is  possible  to  alter  the  default  value  of  a  filter  option  by  modifying  the
       configuration  file.  Filter  foo options are stored in section [filter@foo], using option
       name and value as key-value pair. Options specified through the configuration file do  not
       take precedence over options specified at prompt or through alias.
       Example
       [filter@rtpin]interleave=yes

       This will force the rtp input filter to always request RTP over RTSP by default.
       To generate a configuration file with all filters options serialized, use .I -wf.

Global filter options

       It  is  possible to specify options global to multiple filters using --OPTNAME=VAL. Global
       options do not override filter options  but  take  precedence  over  options  loaded  from
       configuration file.
       This will set option OPTNAME, when present, to VAL in any loaded filter.
       Example
       --buffer=100 -i file vout aout

       This is equivalent to specifying vout:buffer=100 aout:buffer=100.
       Example
       --buffer=100 -i file vout aout:buffer=10

       This is equivalent to specifying vout:buffer=100 aout:buffer=10.
       Warning:  This  syntax  only  applies  to  regular  filter options. It cannot be used with
       builtin shortcuts (gfreg, enc, ...).
       Meta-filter options can be set in the same way using the syntax --OPT_NAME=VAL.
       Example
       --profile=Baseline -i file.cmp -o dump.264

       This is equivalent to specifying -o dump.264:profile=Baseline.

       For both syntax, it is possible to specify the filter registry name of the  option,  using
       --FNAME:OPTNAME=VAL or --FNAME@OPTNAME=VAL.
       In  this  case  the  option  will  only be set for filters which are instances of registry
       FNAME. This is used when several registries use same option names.
       Example
       --flist@timescale=100 -i plist1 -i plist2 -o live.mpd

       This will set the timescale option on the playlists filters but not on the dasher filter.

libgpac core options:

       -noprog
              disable progress messages

       -quiet
              disable all messages, including errors

       -proglf
              use new line at each progress messages

       -strict-error,-se
              exit after the first error is reported

       -store-dir (string)
              set storage directory

       -mod-dirs (string list)
              set additional module directories as a semi-colon ; separated list

       -js-dirs (string list)
              set javascript directories

       -no-js-mods (string list)
              disable javascript module loading

       -ifce (string)
              set default multicast interface through interface IP address (default is 127.0.0.1)

       -lang (string)
              set preferred language

       -cfg,-opt (string)
              get or set configuration file value. The string parameter can be formatted as:
              * `section:key=val`: set the key to a new value
              * `section:key=null`, `section:key`: remove the key
              * `section=null`: remove the section
              * no argument: print the entire configuration file
              * `section`: print the given section
              * `section:key`: print the given key in section (section can be set to  *)-  *:key:
              print the given key in all sections

       -no-save
              discard any changes made to the config file upon exit

       -mod-reload
              unload / reload module shared libs when no longer used

       -for-test
              disable all creation/modification dates and GPAC versions in files

       -old-arch
              enable compatibility with pre-filters versions of GPAC

       -ntp-shift (int)
              shift NTP clock by given amount in seconds

       -bs-cache-size (int, default: 512)
              cache size for bitstream read and write from file (0 disable cache, slower IOs)

       -no-check
              disable  compliance  tests for inputs (ISOBMFF for now). This will likely result in
              random crashes

       -unhandled-rejection
              dump unhandled promise rejections

       -cache (string)
              cache directory location

       -proxy-on
              enable HTTP proxy

       -proxy-name (string)
              set HTTP proxy address

       -proxy-port (int, default: 80)
              set HTTP proxy port

       -maxrate (int)
              set max HTTP download rate in bits per sec. 0 means unlimited

       -no-cache
              disable HTTP caching

       -offline-cache
              enable offline HTTP caching (no re-validation of existing resource in cache)

       -clean-cache
              indicate if HTTP cache should be clean upon launch/exit

       -cache-size (int, default: 100M)
              specify cache size in bytes

       -head-timeout (int, default: 5000)
              set HTTP head request timeout in milliseconds

       -req-timeout (int, default: 20000)
              set HTTP/RTSP request timeout in milliseconds

       -no-timeout
              ignore HTTP 1.1 timeout in keep-alive

       -broken-cert
              enable accepting broken SSL certificates

       -user-agent,-ua (string)
              set user agent name for HTTP/RTSP

       -user-profileid (string)
              set user profile ID (through X-UserProfileID entity header) in HTTP requests

       -user-profile (string)
              set user profile filename. Content of file is appended as  body  to  HTTP  HEAD/GET
              requests, associated Mime is text/xml

       -query-string (string)
              insert query string (without ?) to URL on requests

       -dm-threads
              force using threads for async download requests rather than session scheduler

       -cte-rate-wnd (int, default: 20)
              set  window  analysis  length  in  milliseconds  for  chunk-transfer  encoding rate
              estimation

       -no-h2
              disable HTTP2

       -no-h2c
              disable HTTP2 upgrade (i.e. over non-TLS)

       -h2-copy
              enable intermediate copy of data in nghttp2 (default is disabled but may report  as
              broken frames in wireshark)

       -dbg-edges
              log  edges status in filter graph before dijkstra resolution (for debug). Edges are
              logged as edge_source(status, weight, src_cap_idx, dst_cap_idx)

       -full-link
              throw error if any PID in the filter graph cannot be linked

       -no-block (Enum, default: no)
              disable blocking mode of filters
              * no: enable blocking mode
              * fanout: disable blocking on fan-out, unblocking the PID as soon  as  one  of  its
              destinations requires a packet
              * all: disable blocking

       -no-reg
              disable regulation (no sleep) in session

       -no-reassign
              disable source filter reassignment in PID graph resolution

       -sched (Enum, default: free)
              set scheduler mode
              * free: lock-free queues except for task list (default)
              * lock: mutexes for queues when several threads
              * freex: lock-free queues including for task lists (experimental)
              * flock: mutexes for queues even when no thread (debug mode)
              * direct: no threads and direct dispatch of tasks whenever possible (debug mode)

       -max-chain (int, default: 6)
              set maximum chain length when resolving filter links. Default value covers for [ in
              -> ] dmx -> reframe -> decode -> encode -> reframe -> mx [ -> out].  Filter  chains
              loaded  for  adaptation  (e.g.  pixel  format  change)  are  loaded  after the link
              resolution. Setting the value to 0 disables dynamic link resolution. You will  have
              to specify the entire chain manually

       -max-sleep (int, default: 50)
              set maximum sleep time slot in milliseconds when regulation is enabled

       -threads (int)
              set N extra thread for the session. -1 means use all available cores

       -no-probe
              disable  data  probing  on  sources  and  relies on extension (faster load but more
              error-prone)

       -no-argchk
              disable tracking of argument usage (all arguments will be considered as used)

       -blacklist (string)
              blacklist the filters listed in the given string (comma-separated list).  If  first
              character is '-', this is a whitelist, i.e. only filters listed in the given string
              will be allowed

       -no-graph-cache
              disable internal caching of filter graph connections. If disabled, the  graph  will
              be recomputed at each link resolution (lower memory usage but slower)

       -no-reservoir
              disable memory recycling for packets and properties. This uses much less memory but
              stresses the system memory allocator much more

       -switch-vres
              select smallest video resolution larger than  scene  size,  otherwise  use  current
              video resolution

       -hwvmem (Enum, default: auto)
              specify  (2D rendering only) memory type of main video backbuffer. Depending on the
              scene type, this may drastically change the playback speed
              * always: always on hardware
              * never: always on system memory
              * auto: selected by GPAC based on content type (graphics or video)

       -pref-yuv4cc (string)
              set preferred YUV 4CC for overlays (used by DirectX only)

       -offscreen-yuv
              indicate if offscreen yuv->rgb is enabled. can be set to false to force disabling

       -overlay-color-key (string)
              color to use for overlay keying, hex format

       -gl-bits-comp (int, default: 8)
              number of bits per color component in OpenGL

       -gl-bits-depth (int, default: 16)
              number of bits for depth buffer in OpenGL

       -gl-doublebuf
              enable OpenGL double buffering

       -sdl-defer
              use defer rendering for SDL

       -no-colorkey
              disable color keying at the video output level

       -glfbo-txid (int)
              set output texture ID  when  using  glfbo  output.  The  OpenGL  context  shall  be
              initialized and gf_term_process shall be called with the OpenGL context active

       -video-output (string)
              indicate  the  name  of  the  video output module to use (see gpac -h modules). The
              reserved name glfbo is used in player mode to draw in the OpenGL texture identified
              by  .I  glfbo-txid.  In this mode, the application is responsible for sending event
              to the terminal

       -audio-output (string)
              indicate the name of the audio output module to use

       -alsa-devname (string)
              set ALSA dev name

       -force-alsarate (int)
              force ALSA and OSS output sample rate

       -ds-disable-notif
              disable DirectSound audio buffer notifications when supported

       -font-reader (string)
              indicate name of font reader module

       -font-dirs (string)
              indicate comma-separated list of directories to scan for fonts

       -rescan-fonts
              indicate the font directory must be rescanned

       -wait-fonts
              wait for SVG fonts to be loaded before displaying frames

       -webvtt-hours
              force writing hour when serializing WebVTT

       -rmt
              enable  profiling  through  Remotery.  A  copy  of  Remotery   visualizer   is   in
              gpac/share/vis, usually installed in /usr/share/gpac/vis or Program Files/GPAC/vis

       -rmt-port (int, default: 17815)
              set remotery port

       -rmt-reuse
              allow remotery to reuse port

       -rmt-localhost
              make remotery only accepts localhost connection

       -rmt-sleep (int, default: 10)
              set remotery sleep (ms) between server updates

       -rmt-nmsg (int, default: 10)
              set remotery number of messages per update

       -rmt-qsize (int, default: 131072)
              set remotery message queue size in bytes

       -rmt-log
              redirect logs to remotery (experimental, usually not well handled by browser)

       -rmt-ogl
              make remotery sample opengl calls

       -m2ts-vvc-old
              hack for old TS streams using 0x32 for VVC instead of 0x33

       -piff-force-subsamples
              hack   for   PIFF  PSEC  files  generated  by  0.9.0  and  1.0  MP4Box  with  wrong
              subsample_count inserted for audio

       -vvdec-annexb
              hack for old vvdec+libavcodec supporting only annexB format

libgpac logs options:

       -noprog
              disable progress messages

       -quiet
              disable all messages, including errors

       -log-file,-lf (string)
              set output log file

       -log-clock,-lc
              log time in micro sec since start time of GPAC before each log line except for  app
              tool

       -log-utc,-lu
              log UTC time in ms before each log line except for app tool

       -logs (string)
              set log tools and levels.

              You can independently log different tools involved in a session.
              log_args is formatted as a colon (':') separated list of toolX[:toolZ]@levelX
              levelX can be one of:
              * quiet: skip logs
              * error: logs only error messages
              * warning: logs error+warning messages
              * info: logs error+warning+info messages
              * debug: logs all messages

              toolX can be one of:
              * core: libgpac core
              * mutex: log all mutex calls
              * mem: GPAC memory tracker
              * module: GPAC modules (av out, font engine, 2D rasterizer)
              * filter: filter session debugging
              * sched: filter session scheduler debugging
              * codec: codec messages (used by encoder and decoder filters)
              * coding: bitstream formats (audio, video, scene)
              *   container:   container   formats   (ISO   File,   MPEG-2   TS,  AVI,  ...)  and
              multiplexer/demultiplexer filters
              * network: TCP/UDP sockets and TLS
              * http: HTTP traffic
              * cache: HTTP cache subsystem
              * rtp: RTP traffic
              * dash: HTTP streaming logs
              * route: ROUTE (ATSC3) debugging
              * media: messages from generic filters and reframer/rewriter filters
              * parser: textual parsers (svg, xmt, bt, ...)
              * mmio: I/O management (AV devices, file, pipes, OpenGL)
              * audio: audio renderer/mixer/output
              * script: script engine except console log
              * console: script console log
              * scene: scene graph and scene manager
              * compose: composition engine (2D, 3D, etc)
              * ctime: media and SMIL timing info from composition engine
              * interact: interaction messages (UI events  and  triggered  DOM  events  and  VRML
              route)
              * rti: run-time stats of compositor
              * all: all tools logged - other tools can be specified afterwards.
              The special keyword ncl can be set to disable color logs.
              The special keyword strict can be set to exit at first error.

              Example
              -logs=all@info:dash@debug:ncl

              This moves all log to info level, dash to debug level and disable color logs

       -proglf
              use new line at each progress messages

General

       Filters  are  configurable  processing  units  consuming and producing data packets. These
       packets are carried between filters through a data channel called PID. A PID is in  charge
       of allocating/tracking data packets, and passing the packets to the destination filter(s).
       A filter output PID may be connected to zero or more  filters.  This  fan-out  is  handled
       internally by GPAC (no such thing as a tee filter in GPAC).
       Note:  When  a  PID cannot be connected to any filter, a warning is thrown and all packets
       dispatched on this PID will be destroyed. The session may however  still  run,  unless  .I
       -full-link is set.

       Each  output  PID carries a set of properties describing the data it delivers (e.g. width,
       height, codec, ...). Properties can be built-in (see gpac -h  props  ),  or  user-defined.
       Each  PID  tracks its properties changes and triggers filter reconfiguration during packet
       processing. This allows the filter chain to  be  reconfigured  at  run  time,  potentially
       reloading part of the chain (e.g. unload a video decoder when switching from compressed to
       uncompressed sources).

       Each filter exposes a set of argument to configure itself, using property types and values
       described  as strings formatted with separators. This help is given with default separator
       sets :=#,@ to specify filters, properties and options. Use .I -seps to change them.

Property and filter option format

       * boolean: formatted as yes,true,1 or no,false,0
       * enumeration (for filter arguments only): must use  the  syntax  given  in  the  argument
       description, otherwise value 0 (first in enum) is assumed.
       *  1-dimension (numbers, floats, ints...): formatted as value[unit], where unit can be k,K
       (x 1000) or m,M (x 1000000) or g,G (x 1000000000) or sec (x 1000) or  min  (x  60000).  +I
       means max float/int/uint value, -I min float/int/uint value.
       *  fraction: formatted as num/den or num-den or num, in which case the denominator is 1 if
       num is an integer, or 1000000 if num is a floating-point value.
       * unsigned 32 bit integer: formatted as number or hexadecimal using the format 0xAABBCCDD.
       *  N-dimension  (vectors):  formatted  as  DIM1xDIM2[xDIM3[xDIM4]]  values,  without  unit
       multiplier.
       * string: formatted as:
         * `value`: copies value to string.
         * `file@FILE`: load string from local FILE (opened in binary mode).
         *  `bxml@FILE`:  binarize  XML  from  local  FILE  and  set  property type to data - see
       https://wiki.gpac.io/NHML-Format.
       * data: formatted as:
         * `size@address`: constant data block, not internally copied; size gives the size of the
       block, address the data pointer.
         * `0xBYTESTRING`: data block specified in hexadecimal, internally copied.
         * `file@FILE`: load data from local FILE (opened in binary mode).
         * `bxml@FILE`: binarize XML from local FILE - see https://wiki.gpac.io/NHML-Format.
         * `b64@DATA`: load data from base-64 encoded DATA.
       * pointer: pointer address as formatted by %p in C.
       * string lists: formatted as val1,val2[,...]. Each value can also use file@FILE syntax.
       * integer lists: formatted as val1,val2[,...]
       Note: The special characters in property formats (0x,/,-,+I,-I,x) cannot be configured.

Filter declaration [FILTER]

   Generic declaration
       Each  filter is declared by its name, with optional filter arguments appended as a list of
       colon-separated name=value pairs. Additional syntax is provided for:
       * boolean: value can be omitted, defaulting to true (e.g. :noedit).  Using  !  before  the
       name negates the result (e.g. :!moof_first)
       * enumerations: name can be omitted, e.g. :disp=pbo is equivalent to :pbo.

       When  string parameters are used (e.g. URLs), it is recommended to escape the string using
       the keyword gpac.
       Example
       filter:ARG=http://foo/bar?yes:gpac:opt=VAL

       This will properly extract the URL.
       Example
       filter:ARG=http://foo/bar?yes:opt=VAL

       This will fail to extract it and keep :opt=VAL as part of the URL.
       The escape mechanism is not needed for local source, for which file  existence  is  probed
       during  argument  parsing.  It  is also not needed for builtin protocol handlers (avin://,
       video://, audio://, pipe://)
       For tcp:// and udp:// protocols, the escape is not needed if  a  trailing  /  is  appended
       after the port number.
       Example
       -i tcp://127.0.0.1:1234:OPT

       This will fail to extract the URL and options.
       Example
       -i tcp://127.0.0.1:1234/:OPT

       This will extract the URL and options.
       Note:  one  trick  to  avoid the escape sequence is to declare the URLs option at the end,
       e.g. f1:opt1=foo:url=http://bar, provided you have only one URL parameter  to  specify  on
       the filter.

       It  is  possible  to  disable  option  parsing  (for  string  options)  by duplicating the
       separator.
       Example
       filter::opt1=UDP://IP:PORT/:someopt=VAL::opt2=VAL2

       This will pass UDP://IP:PORT/:someopt=VAL to opt1 without inspecting it, and VAL2 to opt2.

   Source and Sink filters
       Source and sink filters do not need to be addressed by the filter name, specifying src= or
       dst=  instead  is  enough.  You can also use the syntax -src URL or -i URL for sources and
       -dst URL or -o URL for destination, this allows prompt completion in shells.
       Example
       "src=file.mp4" or "-src file.mp4" or  "-i file.mp4"

       This will find a filter (for example fin) able to load file.mp4. The same  result  can  be
       achieved by using fin:src=file.mp4.
       Example
       "dst=dump.yuv" or "-dst dump.yuv" or "-o dump.yuv"

       This  will  dump  the  video content in dump.yuv. The same result can be achieved by using
       fout:dst=dump.yuv.

       Specific source or  sink  filters  may  also  be  specified  using  filterName:src=URL  or
       filterName:dst=URL.

       The  src=  and  dst=  syntaxes can also be used in alias for dynamic argument cloning (see
       gpac -hx alias).

   Forcing specific filters
       There is a special option called gfreg which allows specifying preferred  filters  to  use
       when handling URLs.
       Example
       src=file.mp4:gfreg=ffdmx,ffdec

       This will use ffdmx to read file.mp4 and ffdec to decode it.
       This can be used to test a specific filter when alternate filter chains are possible.

   Specifying encoders and decoders
       By default filters chain will be resolved without any decoding/encoding if the destination
       accepts the desired format. Otherwise, decoders/encoders will  be  dynamically  loaded  to
       perform the conversion, unless dynamic resolution is disabled. There is a special shortcut
       filter name for encoders enc allowing to match a filter providing  the  desired  encoding.
       The parameters for enc are:
       *  c=NAME:  identifies  the  desired codec. NAME can be the GPAC codec name or the encoder
       instance for ffmpeg/others
       * b=UINT, rate=UINT, bitrate=UINT: indicates the bitrate in bits per second
       * g=UINT, gop=UINT: indicates the GOP size in frames
       * pfmt=NAME: indicates the target pixel format name (see properties (-h props)  )  of  the
       source, if supported by codec
       * all_intra=BOOL: indicates all frames should be intra frames, if supported by codec

       Other  options  will be passed to the filter if it accepts generic argument parsing (as is
       the case for ffmpeg).
       The shortcut syntax c=TYPE (e.g. c=aac:opts) is also supported.

       Example
       gpac  -i   dump.yuv:size=320x240:fps=25   enc:c=avc:b=150000:g=50:cgop=true:fast=true   -o
       raw.264

       This  creates  a  25 fps AVC at 175kbps with a gop duration of 2 seconds, using closed gop
       and fast encoding settings for ffmpeg.

       The inverse operation (forcing a decode to happen) is possible using the reframer filter.
       Example
       gpac -i file.mp4 reframer:raw=av -o null

       This will force decoding media from file.mp4 and trash (send to null) the result (doing  a
       decoder benchmark for example).

   Escaping option separators
       When  a  filter  uses  an option defined as a string using the same separator character as
       gpac, you can either modify the set of separators, or escape the separator by  duplicating
       it.  The  options enclosed by duplicated separator are not parsed. This is mostly used for
       meta filters, such as ffmpeg, to pass options to sub-filters such as libx264 (cf  x264opts
       parameter).
       Example
       f:a=foo:b=bar

       This will set option a to foo and option b to bar on the filter.
       Example
       f::a=foo:b=bar

       This will set option a to foo:b=bar on the filter.
       Example
       f:a=foo::b=bar:c::d=fun

       This will set option a to foo, b to bar:c and the option d to fun on the filter.

Filter linking [LINK]

       Each  filter exposes one or more sets of capabilities, called capability bundle, which are
       property type and values that must be matched or excluded by connecting PIDs.
       To check the possible sources and destination for a filter FNAME, use gpac -h links FNAME

       The filter graph resolver uses this information together with the PID properties  to  link
       the different filters.

       Link directives, when provided, specify which source a filter can accept connections from.
       They do not specify which destination a filter can connect to.

   Default filter linking
       When  no  link  instructions  are  given (see below), the default linking strategy used is
       either implicit mode (default in gpac) or complete mode (if .I -cl is set).
       Each PID is checked for possible connection to all defined filters, in  their  declaration
       order.
       For  each  filter  DST  accepting a connection from the PID, directly or with intermediate
       filters:
       - if DST filter has link directives, use them to allow or reject PID connection.
       - otherwise, if complete mode is enabled, allow connection.
       - otherwise (implicit mode):
        - if DST is not a sink and is the first matching filter with  no  link  directive,  allow
       connection.
        -  otherwise,  if  DST  is  not  a sink and is not the first matching filter with no link
       directive, reject connection.
        - otherwise (DST is a sink) and no previous  connections  to  a  non-sink  filter,  allow
       connection.

       Example
       gpac -i file.mp4 c=avc -o output

       With this setup in implicit mode:
       - if the file has a video PID, it will connect to enc but not to output. The output PID of
       enc will connect to output.
       - if the file has other PIDs than video, they will  connect  to  output,  since  this  enc
       filter accepts only video.

       Example
       gpac -cl -i file.mp4 c=avc -o output

       With this setup in complete mode:
       -  if  the file has a video PID, it will connect both to enc and to output, and the output
       PID of enc will connect to output.
       - if the file has other PIDs than video, they will connect to output.

       Furthermore in implicit mode, filter connections are restricted to filters defined between
       the last source and the sink(s).
       Example
       gpac -i video1 reframer:saps=1 -i video2 ffsws:osize=128x72 -o output

       This will connect:
       -  video1  to  reframer  then  reframer  to  output  but  will  prevent  reframer to ffsws
       connection.
       - video2 to ffsws then ffsws to output but will prevent video2 to reframer connection.

       Example
       gpac -i video1 -i video2 reframer:saps=1 ffsws:osize=128x72 -o output

       This will connect video1 AND video2 to reframer->ffsws->output

       The implicit mode allows specifying linear processing chains (no PID  fan-out  except  for
       final output(s)) without link directives, simplifying command lines for common cases.
       Warning: Argument order really matters in implicit mode!

       Example
       gpac -i file.mp4 c=avc c=aac -o output

       If the file has a video PID, it will connect to c=avc but not to output. The output PID of
       c=avc will connect to output.
       If the file has an audio PID, it will connect to c=aac but not to output. The  output  PID
       of c=aac will connect to output.
       If the file has other PIDs than audio or video, they will connect to output.

       Example
       gpac -i file.mp4 ffswf=osize:128x72 c=avc resample=osr=48k c=aac -o output

       This will force:
       -      SRC(video)->ffsws->enc(video)->output      and      prevent     SRC(video)->output,
       SRC(video)->enc(video) and ffsws->output connections which would happen in complete mode.
       -     SRC(audio)->resample->enc(audio)->output     and     prevent     SRC(audio)->output,
       SRC(audio)->enc(audio)  and  resample->output  connections  which would happen in complete
       mode.

   Quick links
       Link between filters may be manually specified. The syntax is an  @  character  optionally
       followed by an integer (0 if omitted).
       This  indicates  that  the following filter specified at prompt should be linked only to a
       previous listed filter.
       The optional integer is a 0-based index to the previous filter declarations, 0  indicating
       the previous filter declaration, 1 the one before the previous declaration, ...).
       If  @@ is used instead of @, the optional integer gives the filter index starting from the
       first filter (index 0) specified in command line.
       Several link directives can be given for a filter.
       Example
       fA fB @1 fC

       This indicates that fC only accepts inputs from fA.
       Example
       fA fB fC @1 @0 fD

       This indicates that fD only accepts inputs from fB and fC.
       Example
       fA fB fC ... @@1 fZ

       This indicates that fZ only accepts inputs from fB.

   Complex links
       The @ link directive is just a quick shortcut to set the following filter arguments:
       * FID=name: assigns an identifier to the filter
       * SID=name1[,name2...]: sets a list of filter identifiers, or sourceIDs,  restricting  the
       list of possible inputs for a filter.

       Example
       fA fB @1 fC

       This is equivalent to fA:FID=1 fB fC:SID=1.
       Example
       fA:FID=1 fB fC:SID=1

       This indicates that fC only accepts input from fA, but fB might accept inputs from fA.
       Example
       fA:FID=1 fB:FID=2 fC:SID=1 fD:SID=1,2

       This indicates that fD only accepts input from fA and fB and fC only from fA
       Note: A filter with sourceID set cannot get input from filters with no IDs.

       A sourceID name can be further extended using fragment identifier (# by default):
       * name#PIDNAME: accepts only PID(s) with name PIDNAME
       *  name#TYPE:  accepts  only PIDs of matching media type. TYPE can be audio, video, scene,
       text, font, meta
       * name#TYPEN: accepts only N (1-based index) PID of matching type from source (e.g. video2
       to only accept second video PID)
       * name#TAG=VAL: accepts the PID if its parent filter has no tag or a tag matching VAL
       * name#P4CC=VAL: accepts only PIDs with builtin property of type P4CC and value VAL.
       * name#PName=VAL: same as above, using the builtin name corresponding to the property.
       * name#AnyName=VAL: same as above, using the name of a non built-in property.
       *  name#Name=OtherPropName:  compares  the value with the value of another property of the
       PID. The matching will fail if the value to compare to is not present  or  different  from
       the value to check. The property to compare with shall be a built-in property.
       If  the  property is not defined on the PID, the property is matched. Otherwise, its value
       is checked against the given value.

       The following modifiers for comparisons are allowed (for any fragment format using =):
       * name#P4CC=!VAL: accepts only PIDs with property NOT matching VAL.
       * name#P4CC-VAL: accepts only  PIDs  with  property  strictly  less  than  VAL  (only  for
       1-dimension number properties).
       *  name#P4CC+VAL:  accepts  only  PIDs  with  property strictly greater than VAL (only for
       1-dimension number properties).

       A sourceID name can also use wildcard or be empty to match a property  regardless  of  the
       source filter.
       Example
       fA fB:SID=*#ServiceID=2
       fA fB:SID=#ServiceID=2

       This  indicates  to  match  connection  between  fA  and fB only for PIDs with a ServiceID
       property of 2.
       These extensions also work with the LINK @ shortcut.
       Example
       fA fB @1#video fC

       This indicates that fC only accepts inputs from fA, and of type video.
       Example
       gpac -i img.heif @#ItemID=200 vout

       This indicates to connect to vout only PIDs with ItemID property equal to 200.
       Example
       gpac -i vid.mp4 @#PID=1 vout

       This indicates to connect to vout only PIDs with ID property equal to 1.
       Example
       gpac -i vid.mp4 @#Width=640 vout

       This indicates to connect to vout only PIDs with Width property equal to 640.
       Example
       gpac -i vid.mp4 @#Width-640 vout

       This indicates to connect to vout only PIDs with Width property less than 640
       Example
       gpac -i vid.mp4 @#ID=ItemID#ItemNumber=1 vout

       This will connect to vout only PID with an ID property  equal  to  ItemID  property  (keep
       items, discard tracks) and an Item number of 1 (first item).

       Multiple fragment can be specified to check for multiple PID properties.
       Example
       gpac -i vid.mp4 @#Width=640#Height+380 vout

       This  indicates  to  connect to vout only PIDs with Width property equal to 640 and Height
       greater than 380.

       Warning: If a PID directly connects to one or more explicitly loaded filters,  no  further
       dynamic  link resolution will be done to connect it to other filters with no sourceID set.
       Link directives should be carefully setup.
       Example
       fA @ reframer fB

       If fB accepts inputs provided by fA but reframer does not, this will link  fA  PID  to  fB
       filter since fB has no sourceID.
       Since  the PID is connected, the filter engine will not try to solve a link between fA and
       reframer.

       An exception is made for local files: by default, a local file destination  will  force  a
       remultiplex of input PIDs from a local file.
       Example
       gpac -i file.mp4 -o dump.mp4

       This  will  prevent  direct connection of PID of type file to dst file.mp4, remultiplexing
       the file.

       The special option nomux is  used  to  allow  direct  connections  (ignored  for  non-sink
       filters).
       Example
       gpac -i file.mp4 -o dump.mp4:nomux

       This will result in a direct file copy.

       This  only  applies  to  local files destination. For pipes, sockets or other file outputs
       (HTTP, ROUTE):
       - direct copy is enabled by default
       - nomux=0 can be used to force remultiplex

   Sub-session tagging
       Filters may be assigned to a sub-session using :FS=N, with N a positive integer.
       Filters belonging to different sub-sessions may only link to each-other:
       - if explicitly allowed through sourceID directives (@ or SID)
       - or if they have the same sub-session identifier

       This is mostly used for implicit mode in gpac: each first source filter specified after  a
       sink filter will trigger a new sub-session.
       Example
       gpac -i in1.mp4 -i in2.mp4 -o out1.mp4 -o out2.mp4

       This will result in both inputs multiplexed in both outputs.
       Example
       gpac -i in1.mp4 -o out1.mp4 -i in2.mp4 -o out2.mp4

       This  will  result  in  in1  mixed  to  out1 and in2 mixed to out2, these last two filters
       belonging to a different sub-session.

Arguments inheriting

       Unless explicitly disabled (see .I -max-chain), the filter engine will resolve implicit or
       explicit (LINK) connections between filters and will allocate any filter chain required to
       connect the filters. In doing so, it loads new filters with arguments inherited from  both
       the source and the destination.
       Example
       gpac -i file.mp4:OPT -o file.aac -o file.264

       This will pass the :OPT to all filters loaded between the source and the two destinations.
       Example
       gpac -i file.mp4 -o file.aac:OPT -o file.264

       This  will  pass  the  :OPT  to  all  filters  loaded  between the source and the file.aac
       destination.
       Note: the destination arguments inherited are the arguments placed AFTER the dst= option.
       Example
       gpac -i file.mp4 fout:OPTFOO:dst=file.aac:OPTBAR

       This will pass the :OPTBAR to all filters loaded  between  file.mp4  source  and  file.aac
       destination, but not OPTFOO.
       Arguments  inheriting  can  be  stopped  by  using  the keyword gfloc: arguments after the
       keyword will not be inherited.
       Example
       gpac -i file.mp4 -o file.aac:OPTFOO:gfloc:OPTBAR -o file.264

       This will pass :OPTFOO  to  all  filters  loaded  between  file.mp4  source  and  file.aac
       destination, but not OPTBAR
       Arguments  are  by  default  tracked to check if they were used by the filter chain, and a
       warning is thrown if this is not the case.
       It may be useful to specify arguments which may not be consumed  depending  on  the  graph
       resolution; the specific keyword gfopt indicates that arguments after the keyword will not
       be tracked.
       Example
       gpac -i file.mp4 -o file.aac:OPTFOO:gfopt:OPTBAR -o file.264

       This will warn if OPTFOO is not consumed, but will not track OPTBAR.

       A filter may be assigned a name (for inspection purposes,  not  inherited)  using  :N=name
       option.  This  name  is  not  used in link resolution and may be changed at runtime by the
       filter instance.

       A filter may be assigned a tag (any string) using :TAG=name option. This tag does not need
       to  be  unique,  and  can  be  used  to  exclude  filter  in link resolution. Tags are not
       inherited, therefore dynamically loaded filters never have a tag.

URL templating

       Destination URLs can be dynamically constructed  using  templates.  Pattern  $KEYWORD$  is
       replaced  in  the  template  with the resolved value and $KEYWORD%%0Nd$ is replaced in the
       template with the resolved integer, padded with up to N zeros if needed.
       KEYWORD is case sensitive, and may be present multiple  times  in  the  string.  Supported
       KEYWORD:
       * num: replaced by file number if defined, 0 otherwise
       * PID: ID of the source PID
       * URL: URL of source file
       * File: path on disk for source file; if not found, use URL if set, or PID name otherwise
       * Type: name of stream type of PID (video, audio ...)
       * p4cc=ABCD: uses PID property with 4CC value ABCD
       * pname=VAL: uses PID property with name VAL
       * OTHER: locates property 4CC for the given name, or property name if no 4CC matches.

       $$ is an escape for $

       Templating can be useful when encoding several qualities in one pass.
       Example
       gpac   -i   dump.yuv:size=640x360  vcrop:wnd=0x0x320x180  c=avc:b=1M  @2  c=avc:b=750k  -o
       dump_$CropOrigin$x$Width$x$Height$.264:clone

       This will create a cropped version of the source, encoded in AVC at 1M, and a full version
       of  the  content  in  AVC  at  750k.  Outputs will be dump_0x0x320x180.264 for the cropped
       version and dump_0x0x640x360.264 for the non-cropped one.

Cloning filters

       When a filter accepts a single connection and has a  connected  input,  it  is  no  longer
       available  for  dynamic  resolution.  There may be cases where this behavior is undesired.
       Take a HEIF file with N items and do:
       Example
       gpac -i img.heif -o dump_$ItemID$.jpg

       In this case, only one item (likely the first declared in the file) will  connect  to  the
       destination.
       Other items will not be connected since the destination only accepts one input PID.
       There is a special option clone allowing filters to be cloned with the same arguments. The
       cloned filters have the same ID as the original one.
       Example
       gpac -i img.heif -o dump_$ItemID$.jpg:clone

       In this case, the destination will be cloned for each item, and all will  be  exported  to
       different JPEGs thanks to URL templating.
       Example
       gpac -i vid.mpd c=avc:FID=1:clone -o transcode.mpd:SID=1

       In  this  case,  the  encoder  will  be  cloned for each video PIDs in the source, and the
       destination will only use PIDs coming from the encoders.

       When implicit linking is enabled,  all  filters  are  by  default  clonable.  This  allows
       duplicating the processing for each PIDs of the same type.
       Example
       gpac -i dual_audio resample:osr=48k c=aac -o dst

       The resampler filter will be cloned for each audio PID, and the encoder will be cloned for
       each resampler output.
       You can explicitly deactivate the cloning instructions:
       Example
       gpac -i dual_audio resample:osr=48k:clone=0 c=aac -o dst

       The first audio will connect to the resample filter, the second to the enc filter and  the
       resample output will connect to a clone of the enc filter.

Templating filter chains

       There  can be cases where the number of desired outputs depends on the source content, for
       example dumping a multiplex of N services into N  files.  When  the  destination  involves
       multiplexing  the  input  PIDs, the :clone option is not enough since the multiplexer will
       always accept the input PIDs.
       To handle this, it is possible to use a PID property name in the sourceID of a filter with
       the  value  * or an empty value. In this case, whenever a new PID with a new value for the
       property is found, the filter with such sourceID will be dynamically cloned.
       Warning: This feature should only be called with a single property set to * (or empty) per
       source ID, results are undefined otherwise.
       Example
       gpac -i source.ts -o file_$ServiceID$.mp4:SID=*#ServiceID=*
       gpac -i source.ts -o file_$ServiceID$.mp4:SID=#ServiceID=

       In  this case, each new ServiceID value found when connecting PIDs to the destination will
       create a new destination file.

       Cloning in implicit linking mode applies to output as well:
       Example
       gpac -i dual_audio -o dst_$PID$.aac

       Each audio track will be dumped to aac (potentially reencoding if needed).

Assigning PID properties

       It is possible to define properties on output PIDs that will be declared by a filter. This
       allows  tagging parts of the graph with different properties than other parts (for example
       ServiceID). The syntax is the same as filter option, and uses the  fragment  separator  to
       identify properties, e.g. #Name=Value.
       This  sets output PIDs property (4cc, built-in name or any name) to the given value. Value
       can be omitted for boolean (defaults to true, e.g. :#Alpha).
       Non built-in properties are parsed as follows:
       - file@FOO will be declared as string with a value set to the content of FOO.
       - bxml@FOO will be declared as data with a value set to the binarized content of FOO.
       - FOO will be declared as string with a value set to FOO.
       - TYPE@FOO will be parsed according to TYPE. If the type is  not  recognized,  the  entire
       value is copied as string. See gpac -h props for defined types.

       User-assigned  PID  properties  on  filter fA will be inherited by all filters dynamically
       loaded to solve fA -> fB connection.
       If fB also has user-assigned PID properties, these only apply  starting  from  fB  in  the
       chain and are not inherited by filters between fA and fB.

       Warning:  Properties  are  not filtered and override the properties of the filter's output
       PIDs, be careful  not  to  break  the  session  by  overriding  core  properties  such  as
       width/height/samplerate/... !
       Example
       gpac -i v1.mp4:#ServiceID=4 -i v2.mp4:#ServiceID=2 -o dump.ts

       This  will  multiplex  the  streams in dump.ts, using ServiceID 4 for PIDs from v1.mp4 and
       ServiceID 2 for PIDs from v2.mp4.

       PID properties may be conditionally assigned by checking other PID properties. The  syntax
       uses parenthesis (not configurable) after the property assignment sign:
       #Prop=(CP=CV)VAL
       This will assign PID property Prop to VAL for PIDs with property CP equal to CV.
       #Prop=(CP=CV)VAL,(CP2=CV2)VAL2
       This  will  assign  PID property Prop to VAL for PIDs with property CP equal to CV, and to
       VAL2 for PIDs with property CP2 equal to CV2.
       #Prop=(CP=CV)(CP2=CV2)VAL
       This will assign PID property Prop to VAL for PIDs  with  property  CP  equal  to  CV  and
       property CP2 equal to CV2.
       #Prop=(CP=CV)VAL,()DEFAULT
       This  will  assign  PID  property Prop to VAL for PIDs with property CP equal to CV, or to
       DEFAULT for other PIDs.
       The condition syntax is the same as source ID fragment syntax.
       Note: When set, the default value (empty condition) always matches the PID,  therefore  it
       should be placed last in the list of conditions.
       Example
       gpac -i source.mp4:#MyProp=(audio)"Super Audio",(video)"Super Video"

       This  will  assign  property  MyProp  to Super Audio for audio PIDs and to Super Video for
       video PIDs.
       Example
       gpac -i source.mp4:#MyProp=(audio1)"Super Audio"

       This will assign property MyProp to Super Audio for first audio PID declared.
       Example
       gpac -i source.mp4:#MyProp=(Width+1280)HD

       This will assign property MyProp to HD for PIDs with property Width greater than 1280.

Using option files

       It is possible to use a file to define options of a filter, by specifying the target  file
       name as an option without value, i.e. :myopts.txt.
       Warning: Only local files are allowed.
       An  option  file is a simple text file containing one or more options or PID properties on
       one or more lines.
       A line beginning with "//" is a comment and is ignored.
       Options in an option file may point to other option  files,  with  a  maximum  redirection
       level of 5.
       An  option  file  declaration  (filter:myopts.txt)  follows  the same inheritance rules as
       regular options.
       Example
       gpac -i source.mp4:myopts.txt:foo=bar -o dst

       Any filter loaded between source.mp4 and dst will inherit both myopts.txt and foo  options
       and will resolve options and PID properties given in myopts.txt.

Specific filter options

       Some specific keywords are replaced when processing filter options.
       Warning:  These  keywords  do  not  apply  to  PID properties. Multiple keywords cannot be
       defined for a single option.
       Defined keywords:
       * $GSHARE: replaced by system path to GPAC shared directory (e.g. /usr/share/gpac)
       * $GJS: replaced by the first path from global share directory and paths  set  through  .I
       -js-dirs that contains the file name following the macro, e.g. $GJS/source.js
       * $GLANG: replaced by the global config language option .I -lang
       * $GUA: replaced by the global config user agent option .I -user-agent
       *  $GINC(init_val[,inc]):  replaced by init_val and increment init_val by inc (positive or
       negative number, 1 if not specified) each time a new filter using this string is created.

       The $GINC construct can be used to dynamically assign numbers in filter chains:
       Example
       gpac -i source.ts tssplit @#ServiceID= -o dump_$GINC(10,2).ts

       This will dump first service in dump_10.ts, second service in dump_12.ts, etc...

       As seen previously, the following options may be set on any filter, but are not visible in
       individual filter help:
       * FID: filter identifier
       * SID: filter source(s)
       * N: filter name
       * FS: sub-session identifier
       * TAG: filter tag
       * clone: filter cloning flag
       * nomux: enable/disable direct file copy
       * gfreg: preferred filter registry names for link solving
       * gfloc: following options are local to filter declaration (not inherited)
       * gfopt: following options are not tracked
       * gpac: argument separator for URLs

External filters

       GPAC comes with a set of built-in filters in libgpac. It may also load external filters in
       dynamic libraries, located in default module folder or  folders  listed  in  .I  -mod-dirs
       option.  The  files  shall be named gf_* and shall export a single function RegisterFilter
       returning a filter register - see libgpac documentation for more details.

GPAC Built-in properties

       Built-in property types

       sint
              signed 32 bit integer

       uint
              unsigned 32 bit integer

       lsint
              signed 64 bit integer

       luint
              unsigned 32 bit integer

       bool
              boolean

       frac
              32/32 bit fraction

       lfrac
              64/64 bit fraction

       flt
              32 bit float number

       dbl
              64 bit float number

       v2di
              2D 32-bit integer vector

       v2d
              2D 64-bit float vector

       v3di
              3D 32-bit integer vector

       v4di
              4D 32-bit integer vector

       str
              UTF-8 string

       mem
              data buffer

       cstr
              const UTF-8 string

       cmem
              const data buffer

       ptr
              32 or 64 bit pointer

       strl
              UTF-8 string list

       uintl
              unsigned 32 bit integer list

       sintl
              signed 32 bit integer list

       v2il
              2D 32-bit integer vector list

       4cc
              Four character code

       4ccl
              four-character codes list

       pfmt
              raw pixel format

       afmt
              raw audio format

       cprm
              color primaries, string or int value from ISO/IEC 23091-2

       ctfc
              color transfer characteristics, string or int value from ISO/IEC 23091-2

       cmxc
              color matrix coefficients, string or int value from ISO/IEC 23091-2

              Built-in properties  for  PIDs  and  packets  listed  as  Name  (4CC  type  FLAGS):
              description
              FLAGS can be D (droppable - see GSF multiplexer filter help), P (packet property)

       ID (PIDI,uint, )
              Stream ID

       ESID (ESID,uint,D )
              MPEG-4 ESID of PID

       ItemID (ITID,uint, )
              ID of image item in HEIF, same value as ID

       ItemNumber (ITIX,uint, )
              Number (1-based) of image item in HEIF, in order of declaration in file

       TrackNumber (PIDX,uint, )
              Number (1-based) of track in order of declaration in file

       ServiceID (PSID,uint,D )
              ID of parent service

       ClockID (CKID,uint,D )
              ID of clock reference PID

       DependencyID (DPID,uint, )
              ID of layer depended on

       SubLayer (DPSL,bool, )
              PID is a sublayer of the stream depended on rather than an enhancement layer

       PlaybackMode (PBKM,uint,D )
              Playback mode supported:
              * 0: no time control
              * 1: play/pause/seek,speed=1
              * 2: play/pause/seek,speed>=0
              * 3: play/pause/seek, reverse playback

       Scalable (SCAL,bool, )
              Scalable stream

       TileBase (SABT,bool, )
              Tile base stream

       TileID (PTID,uint, )
              ID of the tile for hvt1/hvt2 PIDs

       Language (LANG,cstr, )
              Language code: ISO639 2/3 character code or RFC 4646

       ServiceName (SNAM,str,D )
              Name of parent service

       ServiceProvider (SPRO,str,D )
              Provider of parent service

       StreamType (PMST,uint, )
              Media stream type

       StreamSubtype (PSST,4cc,D )
              Media subtype 4CC (auxiliary, pic sequence, etc ..), matches ISOM handler type

       ISOMSubtype (PIST,4cc,D )
              ISOM media subtype 4CC (avc1 avc2...)

       OrigStreamType (POST,uint, )
              Original stream type before encryption

       CodecID (POTI,uint, )
              Codec ID (MPEG-4 OTI or ISOBMFF 4CC)

       InitialObjectDescriptor (PIOD,bool, )
              PID is declared in the IOD for MPEG-4

       Unframed (PFRM,bool, )
              The media data is not framed, i.e. each packet is not a complete AU/frame or is not
              in internal format (e.g. annexB for avc/hevc, adts for aac)

       UnframedAU (PFRF,bool, )
              The unframed media still has correct AU boundaries: one packet is one full AU,  but
              the packet format might not be the internal one (e.g. annexB for avc/hevc, adts for
              aac)

       LATM (LATM,bool, )
              Media is unframed AAC in LATM format

       Duration (PDUR,lfrac, )
              Media duration

       NumFrames (NFRM,uint,D )
              Number of frames in the stream

       FrameOffset (FRMO,uint,D )
              Index of first frame in the stream (used for reporting)

       ConstantFrameSize (CFRS,uint, )
              Size of the frames for constant frame size streams

       TimeshiftDepth (PTSD,frac,D )
              Depth of the timeshift buffer

       TimeshiftTime (PTST,dbl,D )
              Time in the timeshift buffer in seconds - changes are signaled through PID info (no
              reconfigure)

       TimeshiftState (PTSS,uint,D )
              State  of  timeshift  buffer:  0 is OK, 1 is underflow, 2 is overflow - changes are
              signaled through PID info (no reconfigure)

       Timescale (TIMS,uint, )
              Media timescale (a timestamp delta of N is N/timescale seconds)

       ProfileLevel (PRPL,uint,D )
              MPEG-4 profile and level

       DecoderConfig (DCFG,mem, )
              Decoder configuration data

       DecoderConfigEnhancement (ECFG,mem, )
              Decoder configuration data of the enhancement layer(s).  Also  used  by  3GPP/Apple
              text streams to give the full sample description table used in SDP.

       DecoderConfigIndex (ICFG,uint, )
              1-based index of decoder config for ISO base media files

       SampleRate (AUSR,uint, )
              Audio sample rate

       SamplesPerFrame (FRMS,uint, )
              Number of audio sample in one coded frame

       NumChannels (CHNB,uint, )
              Number of audio channels

       BPS (ABPS,uint, )
              Number of bits per sample in compressed source

       ChannelLayout (CHLO,luint, )
              Channel Layout mask

       AudioFormat (AFMT,afmt, )
              Audio sample format

       AudioPlaybackSpeed (ASPD,dbl,D )
              Audio playback speed, only used for audio output reconfiguration

       Delay (MDLY,lsint, )
              Delay  of  presentation  compared  to  composition  timestamps, in media timescale.
              Positive value imply holding (delaying) the stream. Negative value  imply  skipping
              the beginning of stream

       CTSShift (MDTS,uint, )
              CTS offset to apply in case of negative ctts

       SkipPriming (ASKP,bool, )
              Audio priming shall not to be removed when initializing decoding

       Width (WIDT,uint, )
              Visual Width (video / text / graphics)

       Height (HEIG,uint, )
              Visual Height (video / text / graphics)

       PixelFormat (PFMT,pfmt, )
              Pixel format

       PixelFormatWrapped (PFMW,pfmt, )
              Underlying pixel format of video stream if pixel format is external GL texture

       Stride (VSTY,uint, )
              Image or Y/alpha plane stride

       StrideUV (VSTC,uint, )
              UV plane or U/V planes stride

       BitDepthLuma (YBPS,uint, )
              Bit depth for luma components

       BitDepthChroma (CBPS,uint, )
              Bit depth for chroma components

       FPS (VFPF,frac, )
              Video framerate

       Interlaced (VILC,bool, )
              Video is interlaced

       SAR (PSAR,frac, )
              Sample (i.e. pixel) aspect ratio

       PAR (VPAR,frac,D )
              Picture aspect ratio

       MaxWidth (MWID,uint, )
              Maximum width (video / text / graphics) of all enhancement layers

       MaxHeight (MHEI,uint, )
              Maximum height (video / text / graphics) of all enhancement layers

       ZOrder (VZIX,sint, )
              Z-order of the video, from 0 (first) to max int (last)

       TransX (VTRX,sint, )
              Horizontal translation of the video

       TransY (VTRY,sint, )
              Vertical translation of the video

       Hidden (HIDE,bool, )
              PID is hidden in visual/audio rendering

       CropOrigin (VCXY,v2di, )
              Position in source window, X,Y indicates coord in source

       OriginalSize (VOWH,v2di, )
              Original resolution of video

       SRD (SRD ,v4di, )
              Position and size of the video in the referential given by SRDRef

       SRDRef (SRDR,v2di, )
              Width and Height of the SRD referential

       SRDMap (SRDM,uintl, )
              Mapping    of    input    videos    in    reconstructed    video,    expressed   as
              {Ox,Oy,Ow,Oh,Dx,Dy,Dw,Dh} per input, with:
              * Ox,Oy,Ow,Oh: position and size of the  input  video  (usually  matching  its  SRD
              property), expressed in the output referential given by SRDRef
              *  Dx,Dy,Dw,Dh:  Position  and Size of the input video in the reconstructed output,
              expressed in the output referential given by SRDRef

       Alpha (VALP,bool, )
              Video in this PID is an alpha map

       Mirror (VMIR,uint, )
              Mirror mode (0: no mirror, 1: along Y-axis, 2: along X-axis)

       Rotate (VROT,uint, )
              Video rotation as value*90 degree anti-clockwise

       ClapW (CLPW,frac, )
              Width of clean aperture in luma pixels

       ClapH (CLPH,frac, )
              Height of clean aperture in luma pixels

       ClapX (CLPX,frac, )
              Horizontal offset of clean aperture center in luma pixels, 0 at image center

       ClapY (CLPY,frac, )
              Vertical offset of clean aperture center in luma pixels, 0 at image center

       NumViews (PNBV,uint, )
              Number of views packed in a frame (top-to-bottom only)

       Bitrate (RATE,uint, )
              Bitrate in bps

       Maxrate (MRAT,uint, )
              Max bitrate in bps

       TargetRate (TBRT,uint, )
              Target bitrate in bps, used to setup encoders

       DBSize (DBSZ,uint, )
              Decode buffer size in bytes

       MediaDataSize (MDSZ,luint,D )
              Size in bytes of media data

       DataRef (DREF,bool,D )
              Data referencing is possible (each compressed frame is a continuous set of bytes in
              source, with no transformation)

       URL (FURL,str,D )
              URL of source

       RemoteURL (RURL,str,D )
              Remote URL of source - used for MPEG-4 systems

       RedirectURL (RELO,str,D )
              Redirection URL of source

       SourcePath (FSRC,str,D )
              Path of source file on file system

       MIMEType (MIME,str,D )
              MIME type of source

       Extension (FEXT,str,D )
              File extension of source

       Cached (CACH,bool,D )
              File is completely cached

       DownloadRate (DLBW,uint,D )
              Download  rate  of  resource  in bits per second - changes are signaled through PID
              info (no reconfigure)

       DownloadSize (DLSZ,luint,D )
              Size of resource in bytes

       DownBytes (DLBD,luint,D )
              Number of bytes downloaded - changes are signaled through PID info (no reconfigure)

       ByteRange (FBRA,lfrac,D )
              Byte range of resource

       DisableProgressive (NPRG,uint, )
              Some blocks in file need patching (replace or insertion) upon closing,  potentially
              disabling progressive upload

       IsoAltBrands (ABRD,4ccl,D )
              ISOBMFF brands associated with PID/file

       IsoBrand (MBRD,4cc,D )
              ISOBMFF major brand associated with PID/file

       MovieTime (MHTS,lfrac,D )
              ISOBMFF movie header duration and timescale

       HasSync (PSYN,bool,D )
              PID has sync points

       ServiceWidth (DWDT,uint,D )
              Display width of service

       ServiceHeight (DHGT,uint,D )
              Display height of service

       CarouselRate (CARA,uint,D )
              Repeat rate in ms for systems carousel data

       UTC (UTCD,luint,D )
              UTC date and time of PID

       UTCTimestamp (UTCT,luint,D )
              Timestamp corresponding to UTC date and time

       AudioVolume (AVOL,uint,D )
              Volume of audio

       AudioPan (APAN,uint,D )
              Balance/Pan of audio

       AudioPriority (APRI,uint,D )
              Audio thread priority

       ProtectionScheme (SCHT,4cc, )
              Protection scheme type (4CC) used

       SchemeVersion (SCHV,uint, )
              Protection scheme version used

       SchemeURI (SCHU,str, )
              Protection scheme URI

       KMS_URI (KMSU,str, )
              URI for key management system

       SelectiveEncryption (ISSE,bool, )
              ISMA/OMA selective encryption is used

       IVLength (ISIV,uint, )
              ISMA IV size

       KILength (ISKI,uint, )
              ISMA KeyIndication size

       CryptType (OMCT,uint, )
              OMA encryption type

       ContentID (OMID,str, )
              OMA Content ID

       TextualHeaders (OMTH,str, )
              OMA textual headers

       PlaintextLen (OMPT,luint, )
              OMA size of plaintext data

       CryptInfo (ECRI,str,D )
              URL  (local  file  only)  of  crypt  info  file  for  this  PID, use clear to force
              passthrough

       DecryptInfo (EDRI,str,D )
              URL (local file only) of crypt info file for this PID - see decrypter help

       SenderNTP (NTPS,luint,DP)
              NTP time at sender side or grabber side

       ReceiverNTP (NTPR,luint,DP)
              Receiver NTP time (usually associated with the sender NTP property)

       Encrypted (EPCK,bool, )
              Packets for the stream are by default encrypted (however the  encryption  state  is
              carried  in  packet crypt flags) - changes are signaled through PID info change (no
              reconfigure)

       OMAPreview (ODPR,luint, )
              OMA Preview range

       CENC_PSSH (PSSH,mem, )
              PSSH     blob      for      CENC,      formatted      as      (u32)NbSystems      [
              (bin128)SystemID(u32)version(u32)KID_count[             (bin128)keyID             ]
              (u32)priv_size(char*priv_size)priv_data]

       CENC_SAI (SAIS,mem, P)
              CENC  SAI  for  the   packet,   formatted   as   (char(IV_Size))IV(u16)NbSubSamples
              [(u16)ClearBytes(u32)CryptedBytes]

       KeyInfo (CBIV,mem, )
              Multi key info formatted as:
               is_mkey(u8);
              nb_keys(u16);
              [
                   IV_size(u8);
                   KID(bin128);
                   if (!IV_size) {;
                        const_IV_size(u8);
                        constIV(const_IV_size);
              }
              ]

       CENCPattern (CPTR,frac, )
              CENC crypt pattern, CENC pattern, skip as frac.num crypt as frac.den

       CENCStore (CSTR,4cc, )
              Storage location 4CC of SAI data

       CENCstsdMode (CSTM,uint, )
              Mode for CENC sample description when using clear samples:
              * 0: single sample description is used
              *  1:  a clear clone of the sample description is created, inserted before the CENC
              sample description
              * 2: a clear clone of the sample description is created, inserted  after  the  CENC
              sample description

       AMRModeSet (AMST,uint, )
              ModeSet for AMR and AMR-WideBand

       SubSampleInfo (SUBS,mem, )
              Binary   blob   describing   N   subsamples   of   the   sample,   formatted  as  N
              [(u32)flags(u32)size(u32)codec_param(u8)priority(u8) discardable]. Subsamples for a
              given flag MUST appear in order, however flags can be interleaved

       NALUMaxSize (NALS,uint, )
              Max  size of NAL units in stream - changes are signaled through PID info change (no
              reconfigure)

       FileNumber (FNUM,uint, P)
              Index of file when dumping to files

       FileName (FNAM,str, P)
              Name of output file when dumping / dashing. Must be set on first  packet  belonging
              to new file

       IDXName (INAM,str, P)
              Name of index file when dashing MPEG-2 TS. Must be set on first packet belonging to
              new file

       FileSuffix (FSUF,str, P)
              File suffix name, replacement for $FS$ in tile templates

       EODS (EODS,bool, P)
              End of DASH segment

       CueStart (PCUS,bool, P)
              Set on  packets  marking  the  beginning  of  a  DASH/HLS  segment  for  cue-driven
              segmentation - see dasher help

       MaxFrameSize (MFRS,uint,D )
              Max  size  of  frame  in  stream - changes are signaled through PID info change (no
              reconfigure)

       AvgFrameSize (AFRS,uint,D )
              Average size of frame in stream (ISOBMFF only, static property)

       MaxTSDelta (MTSD,uint,D )
              Maximum DTS delta between frames (ISOBMFF only, static property)

       MaxCTSOffset (MCTO,uint,D )
              Maximum absolute CTS offset (ISOBMFF only, static property)

       ConstantDuration (SCTD,uint,D )
              Constant duration of samples, 0  means  variable  duration  (ISOBMFF  only,  static
              property)

       TrackTemplate (ITKT,mem,D )
              ISOBMFF  serialized track box for this PID, without any sample info (empty stbl and
              empty dref)

       TrexTemplate (ITXT,mem,D )
              ISOBMFF serialized trex box for this PID

       STSDTemplate (ISTD,mem,D )
              ISOBMFF serialized sample description box (stsd entry) for this PID

       MovieUserData (IMUD,mem,D )
              ISOBMFF serialized moov UDTA and other moov-level boxes (list) for this PID

       HandlerName (IHDL,str,D )
              ISOBMFF track handler name

       TrackFlags (ITKF,uint,D )
              ISOBMFF track header flags

       TrackMatrix (ITKM,sintl,D )
              ISOBMFF track header matrix

       AltGroup (IALG,uint,D )
              ISOBMFF alt group ID

       ForceNCTTS (IFNC,bool,D )
              ISOBMFF force negative CTS offsets

       Disable (ITKD,bool,D )
              ISOBMFF disable flag

       Period (PEID,str,D )
              ID of DASH period

       PStart (PEST,lfrac,D )
              DASH Period start - cf dasher help

       PDur (PEDU,lfrac,D )
              DASH Period duration - cf dasher help

       Representation (DRID,str,D )
              ID of DASH representation

       ASID (DAID,uint,D )
              ID of parent DASH AS

       MuxSrc (MSRC,str,D )
              Name of mux source(s), set by dasher to direct its outputs

       DashMode (DMOD,uint,D )
              DASH mode to be used by multiplexer if any, set by dasher.  0  is  no  DASH,  1  is
              regular DASH, 2 is VoD

       DashDur (DDUR,frac,D )
              DASH target segment duration in seconds

       Role (ROLE,strl,D )
              List  of roles for this PID, where each role string can be a DASH role, a URN:role-
              value or any other string (this will throw a warning and use a custom URI  for  the
              role)

       PDesc (PDES,strl,D )
              List of descriptors for the DASH period containing this PID

       ASDesc (ACDS,strl,D )
              List  of conditional descriptors for the DASH AdaptationSet containing this PID. If
              a PID with the same property type but different value is found, the PIDs will be in
              different AdaptationSets

       ASCDesc (AADS,strl,D )
              List of common descriptors for the DASH AdaptationSet containing this PID

       RDesc (RDES,strl,D )
              List of descriptors for the DASH Representation containing this PID

       BUrl (BURL,strl,D )
              List of base URLs for this PID

       Template (DTPL,str, )
              Template to use for DASH generation for this PID

       StartNumber (DRSN,uint, )
              Start number to use for this PID - cf dasher help

       xlink (XLNK,str,D )
              Remote period URL for DASH - cf dasher help

       ClampDur (DCMD,lfrac,D )
              Max media duration to process from PID in DASH mode

       HLSPL (HLVP,str,D )
              Name of the HLS variant playlist for this media

       HLSGroup (HLGI,str,D )
              Name of HLS Group of a stream

       HLSMExt (HLMX,strl,D )
              List of extensions to add to the master playlist for this PID

       HLSVExt (HLVX,strl,D )
              List of extensions to add to the variant playlist for this PID

       DCue (DCUE,str,D )
              Name of a cue list file for this PID - see dasher help

       DSegs (DCNS,uint,D )
              Number of DASH segments defined by the DASH cue info

       Codec (CODS,str,D )
              codec  parameter  string  to  force. If starting with '.', appended to ISOBMFF code
              point; otherwise replace the codec string

       SingleScale (DSTS,bool,D )
              Movie header should use the media timescale of the first track added

       RequireReorder (PUDP,bool,D )
              PID packets come from source with losses and reordering happening (UDP)

       Primary (PITM,bool,D )
              Primary item in ISOBMFF

       DFMode (DFWD,uint,D )
              DASH forward mode is used for this PID. If 2,  the  manifest  is  also  carried  in
              packet propery

       DFManifest (DMPD,str,D )
              Value of manifest in forward mode

       DFVariant (DHLV,strl,D )
              Value of variant playlist in forward mode

       DFVariantName (DHLN,strl,D )
              Value of variant playlist name in forward mode

       DFPStart (DPST,luint,D )
              Value of active period start time in forward mode

       HLSKey (HLSK,str, )
              URI,  KEYFORMAT and KEYFORMATVERSIONS for HLS full segment encryption creation, Key
              URI otherwise ( decoding and sample-AES)

       HLSIV (HLSI,mem, )
              Init Vector for HLS decode

       ColorPrimaries (CPRM,cprm,D )
              Color primaries

       ColorTransfer (CTRC,ctfc,D )
              Color transfer characteristics

       ColorMatrix (CMXC,cmxc,D )
              Color matrix coefficient

       FullRange (CFRA,bool,D )
              Color full range flag

       Chroma (CFMT,uint,D )
              Chroma format (see ISO/IEC 23001-8 / 23091-2)

       ChromaLoc (CLOC,uint,D )
              Chroma location (see ISO/IEC 23001-8 / 23091-2)

       ContentLightLevel (CLLI,mem,D )
              Content light level, payload of clli box (see ISO/IEC 14496-12), can be  set  as  a
              list of 2 integers in fragment declaration (e.g. "=max_cll,max_pic_avg_ll")

       MasterDisplayColour (MDCV,mem,D )
              Master  display colour info, payload of mdcv box (see ISO/IEC 14496-12), can be set
              as    a    list    of    10    integers    in    fragment     declaration     (e.g.
              "=dpx0,dpy0,dpx1,dpy1,dpx2,dpy2,wpx,wpy,max,min")

       SrcMagic (PSMG,luint,D )
              Magic number to store in the track, only used by importers

       MuxIndex (TIDX,luint,D )
              Target  track  index  in destination file, stored by lowest value first (not set by
              demultiplexers)

       NoTSLoop (NTSL,bool, )
              Timestamps on this PID are adjusted in  case  of  loops  (used  by  TS  multiplexer
              output)

       MHAProfiles (MHCP,uintl,D )
              List of compatible profiles for this MPEG-H Audio object

       FragStart (PFRB,uint,DP)
              Packet is a fragment start (value 1) or a segment start (value 2)

       FragRange (PFRR,lfrac,DP)
              Start  and  end  position  in  bytes of fragment if packet is a fragment or segment
              start

       SIDXRange (PFSR,lfrac,DP)
              Start and end position in bytes of sidx if packet is a fragment or segment start

       MoofTemplate (MFTP,mem,DP)
              Serialized moof box corresponding to the start of a movie fragment or segment (with
              styp and optionally sidx)

       InitSeg (PCKI,bool, P)
              Set to true if packet is a complete DASH init segment file

       RawGrab (PGRB,bool,D )
              PID is a raw media grabber (webcam, microphone, etc...)

       KeepAfterEOS (PKAE,bool,D )
              PID must be kept alive after EOS (LASeR and BIFS)

       CoverArt (PCOV,mem,D )
              PID  cover  art  image data. If associated data is NULL, the data is carried in the
              PID

       BufferLength (PBPL,uint,D )
              Playout buffer in ms

       MaxBuffer (PBMX,uint,D )
              Maximum buffer occupancy in ms

       ReBuffer (PBRE,uint,D )
              Rebuffer threshold in ms, 0 disable rebuffering

       ViewIdx (VIDX,uint,D )
              View index for multiview (1 being left)

       FragURL (OFRA,str,D )
              Fragment URL (without '#') of original  URL  (used  by  some  filters  to  set  the
              property on media PIDs)

       ROUTEIP (RSIP,str,D )
              ROUTE session IP address

       ROUTEPort (RSPN,uint,D )
              ROUTE session port number

       ROUTEName (RSFN,str,D )
              Name (location) of raw file to advertise in ROUTE session

       ROUTECarousel (RSCR,frac,D )
              Carousel period in seconds of raw file in ROUTE session

       ROUTEUpload (RSST,frac,D )
              Upload time in seconds of raw file in ROUTE session

       Stereo (PSTT,uint,D )
              Stereo type of video

       Projection (PPJT,uint,D )
              Projection type of video

       InitalPose (PPOS,v3di,D )
              Initial  pose  for  360  video,  in degrees expressed as 16.16 bits (x is yaw, y is
              pitch, z is roll)

       CMPad (PCMP,uint,D )
              Number of pixels to pad from edge of each face in cube map

       EQRClamp (PEQC,v4di,D )
              Clamping of frame for EQR as 0.32 fixed point (x is top, y is bottom, z is left and
              w is right)

       SceneNode (PSND,bool, )
              PID is a scene node decoder (AFX BitWrapper in BIFS)

       OrigCryptoScheme (POCS,uint, )
              Original crypto scheme on a decrypted PID

       TSBSegs (PTSN,uint,D )
              Time  shift  in  number  of segments for HAS streams, only set by dashin and dasher
              filters

       IsManifest (PHSM,bool,D )
              PID is a HAS manifest

       SkipBegin (PCKS,uint, P)
              Amount of media to skip from beginning of packet in PID timescale

       SkipPres (PCKD,bool, P)
              Packet and any following with CTS greater than this packet shall not  be  presented
              (used by reframer to create edit lists)

       HLSRef (HPLR,luint,DP)
              HLS  playlist  reference, gives a unique ID identifying media mux, and indicated in
              packets carrying child playlists

       LLHLS (HLSL,uint,D )
              HLS low latency mode

       LLHLSFragNum (HLSN,uint, P)
              LLHLS fragment number

       DownloadSession (GHTT,ptr,D )
              Pointer to download session

       HasTemi (PTEM,bool,D )
              TEMI present flag

       XPSMask (PXPM,uint,DP)
              Parameter set mask

       RangeEnd (PCER,bool, P)
              Signal packet is the last in the desired play range

Pixel formats

       yuv420 (ext *.yuv)
              Planar YUV 420 8 bit

       yvu420 (ext *.yvu)
              Planar YVU 420 8 bit

       yuv420_10 (ext *.yuvl)
              Planar YUV 420 10 bit

       yuv422 (ext *.yuv2)
              Planar YUV 422 8 bit

       yuv422_10 (ext *.yp2l)
              Planar YUV 422 10 bit

       yuv444 (ext *.yuv4)
              Planar YUV 444 8 bit

       yuv444_10 (ext *.yp4l)
              Planar YUV 444 10 bit

       uyvy (ext *.uyvy)
              Packed UYVY 422 8 bit

       vyuy (ext *.vyuy)
              Packed VYUV 422 8 bit

       yuyv (ext *.yuyv)
              Packed YUYV 422 8 bit

       yvyu (ext *.yvyu)
              Packed YVYU 422 8 bit

       uyvl (ext *.uyvl)
              Packed UYVY 422 10->16 bit

       vyul (ext *.vyul)
              Packed VYUV 422 10->16 bit

       yuyl (ext *.yuyl)
              Packed YUYV 422 10->16 bit

       yvyl (ext *.yvyl)
              Packed YVYU 422 10->16 bit

       nv12 (ext *.nv12)
              Semi-planar YUV 420 8 bit, Y plane and UV packed plane

       nv21 (ext *.nv21)
              Semi-planar YUV 420 8 bit, Y plane and VU packed plane

       nv1l (ext *.nv1l)
              Semi-planar YUV 420 10 bit, Y plane and UV plane

       nv2l (ext *.nv2l)
              Semi-planar YUV 420 8 bit, Y plane and VU plane

       yuva (ext *.yuva)
              Planar YUV+alpha 420 8 bit

       yuvd (ext *.yuvd)
              Planar YUV+depth  420 8 bit

       yuv444a (ext *.yp4a)
              Planar YUV+alpha 444 8 bit

       yuv444p (ext *.yv4p)
              Packed YUV 444 8 bit

       yuv444ap (ext *.y4ap)
              Packed YUV+alpha 444 8 bit

       yuv444p_10 (ext *.y4lp)
              Packed YUV 444 10 bit

       grey (ext *.grey)
              Greyscale 8 bit

       algr (ext *.algr)
              Alpha+Grey 8 bit

       gral (ext *.gral)
              Grey+Alpha 8 bit

       rgb4 (ext *.rgb4)
              RGB 444, 12 bits (16 stored) / pixel

       rgb5 (ext *.rgb5)
              RGB 555, 15 bits (16 stored) / pixel

       rgb6 (ext *.rgb6)
              RGB 555, 16 bits / pixel

       rgba (ext *.rgba)
              RGBA 32 bits (8 bits / component)

       argb (ext *.argb)
              ARGB 32 bits (8 bits / component)

       bgra (ext *.bgra)
              BGRA 32 bits (8 bits / component)

       abgr (ext *.abgr)
              ABGR 32 bits (8 bits / component)

       rgb (ext *.rgb)
              RGB 24 bits (8 bits / component)

       bgr (ext *.bgr)
              BGR 24 bits (8 bits / component)

       xrgb (ext *.xrgb)
              xRGB 32 bits (8 bits / component)

       rgbx (ext *.rgbx)
              RGBx 32 bits (8 bits / component)

       xbgr (ext *.xbgr)
              xBGR 32 bits (8 bits / component)

       bgrx (ext *.bgrx)
              BGRx 32 bits (8 bits / component)

       rgbd (ext *.rgbd)
              RGB+depth 32 bits (8 bits / component)

       rgbds (ext *.rgbds)
              RGB+depth+bit shape (8 bits / RGB component, 7 bit depth (low bits) + 1 bit shape)

       rgbs (ext *.rgbs)
              RGB 24 bits stereo (side-by-side) - to be removed

       rgbas (ext *.rgbas)
              RGBA 32 bits stereo (side-by-side) - to be removed

       extgl (ext *.extgl)
              External OpenGL texture of unknown format, to be used with samplerExternalOES

Audio formats

       u8 (ext *.pc8)
              8 bit PCM

       s16 (ext *.pcm)
              16 bit PCM Little Endian

       s16b (ext *.pcmb)
              16 bit PCM Big Endian

       s24 (ext *.s24)
              24 bit PCM

       s32 (ext *.s32)
              32 bit PCM Little Endian

       flt (ext *.flt)
              32-bit floating point PCM

       dbl (ext *.dbl)
              64-bit floating point PCM

       u8p (ext *.pc8p)
              8 bit PCM planar

       s16p (ext *.pcmp)
              16 bit PCM Little Endian planar

       s24p (ext *.s24p)
              24 bit PCM planar

       s32p (ext *.s32p)
              32 bit PCM Little Endian planar

       fltp (ext *.fltp)
              32-bit floating point PCM planar

       dblp (ext *.dblp)
              64-bit floating point PCM planar

Stream types

       Visual
              Video or Image stream

       Audio
              Audio stream

       SceneDescription
              Scene stream

       Text
              Text or subtitle stream

       Metadata
              Metadata stream

       File
              Raw file stream

       Encrypted
              Encrypted media stream

       ObjectDescriptor
              MPEG-4 ObjectDescriptor stream

       ClockReference
              MPEG-4 Clock Reference stream

       MPEG7
              MPEG-7 description stream

       IPMP
              MPEG-4 IPMP/DRM stream

       OCI
              MPEG-4 ObjectContentInformation stream

       MPEGJ
              MPEG-4 JAVA stream

       Interaction
              MPEG-4 Interaction Sensor stream

       Font
              MPEG-4 Font stream

Codecs

       bifs
              MPEG-4 BIFS v1 Scene Description

       bifs2
              MPEG-4 BIFS v2 Scene Description

       bifsX
              MPEG-4 BIFS Extended Scene Description

       od
              MPEG-4 ObjectDescriptor v1

       od2
              MPEG-4 ObjectDescriptor v2

       interact
              MPEG-4 Interaction Stream

       afx
              MPEG-4 AFX Stream

       font
              MPEG-4 Font Stream

       syntex
              MPEG-4 Synthetized Texture

       m4txt
              MPEG-4 Streaming Text

       laser
              MPEG-4 LASeR

       saf
              MPEG-4 Simple Aggregation Format

       cmp|m4ve|m4v
              MPEG-4 Visual part 2

       264|avc|h264
              MPEG-4 AVC|H264 Video

       avcps
              MPEG-4 AVC|H264 Video Parameter Sets

       svc|avc|264|h264
              MPEG-4 AVC|H264 Scalable Video Coding

       mvc
              MPEG-4 AVC|H264 Multiview Video Coding

       hvc|hevc|h265
              HEVC Video

       lhvc|shvc|mhvc
              HEVC Video Layered Extensions

       m2vs
              MPEG-2 Visual Simple

       m2v
              MPEG-2 Visual Main

       m2v|m2vsnr
              MPEG-2 Visual SNR

       m2v|m2vspat
              MPEG-2 Visual Spatial

       m2v|m2vh
              MPEG-2 Visual High

       m2v|m2v4
              MPEG-2 Visual 422

       m1v
              MPEG-1 Video

       jpg|jpeg
              JPEG Image

       png
              PNG Image

       jp2|j2k
              JPEG2000 Image

       aac
              MPEG-4 AAC Audio

       aac|aac2m
              MPEG-2 AAC Audio Main

       aac|aac2l
              MPEG-2 AAC Audio Low Complexity

       aac|aac2s
              MPEG-2 AAC Audio Scalable Sampling Rate

       mp3|m1a
              MPEG-1 Audio

       mp2
              MPEG-2 Audio

       mp1
              MPEG-1 Audio Layer 1

       h263
              H263 Video

       h263
              H263 Video

       hvt1
              HEVC tiles Video

       evc|evrc
              EVRC Voice

       smv
              SMV Voice

       qcp|qcelp
              QCELP Voice

       amr
              AMR Audio

       amr|amrwb
              AMR WideBand Audio

       qcp|evrcpv
              EVRC (PacketVideo MUX) Audio

       vc1
              SMPTE VC-1 Video

       dirac
              Dirac Video

       ac3
              AC3 Audio

       eac3
              Enhanced AC3 Audio

       mlp
              Dolby TrueHD

       dra
              DRA Audio

       g719
              G719 Audio

       dstca
              DTS Coherent Acoustics Audio

       dtsh
              DTS-HD High Resolution Audio

       dstm
              DTS-HD Master Audio

       dtsl
              DTS Express low bit rate Audio

       opus
              Opus Audio

       eti
              DVB Event Information

       svgr
              SVG over RTP

       svgzr
              SVG+gz over RTP

       dims
              3GPP DIMS Scene

       vtt
              WebVTT Text

       txt
              Simple Text Stream

       mtxt
              Metadata Text Stream

       mxml
              Metadata XML Stream

       subs
              Subtitle text Stream

       subx
              Subtitle XML Stream

       tx3g
              Subtitle/text 3GPP/Apple Stream

       theo|theora
              Theora Video

       vorb|vorbis
              Vorbis Audio

       opus
              Opus Audio

       flac
              Flac Audio

       spx|speex
              Speex Audio

       vobsub
              VobSub Subtitle

       vobsub
              VobSub Subtitle

       adpcm
              AD-PCM

       csvd
              IBM CSVD

       alaw
              ALAW

       mulaw
              MULAW

       okiadpcm
              OKI ADPCM

       dviadpcm
              DVI ADPCM

       digistd
              DIGISTD

       yamadpcm
              YAMAHA ADPCM

       truespeech
              DSP TrueSpeech

       g610
              GSM 610

       imulaw
              IBM MULAW

       ialaw
              IBM ALAW

       iadpcl
              IBM ADPCL

       swf
              Adobe Flash

       raw
              Raw media

       av1|ivf|obu|av1b
              AOM AV1 Video

       vp8|ivf
              VP8 Video

       vp9|ivf
              VP9 Video

       vp10|ivf
              VP10 Video

       mhas
              MPEG-H Audio

       mhas
              MPEG-H AudioMux

       prores|apch
              ProRes Video 422 HQ

       prores|apco
              ProRes Video 422 Proxy

       prores|apcn
              ProRes Video 422 STD

       prores|apcs
              ProRes Video 422 LT

       prores|ap4x
              ProRes Video 4444 XQ

       prores|ap4h
              ProRes Video 4444

       ffmpeg
              FFMPEG unmapped codec

       tmcd
              QT TimeCode

       vvc|266|h266
              VVC Video

       vvs1
              VVC Subpicture Video

       usac|xheaac
              xHEAAC / USAC Audio

       v210
              v210 YUV 422 10 bits

       ffv1
              FFMPEG Video Codec 1

Stream types

       mono (int 1)
              Layout 0x0000000000000004

       stereo (int 2)
              Layout 0x0000000000000003

       3/0.0 (int 3)
              Layout 0x0000000000000007

       3/1.0 (int 4)
              Layout 0x0000000000000407

       3/2.0 (int 5)
              Layout 0x0000000000000307

       3/2.1 (int 6)
              Layout 0x000000000000030f

       5/2.1 (int 7)
              Layout 0x000000000000030f

       1+1 (int 8)
              Layout 0x0000000000000003

       2/1.0 (int 9)
              Layout 0x0000000000000403

       2/2.0 (int 10)
              Layout 0x0000000000000033

       3/3.1 (int 11)
              Layout 0x000000000000043f

       3/4.1 (int 12)
              Layout 0x000000000000033f

       11/11.2 (int 13)
              Layout 0x000000003ffe67cf

       5/2.1 (int 14)
              Layout 0x000000000006030f

       5/5.2 (int 15)
              Layout 0x000000000606630f

       5/4.1 (int 16)
              Layout 0x000000000036003f

       6/5.1 (int 17)
              Layout 0x00000000023e003f

       6/7.1 (int 18)
              Layout 0x00000600023e003f

       5/6.1 (int 19)
              Layout 0x000000000036630f

       7/6.1 (int 20)
              Layout 0x000000600036630f

EXAMPLES

       Basic and advanced examples are available at https://wiki.gpac.io/Filters

MORE

       Authors: GPAC developers, see git repo history (-log)
       For  bug  reports,  feature  requests,   more   information   and   source   code,   visit
       https://github.com/gpac/gpac
       build: 1.1.0-DEV-rev1777-gb91a8dad3-master
       Copyright: (c) 2000-2022 Telecom Paris distributed under LGPL v2.1+ - http://gpac.io

SEE ALSO

       gpac-filters(1), MP4Client(1), MP4Box(1)