SAGE Settings - CESNET/UltraGrid GitHub Wiki

Note: Since SAGE (1) is no longer developed, the below is obsolete and is kept mostly only for reference.

SAGE compilation

If you have a working version of SAGE client already present on your computer, you can link it with Ultragrid upon configuration. Otherwise you can download and compile it using the manual below.

Configuring UltraGrid with SAGE suppport

You can configure UltraGrid to use SAGE client library by adding the parameter --with-sage= to the configuration script of ultragrid:

./configure --with-sage=/home/sageuser/sage3.0

Compiling SAGE client

To compile a SAGE client, download it from [here] and save it to the UltraGrid root directory (i.r. the one containing folders ultragrid, FastDXT, portaudio and so on).

Note: Since UltraGrid has the name pre-set statcially, make sure the directory you created is named "sage3.0". Other option is to use --with-sage=<DIR> parameter, as in above example.

Enter the directory and compile SAGE library.

cd sage3.0
make

Running

To be able to use the SAGE display, you need to run from a directory, where is placed SAGE application configuration file. The configuration file must be named "ultragrid.conf".

There are two possible workflows to use SAGE from within UltraGrid:

  1. using SAGE display device - you will send video from sender, receive it with UltraGrid receiver which forwards it to SAGE
  2. sending directly to SAGE from UltraGrid sender

SAGE display

Make sure you have properly adjusted sage application configuration file named "ultragrid.conf" in your current directory, prior to running UltraGrid receiver.

Sample ultragrid.conf

bridgeOn false
fsIP 192.0.43.10
fsPort 20002
masterIP 127.0.0.1
nwID 1
msgPort 23010
syncPort 13010
nodeNum 1
appID 0
pixelBlockSize 64 64
blockThreshold 0
winX 0
winY 0
winWidth 1920
winHeight 1080
streamType SAGE_BLOCK_NO_SYNC
nwProtocol UDP
asyncUpdate false

where:

  • fsIP is an address of your SAGE headnode

Transmit modes

You have several possibilities for transmitting video.

Using UltraGrid for capture, SAGE for both display and transmit

In this case, single UltraGrid node captures and sends to SAGE head-node. In this setup, you will play through localhost:

uv -t <your_caputre_options> -d sage -m 9000 localhost

Optionally you can use DXT1 compression. In this particular case, traffic from UltraGrid node sent to SAGE will be DXT1 compressed (so using 4 times less BTW compared to YUV422). Please note that only this compresssion makes sense – SAGE knows only DXT1 so any other compression would get compressed and decompressed at the UltraGrid node uselessly.

uv -t <your_caputre_options> -d sage -m 9000 -c RTDXT:DXT1 localhost

Runing UltraGrid sender and receiver separatelly

You can also run UltraGrid in a more common way – with separate sender and receiver. In that case you will run:

uv -t <your_caputre_options> -m 9000 <receiver_ip> # sender

uv -d sage <sender_ip> # receiver

In this case, there is no restriction to compression. From the UltraGrid receiver to SAGE headnode goes usually uncompressed data, if sender sends DXT1, data are passed compressed to SAGE.

Streaming to SAGE from sender

Run following command on sender:

uv <capture_opts> --protocol sage <fsmanager_ip>

For example you can use this command to stream captured stream to SAGE:

uv -t screen --protocol sage 192.0.43.10

⚠️ **GitHub.com Fallback** ⚠️