mirror of
https://github.com/outbackdingo/UltraGrid.git
synced 2026-03-21 19:40:24 +00:00
Merge branch 'trunk' of http://seth.ics.muni.cz/git/ultragrid into fromCESNET
This commit is contained in:
@@ -392,7 +392,7 @@ next_iteration:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void *hd_rum_decompress_init(unsigned short rx_port)
|
||||
void *hd_rum_decompress_init()
|
||||
{
|
||||
struct state_transcoder_decompress *s;
|
||||
int ttl = 255;
|
||||
@@ -402,7 +402,7 @@ void *hd_rum_decompress_init(unsigned short rx_port)
|
||||
initialize_video_decompress();
|
||||
|
||||
s = new state_transcoder_decompress;
|
||||
s->network_device = rtp_init_if("localhost", (char *) NULL, rx_port, rx_port, ttl,
|
||||
s->network_device = rtp_init_if("localhost", (char *) NULL, 0, 0, ttl,
|
||||
rtcp_bw, FALSE, hd_rum_receive_pkt, (uint8_t *) s,
|
||||
use_ipv6, false);
|
||||
s->my_last_ssrc = -1;
|
||||
|
||||
@@ -3,7 +3,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
ssize_t hd_rum_decompress_write(void *state, void *buf, size_t count);
|
||||
void *hd_rum_decompress_init(unsigned short rx_port);
|
||||
void *hd_rum_decompress_init();
|
||||
void hd_rum_decompress_done(void *state);
|
||||
void hd_rum_decompress_add_port(void *decompress_state, void *recompress_state);
|
||||
void hd_rum_decompress_add_inactive_port(void *decompress_state, void *recompress_state);
|
||||
|
||||
@@ -250,8 +250,10 @@ static void usage(const char *progname) {
|
||||
printf("\twhere global_opts may be:\n"
|
||||
"\t\t--control-port <port_number> - control port to connect to\n");
|
||||
printf("\tand hostX_options may be:\n"
|
||||
"\t\t-P <port> - TX port to be used\n"
|
||||
"\t\t-c <compression> - compression\n"
|
||||
"\t\t-m <mtu> - MTU size. Will be used only with compression.\n"
|
||||
"\t\tFollowing options will be used only if '-c' parameter is set:\n"
|
||||
"\t\t-m <mtu> - MTU size\n"
|
||||
"\t\t-l <limiting_bitrate> - bitrate to be shaped to\n"
|
||||
"\t\t-f <fec> - FEC that will be used for transmission.\n"
|
||||
);
|
||||
@@ -259,6 +261,7 @@ static void usage(const char *progname) {
|
||||
|
||||
struct host_opts {
|
||||
char *addr;
|
||||
int port;
|
||||
int mtu;
|
||||
char *compression;
|
||||
char *fec;
|
||||
@@ -309,6 +312,9 @@ static void parse_fmt(int argc, char **argv, char **bufsize, unsigned short *por
|
||||
for(int i = 1; i < argc; ++i) {
|
||||
if (argv[i][0] == '-') {
|
||||
switch(argv[i][1]) {
|
||||
case 'P':
|
||||
(*host_opts)[host_idx].port = atoi(argv[i + 1]);
|
||||
break;
|
||||
case 'm':
|
||||
(*host_opts)[host_idx].mtu = atoi(argv[i + 1]);
|
||||
break;
|
||||
@@ -490,40 +496,44 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
// we need only one shared receiver decompressor for all recompressing streams
|
||||
state.decompress = hd_rum_decompress_init(port + 2);
|
||||
state.decompress = hd_rum_decompress_init();
|
||||
if(!state.decompress) {
|
||||
return EXIT_INIT_PORT;
|
||||
}
|
||||
|
||||
state.host_count = host_count;
|
||||
for (i = 0; i < host_count; i++) {
|
||||
int mtu = 1500;
|
||||
if(hosts[i].mtu) {
|
||||
mtu = hosts[i].mtu;
|
||||
}
|
||||
int tx_port = port;
|
||||
if(hosts[i].port) {
|
||||
tx_port = hosts[i].port;
|
||||
}
|
||||
|
||||
state.replicas[i].magic = REPLICA_MAGIC;
|
||||
state.replicas[i].host = hosts[i].addr;
|
||||
state.replicas[i].port = port;
|
||||
state.replicas[i].sock = output_socket(port, hosts[i].addr,
|
||||
state.replicas[i].sock = output_socket(tx_port, hosts[i].addr,
|
||||
bufsize);
|
||||
module_init_default(&state.replicas[i].mod);
|
||||
state.replicas[i].mod.cls = MODULE_CLASS_PORT;
|
||||
|
||||
if(hosts[i].compression == NULL) {
|
||||
state.replicas[i].type = USE_SOCK;
|
||||
int mtu = 1500;
|
||||
char compress[] = "none";
|
||||
char *fec = NULL;
|
||||
state.replicas[i].recompress = recompress_init(&state.replicas[i].mod,
|
||||
hosts[i].addr, compress,
|
||||
0, port, mtu, fec, hosts[i].packet_rate);
|
||||
0, tx_port, mtu, fec, hosts[i].packet_rate);
|
||||
hd_rum_decompress_add_inactive_port(state.decompress, state.replicas[i].recompress);
|
||||
} else {
|
||||
state.replicas[i].type = RECOMPRESS;
|
||||
int mtu = 1500;
|
||||
if(hosts[i].mtu) {
|
||||
mtu = hosts[i].mtu;
|
||||
}
|
||||
|
||||
state.replicas[i].recompress = recompress_init(&state.replicas[i].mod,
|
||||
hosts[i].addr, hosts[i].compression,
|
||||
0, port, mtu, hosts[i].fec, hosts[i].packet_rate);
|
||||
0, tx_port, mtu, hosts[i].fec, hosts[i].packet_rate);
|
||||
if(state.replicas[i].recompress == 0) {
|
||||
fprintf(stderr, "Initializing output port '%s' failed!\n",
|
||||
hosts[i].addr);
|
||||
|
||||
@@ -249,7 +249,8 @@ static void usage(void)
|
||||
printf("\n");
|
||||
printf("\t--audio-channel-map <mapping> | help\n");
|
||||
printf("\n");
|
||||
printf("\t--audio-scale <factor> | <method> | help\n");
|
||||
printf("\t--audio-scale <factor> | <method> | help\n");
|
||||
printf("\t \tscales received audio\n");
|
||||
printf("\n");
|
||||
printf("\t--audio-capture-channels <count> number of input channels that will\n");
|
||||
printf("\t be captured (default 2).\n");
|
||||
|
||||
@@ -430,8 +430,8 @@ int decode_audio_frame(struct coded_data *cdata, void *data)
|
||||
if(device_sample_rate == sample_rate) // no resampling
|
||||
device_bps = bps;
|
||||
|
||||
printf("New incoming audio format detected: %d Hz, %d channels, %d bits per sample, codec %s\n",
|
||||
sample_rate, input_channels, bps * 8,
|
||||
printf("New incoming audio format detected: %d Hz, %d channel%s, %d bits per sample, codec %s\n",
|
||||
sample_rate, input_channels, input_channels == 1 ? "": "s", bps * 8,
|
||||
get_name_to_audio_codec(get_audio_codec_to_tag(audio_tag)));
|
||||
|
||||
|
||||
|
||||
@@ -205,6 +205,15 @@ struct module *dxt_glsl_compress_init(struct module *parent, const struct video_
|
||||
struct state_video_compress_rtdxt *s;
|
||||
const char *opts = params->cfg;
|
||||
|
||||
if(strcmp(opts, "help") == 0) {
|
||||
printf("DXT GLSL comperssion usage:\n");
|
||||
printf("\t-c RTDXT:DXT1\n");
|
||||
printf("\t\tcompress with DXT1\n");
|
||||
printf("\t-c RTDXT:DXT5\n");
|
||||
printf("\t\tcompress with DXT5 YCoCg\n");
|
||||
return &compress_init_noerr;
|
||||
}
|
||||
|
||||
s = (struct state_video_compress_rtdxt *) calloc(1, sizeof(struct state_video_compress_rtdxt));
|
||||
|
||||
s->decoded = NULL;
|
||||
@@ -216,15 +225,6 @@ struct module *dxt_glsl_compress_init(struct module *parent, const struct video_
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if(strcmp(opts, "help") == 0) {
|
||||
printf("DXT GLSL comperssion usage:\n");
|
||||
printf("\t-c RTDXT:DXT1\n");
|
||||
printf("\t\tcompress with DXT1\n");
|
||||
printf("\t-c RTDXT:DXT5\n");
|
||||
printf("\t\tcompress with DXT5 YCoCg\n");
|
||||
return &compress_init_noerr;
|
||||
}
|
||||
|
||||
if (strcasecmp(opts, "DXT5") == 0) {
|
||||
s->color_spec = DXT5;
|
||||
} else if (strcasecmp(opts, "DXT1") == 0) {
|
||||
|
||||
Reference in New Issue
Block a user