00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <liveMedia.hh>
00022 #include "BasicUsageEnvironment.hh"
00023 #include "GroupsockHelper.hh"
00024
00025 UsageEnvironment* env;
00026
00027
00028
00029
00030 int main(int argc, char** argv) {
00031
00032 TaskScheduler* scheduler = BasicTaskScheduler::createNew();
00033 env = BasicUsageEnvironment::createNew(*scheduler);
00034
00035
00036 char const* inputAddressStr
00037 #ifdef USE_SSM
00038 = "232.255.42.42";
00039 #else
00040 = "239.255.42.42";
00041 #endif
00042 struct in_addr inputAddress;
00043 inputAddress.s_addr = our_inet_addr(inputAddressStr);
00044
00045 Port const inputPort(8888);
00046 unsigned char const inputTTL = 0;
00047
00048 #ifdef USE_SSM
00049 char* sourceAddressStr = "aaa.bbb.ccc.ddd";
00050
00051 struct in_addr sourceFilterAddress;
00052 sourceFilterAddress.s_addr = our_inet_addr(sourceAddressStr);
00053
00054 Groupsock inputGroupsock(*env, inputAddress, sourceFilterAddress, inputPort);
00055 #else
00056 Groupsock inputGroupsock(*env, inputAddress, inputPort, inputTTL);
00057 #endif
00058
00059
00060 FramedSource* source = BasicUDPSource::createNew(*env, &inputGroupsock);
00061
00062
00063
00064 char const* outputAddressStr = "239.255.43.43";
00065
00066
00067
00068 struct in_addr outputAddress;
00069 outputAddress.s_addr = our_inet_addr(outputAddressStr);
00070
00071 Port const outputPort(4444);
00072 unsigned char const outputTTL = 255;
00073
00074 Groupsock outputGroupsock(*env, outputAddress, outputPort, outputTTL);
00075
00076
00077 unsigned const maxPacketSize = 65536;
00078 MediaSink* sink = BasicUDPSink::createNew(*env, &outputGroupsock, maxPacketSize);
00079
00080
00081
00082 sink->startPlaying(*source, NULL, NULL);
00083
00084 env->taskScheduler().doEventLoop();
00085
00086 return 0;
00087 }