Skip to content

hd-rum-transcode control port argument results in "Unknown global parameter" #482

@armelvil

Description

@armelvil

Hello all,

I'm running with UltraGrid 1.10+ (master rev 9832f9d built Dec 2 2025 08:45:45)

Upon launching the command:
UltraGrid.AppImage --tool hd-rum-transcode --control-port 6565

the application fails with the following:

UltraGrid 1.10+ (master rev 9832f9d built Dec  2 2025 08:45:45)

/tmp/.mount_UltraGIBPdkg/usr/bin/hd-rum-transcode: unrecognized option '--control-port'
[hd-rum-trans] Unknown global parameter

Usage:
	/tmp/.mount_UltraGIBPdkg/usr/bin/hd-rum-transcode [global_opts] buffer_size port \
		[host1_options] host1 [[host2_options] host2] ...

where:
	buffer_size - network buffer size, eg. 200k for compressed
		 or 8M for uncompressed video
	port - UDP port number
global_opts may be:
	--control-port|-n <port_number>[:0|:1] - control port to connect to, optionally client/server (default)
	--blend|-B - enable blending from original to newly received stream, increases latency
	--server|-S <port> - enable server mode for clients to connect on specified port
	--conference|-r <width>:<height>[:fps] - enable combining of multiple inputs, increases latency
	--conference-compression|-R <compression> - compression for conference participants
	--capture-filter|-F <cfg_string> - apply video capture filter to incoming video
	--param|-O - additional parameters
	--help|-h
	--verbose|-V
	-v - print version
and hostX_options may be:
	-P [<rx_port>:]<tx_port> - TX port to be used (optionally also RX)
	-c <compression> - compression
	Following options will be used only if '-c' parameter is set:
	-m <mtu> - MTU size
	-l <limiting_bitrate> - bitrate to be shaped to
	-f <fec> - FEC that will be used for transmission.
	-4/-6 - force IPv4/IPv6

Please note that blending and capture filter is used only for host for which
compression is specified (transcoding is active). If compression is not
set, simple packet retransmission is used. Compression can be also 'none'
for uncompressed transmission (see 'uv -c help' for list).

I am not sure if this is desired behavior. Attempting to use the shorthand option -n results in the same behavior.

Additionally although there are some notes on the control port API located here; https://github.com/CESNET/UltraGrid/wiki/Control-port-API#adding-and-removing-output-ports , and I understand that they aren't generally for us to play around with, I am struggling to get any use out of it.

My use case is that I want to be able to add/remove reflector clients dynamically, without having to terminate and restart the reflector.

As it currently stands, it appears I can't launch hd-rum-multi with a control port open, so I am unable to test it further. I did try a few commands such as nc localhost 6160 just in the event a default port was open, but that doesn't seem to be the case.

This may be down to a source code typo:

          struct cmdline_parameters *parsed) noexcept(false)
{
        const struct option getopt_options[] = {
                {"blend",                   no_argument,       nullptr, 'B'},
                { "capture-filter",         required_argument, nullptr, 'F'},
                { "list-modules",           required_argument, nullptr, 'L'},
                { "param",                  required_argument, nullptr, 'O'},
                { "conference-compression", required_argument, nullptr, 'R'},
                { "server",                 required_argument, nullptr, 'S'},
                { "verbose",                optional_argument, nullptr, 'V'},
                { "capabilities",           no_argument,       nullptr, 'b'},
                { "help",                   no_argument,       nullptr, 'h'},
                { "contol-port",            required_argument, nullptr, 'n'},
                { "conference",             required_argument, nullptr, 'r'},
                { "version",                no_argument,       nullptr, 'v'},
                { nullptr,                  0,                 nullptr, 0  }
        };
        const char *const optstring = "+BF:LO:R:S:Vbhn:r:v";

In line 645-663 in https://github.com/CESNET/UltraGrid/blob/master/src/hd-rum-translator/hd-rum-translator.cpp

Although accounting for that results in the same error. I'm not sure which other avenues to chase down from here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions