diff options
-rw-r--r-- | src/mov_encoder_writer.cc | 12 | ||||
-rw-r--r-- | src/multicast.cc | 9 | ||||
-rw-r--r-- | src/multicast.h | 2 | ||||
-rw-r--r-- | src/multiplexer.cc | 2 |
4 files changed, 18 insertions, 7 deletions
diff --git a/src/mov_encoder_writer.cc b/src/mov_encoder_writer.cc index 572a81e..7f3bfec 100644 --- a/src/mov_encoder_writer.cc +++ b/src/mov_encoder_writer.cc @@ -81,7 +81,15 @@ MovEncoderWriter::MovEncoderWriter(const char* cpr, file = new File(fname, "mpg", info); - multicast = new Multicast(info); + if(config->readBool("server_multicast")) { + string *addr = config->readString("server_multicast_addr"); + int port = config->readInt("server_multicast_port"); + info->info("Enabling multicast %s : %d", addr->c_str(), port); + multicast = new Multicast(info, (char*)addr->c_str(), port); + } else { + info->info("Disabling multicast"); + multicast = NULL; + } video_queue = video_q; audio_queue = audio_q; @@ -93,7 +101,7 @@ MovEncoderWriter::~MovEncoderWriter() { info->info("~MovEncoderWriter"); delete file; - delete multicast; + if(multicast) delete multicast; } diff --git a/src/multicast.cc b/src/multicast.cc index b64bfde..80be2ce 100644 --- a/src/multicast.cc +++ b/src/multicast.cc @@ -33,7 +33,7 @@ #include <sys/param.h> #include <arpa/inet.h> -Multicast::Multicast(Info *i) +Multicast::Multicast(Info *i, char *addr, int port) { /* Multicast adresses: @@ -42,11 +42,14 @@ Multicast::Multicast(Info *i) 224.0.0.5 OSPF routers 224.0.0.6 OSPF designated routers 224.0.0.12 DHCP server/relay agent +server_multicast = true +server_multicast_addr = "224.0.0.1" +server_multicast_port = 1234 */ // Multicast to all systems on this subnet - char addr[] = "224.0.0.1"; - int port = 1234; + // char addr[] = "224.0.0.1"; + // int port = 1234; info = i; if(!UDPOpen(addr, port)) info->error("Error creating socket %s:%d", addr, port); diff --git a/src/multicast.h b/src/multicast.h index 50727a5..0f83e87 100644 --- a/src/multicast.h +++ b/src/multicast.h @@ -32,7 +32,7 @@ class Multicast { public: - Multicast(Info *info); + Multicast(Info *i, char *addr, int port); ~Multicast(); void Write(void* buf, int size); diff --git a/src/multiplexer.cc b/src/multiplexer.cc index eafcc8b..69e727a 100644 --- a/src/multiplexer.cc +++ b/src/multiplexer.cc @@ -103,7 +103,7 @@ int Multiplexer::Write(void* data, int size) { int ret; - multicast->Write(data, size); + if(multicast) multicast->Write(data, size); ret = file->Write(data, size); return ret; |