Basic tutorial 10: GStreamer tools
# (optional)
$ export GST_PLUGIN_PATH=/usr/lib/aarch64-linux-gnu/gstreamer-1.0:/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream
$ apt list --installed | grep streamer
To install GStreamer-1.0
• Install GStreamer-1.0 on the platform with the following commands:
sudo add-apt-repository universe
sudo add-apt-repository multiverse
sudo apt-get update
sudo apt-get install gstreamer1.0-tools gstreamer1.0-alsa \
gstreamer1.0-plugins-base gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \
gstreamer1.0-libav
sudo apt-get install libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev \
libgstreamer-plugins-good1.0-dev \
libgstreamer-plugins-bad1.0-dev
To check the GStreamer-1.0 version
• Check the GStreamer-1.0 version with the following command:
gst-inspect-1.0 --version
v4l2-ctl --list-formats-ext
$ sudo apt install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav libgstrtspserver-1.0-0 \
gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl \
gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev libgstrtspserver-1.0-dev
$ sudo apt install gstreamer1.0-opencv
$ dpkg -L gstreamer1.0-plugins-base
$ dpkg -L gstreamer1.0-plugins-bad
$ dpkg -L libgstreamer-plugins-bad1.0-dev
$ dpkg -L libgstreamer-opencv1.0-0
$ dpkg -L gstreamer1.0-opencv
$ gst-launch-1.0 \
v4l2src device=/dev/video0 ! \
videoconvert ! \
ximagesink
$ gst-launch-1.0 \
v4l2src device=/dev/video0 ! jpegdec ! video/x-raw,framerate=30/1,width=640,height=480 ! \
videoconvert ! \
xvimagesink
$ gst-launch-1.0 \
v4l2src device=/dev/video1 ! video/x-raw,framerate=30/1,width=640,height=480 ! \
videoconvert ! \
xvimagesink
dual show:
gst-launch-1.0 \
v4l2src device=/dev/video1 ! video/x-raw,framerate=30/1,width=640,height=480 ! \
videoconvert ! \
tee name=t ! \
queue ! \
ximagesink t. ! \
queue ! \
ximagesink
face detection
$ gst-inspect-1.0 facedetect
$ gst-launch-1.0 \
autovideosrc ! video/x-raw,width=640,height=480 ! \
videoconvert ! \
facedetect min-size-width=60 min-size-height=60 profile=/usr/share/opencv4/haarcascades/haarcascade_frontalface_default.xml ! \
videoconvert ! \
xvimagesink
$ gst-launch-1.0 \
v4l2src device=/dev/video0 ! jpegdec ! video/x-raw,framerate=30/1,width=640,height=480 ! \
videoconvert ! \
facedetect min-size-width=60 min-size-height=60 profile=/usr/share/opencv4/haarcascades/haarcascade_frontalface_default.xml ! \
videoconvert ! \
xvimagesink
$ gst-launch-1.0 \
v4l2src device=/dev/video1 ! video/x-raw,framerate=30/1,width=640,height=480 ! \
videoconvert ! \
facedetect min-size-width=60 min-size-height=60 profile=/usr/share/opencv4/haarcascades/haarcascade_frontalface_default.xml ! \
videoconvert ! \
xvimagesink
face detection to file
$ gst-launch-1.0 \
v4l2src device=/dev/video0 ! jpegdec ! video/x-raw,framerate=30/1,width=640,height=480 ! \
videoconvert ! \
facedetect min-size-width=60 min-size-height=60 profile=/usr/share/opencv4/haarcascades/haarcascade_frontalface_default.xml ! \
videoconvert ! \
nvvidconv ! 'video/x-raw(memory:NVMM),format=NV12' ! \
omxh264enc ! \
qtmux ! \
filesink location=cam_usb.mp4 -e
$ gst-launch-1.0 \
v4l2src device=/dev/video1 ! video/x-raw,framerate=30/1,width=640,height=480 ! \
videoconvert ! \
facedetect min-size-width=60 min-size-height=60 profile=/usr/share/opencv4/haarcascades/haarcascade_frontalface_default.xml ! \
videoconvert ! \
nvvidconv ! 'video/x-raw(memory:NVMM),format=NV12' ! \
omxh264enc ! \
qtmux ! \
filesink location=cam_pseye.mp4 -e
foreground segmentation
$ gst-inspect-1.0 segmentation
$ GST_DEBUG=5 gst-inspect-1.0 segmentation
$ gst-launch-1.0 \
v4l2src device=/dev/video0 ! jpegdec ! video/x-raw,framerate=30/1,width=640,height=480 ! \
videoconvert ! \
segmentation test-mode=true method=2 ! \
videoconvert ! \
ximagesink
$ gst-launch-1.0 \
v4l2src device=/dev/video1 ! video/x-raw,framerate=30/1,width=640,height=480 ! \
videoconvert ! \
segmentation test-mode=true method=2 ! \
videoconvert ! \
ximagesink
$ gst-launch-1.0 \
v4l2src device=/dev/video1 ! video/x-raw,framerate=30/1,width=640,height=480 ! \
videoconvert ! \
tee name=t ! \
queue ! \
ximagesink t. ! \
queue ! \
videoconvert ! \
segmentation test-mode=true method=2 ! \
videoconvert ! \
ximagesink
$ gst-launch-1.0 videotestsrc ! videoconvert ! autovideosink
$ gst-launch-1.0 videotestsrc pattern=11 ! videoconvert ! autovideosink
$ gst-launch-1.0 videotestsrc pattern=ball ! videoconvert ! autovideosink
$ gst-discoverer-1.0 https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm -v
$ gst-launch-1.0 playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm
$ gst-launch-1.0 souphttpsrc location=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm ! decodebin ! autovideosink
$ gst-launch-1.0 audiotestsrc ! audioconvert ! autoaudiosink
$ gst-launch-1.0 audiotestsrc ! identity drop-probability=0.1 ! audioconvert ! autoaudiosink
$ gst-launch-1.0 \
uridecodebin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm ! \
audioresample ! 'audio/x-raw,rate=4000' ! \
audioconvert ! \
autoaudiosink
From Youtube:
- https://www.seejh.com/live/
- http://lifestyletransfer.com/how-to-watch-youtube-videos-with-gstreamer/
- https://github.com/ytdl-org/youtube-dl
Live:
- https://www.youtube.com/watch?v=ELtPf8zR8NY (Town Square Webcam - Northeast)
- https://www.youtube.com/watch?v=DoUOrTJbIu4 (Jackson Wyoming Town Square Live Webcam)
- https://www.youtube.com/watch?v=EXvKXsmAmPg (Gather | Jackson Hole Restaurant + Bar Near Town Square)
- https://www.youtube.com/watch?v=1EiC9bvVGnk (Jackson Hole Wyoming USA Town Square Live Cam)
- https://www.youtube.com/watch?v=h0Wn8wFtyAk (Jackson Hole Airport Parking Lot Camera - North)
$ youtube-dl --list-formats "https://www.youtube.com/watch?v=EXvKXsmAmPg"
# [youtube] EXvKXsmAmPg: Downloading webpage
# [youtube] EXvKXsmAmPg: Downloading m3u8 information
# [youtube] EXvKXsmAmPg: Downloading MPD manifest
# [info] Available formats for EXvKXsmAmPg:
# format code extension resolution note
# 91 mp4 256x144 290k , avc1.42c00b, 15.0fps, mp4a.40.5
# 92 mp4 426x240 546k , avc1.4d4015, 30.0fps, mp4a.40.5
# 93 mp4 640x360 1209k , avc1.4d401e, 30.0fps, mp4a.40.2
# 94 mp4 854x480 1568k , avc1.4d401f, 30.0fps, mp4a.40.2
# 95 mp4 1280x720 2969k , avc1.4d401f, 30.0fps, mp4a.40.2
# 96 mp4 1920x1080 5420k , avc1.640028, 30.0fps, mp4a.40.2 (best)
$ youtube-dl -f 93 --get-url "https://www.youtube.com/watch?v=EXvKXsmAmPg"
# https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1628735515/ei/uzMUYc2WD6bYxN8Pvu6lwAM/ip/78.199.116.24/id/EXvKXsmAmPg.1/itag/93/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/sgoap/gir%3Dyes%3Bitag%3D140/sgovp/gir%3Dyes%3Bitag%3D134/hls_chunk_host/rr11---sn-4gxx-25gel.googlevideo.com/playlist_duration/30/manifest_duration/30/vprv/1/playlist_type/DVR/initcwndbps/5730/mh/NL/mm/44/mn/sn-4gxx-25gel/ms/lva/mv/m/mvi/11/nh/EAE/pl/11/dover/11/keepalive/yes/fexp/24001373,24007246/mt/1628713484/sparams/expire,ei,ip,id,itag,source,requiressl,ratebypass,live,sgoap,sgovp,playlist_duration,manifest_duration,vprv,playlist_type/sig/AOq0QJ8wRgIhAMxVe7WlECLwgMHvkW2a5NBNTBNaZEjW8wuiNYu3cAIgAiEAyaxtqU86WJrcHu8-C8NHHc8vbOxBbKBhni5L_OKO-1I%3D/lsparams/hls_chunk_host,initcwndbps,mh,mm,mn,ms,mv,mvi,nh,pl/lsig/AG3C_xAwRgIhAKdPrwncfHstku3DzKBTmMyUtSMh_9ZLyJzYRwjR6B4QAiEA-0gI5m9FTT0dHasxZJtUoebPUhAkYnpjdhvbZzu2b5o%3D/playlist/index.m3u8
# Requirements:
# On mac/osx: brew install gst-plugins-bad
# https://formulae.brew.sh/formula/gst-plugins-bad#default
$ gst-inspect-1.0 | grep hls
# hls: hlssink2: HTTP Live Streaming sink
# hls: hlssink: HTTP Live Streaming sink
# hls: hlsdemux: HLS Demuxer
# typefindfunctions: application/x-hls: m3u8
$ brew info gstreamer
# gstreamer: stable 1.18.4 (bottled), HEAD
# Development framework for multimedia applications
# https://gstreamer.freedesktop.org/
$ gst-launch-1.0 souphttpsrc is-live=true \
location="$(youtube-dl -f 93 --get-url "https://www.youtube.com/watch?v=EXvKXsmAmPg")" ! \
decodebin ! autovideosink
$ gst-launch-1.0 souphttpsrc is-live=true \
location="$(youtube-dl -f 93 --get-url "https://www.youtube.com/watch?v=EXvKXsmAmPg")" ! \
decodebin ! filesink location=output.mp4 -e
$ gst-launch-1.0 souphttpsrc is-live=true \
location="$(youtube-dl -f 95 --get-url "https://www.youtube.com/watch?v=EXvKXsmAmPg")" ! \
decodebin ! videoconvert ! video/x-raw,framerate=30/1,width=1280,height=720 ! autovideosink
$ gst-launch-1.0 souphttpsrc is-live=true \
location="$(youtube-dl -f 95 --get-url "https://www.youtube.com/watch?v=EXvKXsmAmPg")" ! \
decodebin ! videoscale ! video/x-raw,width=1280,height=720 ! videoconvert ! autovideosink
$ gst-discoverer-1.0 "$(youtube-dl -f 95 --get-url "https://www.youtube.com/watch?v=EXvKXsmAmPg")" -v
# Analyzing https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1628736982/ei/djkUYYPtFK2EvdIP6OGKmAM/ip/78.199.116.24/id/EXvKXsmAmPg.1/itag/95/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/sgoap/gir%3Dyes%3Bitag%3D140/sgovp/gir%3Dyes%3Bitag%3D136/hls_chunk_host/rr11---sn-4gxx-25gel.googlevideo.com/playlist_duration/30/manifest_duration/30/vprv/1/playlist_type/DVR/initcwndbps/4920/mh/NL/mm/44/mn/sn-4gxx-25gel/ms/lva/mv/m/mvi/11/nh/EAE/pl/11/dover/11/keepalive/yes/fexp/24001373,24007246/mt/1628714437/sparams/expire,ei,ip,id,itag,source,requiressl,ratebypass,live,sgoap,sgovp,playlist_duration,manifest_duration,vprv,playlist_type/sig/AOq0QJ8wRQIgRpWD2dcdOrTODacu-9DVPPDdbdRU7OeUuQatOxyLqkkCIQCL-FnMZ59DFSLqE7RE-qF2TP_tj488nuh4TAiYLGHhyA%3D%3D/lsparams/hls_chunk_host,initcwndbps,mh,mm,mn,ms,mv,mvi,nh,pl/lsig/AG3C_xAwRQIhAO9h6Ul77CXBn0tJa828PMpzJ95guFk2FfGdLT7sDUdPAiAQecdr6E6GoRByY3fF1uOwZMAOt2Pm6AWjv8pMbiRzDQ%3D%3D/playlist/index.m3u8
# Done discovering https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1628736982/ei/djkUYYPtFK2EvdIP6OGKmAM/ip/78.199.116.24/id/EXvKXsmAmPg.1/itag/95/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/sgoap/gir%3Dyes%3Bitag%3D140/sgovp/gir%3Dyes%3Bitag%3D136/hls_chunk_host/rr11---sn-4gxx-25gel.googlevideo.com/playlist_duration/30/manifest_duration/30/vprv/1/playlist_type/DVR/initcwndbps/4920/mh/NL/mm/44/mn/sn-4gxx-25gel/ms/lva/mv/m/mvi/11/nh/EAE/pl/11/dover/11/keepalive/yes/fexp/24001373,24007246/mt/1628714437/sparams/expire,ei,ip,id,itag,source,requiressl,ratebypass,live,sgoap,sgovp,playlist_duration,manifest_duration,vprv,playlist_type/sig/AOq0QJ8wRQIgRpWD2dcdOrTODacu-9DVPPDdbdRU7OeUuQatOxyLqkkCIQCL-FnMZ59DFSLqE7RE-qF2TP_tj488nuh4TAiYLGHhyA%3D%3D/lsparams/hls_chunk_host,initcwndbps,mh,mm,mn,ms,mv,mvi,nh,pl/lsig/AG3C_xAwRQIhAO9h6Ul77CXBn0tJa828PMpzJ95guFk2FfGdLT7sDUdPAiAQecdr6E6GoRByY3fF1uOwZMAOt2Pm6AWjv8pMbiRzDQ%3D%3D/playlist/index.m3u8
Properties:
Duration: 99:99:99.999999999
Seekable: yes
Live: no
Tags:
audio codec: MPEG-4 AAC
video codec: H.264
container: application/x-hls
container: video/mpegts, systemstream=(boolean)true, packetsize=(int)188
video: video/x-h264, stream-format=(string)avc, pixel-aspect-ratio=(fraction)1/1, width=(int)1280, height=(int)720, framerate=(fraction)30/1, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, colorimetry=(string)bt709, parsed=(boolean)true, alignment=(string)au, profile=(string)main, level=(string)3.1, codec_data=(buffer)014d401fffe1001c674d401fda014016ec05a808080a000003000200000300781e30654001000468ef3c80
Tags:
video codec: H.264
Codec:
video/x-h264, stream-format=(string)avc, pixel-aspect-ratio=(fraction)1/1, width=(int)1280, height=(int)720, framerate=(fraction)30/1, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, colorimetry=(string)bt709, parsed=(boolean)true, alignment=(string)au, profile=(string)main, level=(string)3.1, codec_data=(buffer)014d401fffe1001c674d401fda014016ec05a808080a000003000200000300781e30654001000468ef3c80
Stream ID: 3ae4ee10e2467a4e9905e13df83e63f2173c5258cc4f882b1a3663043927cad0/src_0:1/00000100
Width: 1280
Height: 720
Depth: 24
Frame rate: 30/1
Pixel aspect ratio: 1/1
Interlaced: false
Bitrate: 0
Max bitrate: 0
audio: audio/mpeg, framed=(boolean)true, mpegversion=(int)4, level=(string)2, base-profile=(string)lc, profile=(string)lc, rate=(int)44100, channels=(int)2, stream-format=(string)adts
Tags:
audio codec: MPEG-4 AAC
Codec:
audio/mpeg, framed=(boolean)true, mpegversion=(int)4, level=(string)2, base-profile=(string)lc, profile=(string)lc, rate=(int)44100, channels=(int)2, stream-format=(string)adts
Stream ID: 3ae4ee10e2467a4e9905e13df83e63f2173c5258cc4f882b1a3663043927cad0/src_0:1/00000101
Language: <unknown>
Channels: 2 (front-left, front-right)
Sample rate: 44100
Depth: 16
Bitrate: 0
Max bitrate: 0
Raspberry Pi v3
# enable camera on raspi-config by
sudo raspi-config
# test capture
raspivid -w 1024 -h 768 -fps 30 --vflip -f -t 0
# test gstreamer
gst-launch-1.0 \
v4l2src device=/dev/video0 ! video/x-raw,width=640,height=480 ! \
videoconvert ! \
videoflip method=2 ! \
ximagesink
gst-launch-1.0 \
v4l2src device=/dev/video0 ! video/x-raw,width=320,height=240 ! \
videoconvert ! \
videoflip method=2 ! \
videoconvert ! \
segmentation test-mode=true method=2 ! \
videoconvert ! \
ximagesink
$ raspivid --help
"raspivid" Camera App (commit 4a0a19b88b43 Tainted)
Display camera output to display, and optionally saves an H264 capture at requested bitrate
usage: raspivid [options]
Image parameter commands
-b, --bitrate : Set bitrate. Use bits per second (e.g. 10MBits/s would be -b 10000000)
-t, --timeout : Time (in ms) to capture for. If not specified, set to 5s. Zero to disable
-d, --demo : Run a demo mode (cycle through range of camera options, no capture)
-fps, --framerate : Specify the frames per second to record
-e, --penc : Display preview image *after* encoding (shows compression artifacts)
-g, --intra : Specify the intra refresh period (key frame rate/GoP size). Zero to produce an initial I-frame and then just P-frames.
-pf, --profile : Specify H264 profile to use for encoding
-td, --timed : Cycle between capture and pause. -cycle on,off where on is record time and off is pause time in ms
-s, --signal : Cycle between capture and pause on Signal
-k, --keypress : Cycle between capture and pause on ENTER
-i, --initial : Initial state. Use 'record' or 'pause'. Default 'record'
-qp, --qp : Quantisation parameter. Use approximately 10-40. Default 0 (off)
-ih, --inline : Insert inline headers (SPS, PPS) to stream
-sg, --segment : Segment output file in to multiple files at specified interval <ms>
-wr, --wrap : In segment mode, wrap any numbered filename back to 1 when reach number
-sn, --start : In segment mode, start with specified segment number
-sp, --split : In wait mode, create new output file for each start event
-c, --circular : Run encoded data through circular buffer until triggered then save
-x, --vectors : Output filename <filename> for inline motion vectors
-if, --irefresh : Set intra refresh type
-fl, --flush : Flush buffers in order to decrease latency
-pts, --save-pts : Save Timestamps to file for mkvmerge
-cd, --codec : Specify the codec to use - H264 (default) or MJPEG
-lev, --level : Specify H264 level to use for encoding
-r, --raw : Output filename <filename> for raw video
-rf, --raw-format : Specify output format for raw video. Default is yuv
-l, --listen : Listen on a TCP socket
-stm, --spstimings : Add in h.264 sps timings
-sl, --slices : Horizontal slices per frame. Default 1 (off)
H264 Profile options :
baseline,main,high
H264 Level options :
4,4.1,4.2
H264 Intra refresh options :
cyclic,adaptive,both,cyclicrows
Raw output format options :
yuv,rgb,gray
Raspivid allows output to a remote IPv4 host e.g. -o tcp://192.168.1.2:1234or -o udp://192.168.1.2:1234
To listen on a TCP port (IPv4) and wait for an incoming connection use the -l option
e.g. raspivid -l -o tcp://0.0.0.0:3333 -> bind to all network interfaces,
raspivid -l -o tcp://192.168.1.1:3333 -> bind to a certain local IPv4 port
Common Settings commands
-?, --help : This help information
-w, --width : Set image width <size>
-h, --height : Set image height <size>
-o, --output : Output filename <filename> (to write to stdout, use '-o -'). If not specified, no file is saved
-v, --verbose : Output verbose information during run
-cs, --camselect : Select camera <number>. Default 0
-md, --mode : Force sensor mode. 0=auto. See docs for other modes available
-gps, --gpsdexif : Apply real-time GPS information to output (e.g. EXIF in JPG, annotation in video (requires libgps.so.23)
Preview parameter commands
-p, --preview : Preview window settings <'x,y,w,h'>
-f, --fullscreen : Fullscreen preview mode
-op, --opacity : Preview window opacity (0-255)
-n, --nopreview : Do not display a preview window
-dn, --dispnum : Display on which to display the preview window (dispmanx/tvservice numbering)
Image parameter commands
-sh, --sharpness : Set image sharpness (-100 to 100)
-co, --contrast : Set image contrast (-100 to 100)
-br, --brightness : Set image brightness (0 to 100)
-sa, --saturation : Set image saturation (-100 to 100)
-ISO, --ISO : Set capture ISO
-vs, --vstab : Turn on video stabilisation
-ev, --ev : Set EV compensation - steps of 1/6 stop
-ex, --exposure : Set exposure mode (see Notes)
-fli, --flicker : Set flicker avoid mode (see Notes)
-awb, --awb : Set AWB mode (see Notes)
-ifx, --imxfx : Set image effect (see Notes)
-cfx, --colfx : Set colour effect (U:V)
-mm, --metering : Set metering mode (see Notes)
-rot, --rotation : Set image rotation (0, 90, 180, or 270)
-hf, --hflip : Set horizontal flip
-vf, --vflip : Set vertical flip
-roi, --roi : Set region of interest (x,y,w,d as normalised coordinates [0.0-1.0])
-ss, --shutter : Set shutter speed in microseconds
-awbg, --awbgains : Set AWB gains - AWB mode must be off
-drc, --drc : Set DRC Level (see Notes)
-st, --stats : Force recomputation of statistics on stills capture pass
-a, --annotate : Enable/Set annotate flags or text
-3d, --stereo : Select stereoscopic mode
-dec, --decimate : Half width/height of stereo image
-3dswap, --3dswap : Swap camera order for stereoscopic
-ae, --annotateex : Set extra annotation parameters (text size, text colour(hex YUV), bg colour(hex YUV), justify, x, y)
-ag, --analoggain : Set the analog gain (floating point)
-dg, --digitalgain : Set the digital gain (floating point)
-set, --settings : Retrieve camera settings and write to stdout
-fw, --focus : Draw a window with the focus FoM value on the image.
Notes
Exposure mode options :
off,auto,night,nightpreview,backlight,spotlight,sports,snow,beach,verylong,fixedfps,antishake,fireworks
Flicker avoid mode options :
off,auto,50hz,60hz
AWB mode options :
off,auto,sun,cloud,shade,tungsten,fluorescent,incandescent,flash,horizon,greyworld
Image Effect mode options :
none,negative,solarise,sketch,denoise,emboss,oilpaint,hatch,gpen,pastel,watercolour,film,blur,saturation,colourswap,washedout,posterise,colourpoint,colourbalance,cartoon
Metering Mode options :
average,spot,backlit,matrix
Dynamic Range Compression (DRC) options :
off,low,med,high