[Live-devel] simulate RTP packet loss

Andy Stevens stevens at electricalscience.com
Fri Sep 7 10:02:40 PDT 2012


 >> I would like to simulate packet loss of RTP packets on the network,
 >> and I would like to use Live555 to do this.  In fact, there already
 >> is some code in MultiFramedRTPSink (in the
 >> MultiFramedRTPSink::sendPacketIfNecessary() function) which is
 >> contained in a "TEST_LOSS" macro, and is hardcoded to simulate 10%
 >> loss:
 >>
 >> #ifdef TEST_LOSS
 >>     if ((our_random()%10) != 0) // simulate 10% packet loss
 >> ##### #endif
 >>
 >> I would like to do some more sophisticated testing (e.g. change the
 >> packet loss to 5% or 25%).  What is the "right" way to do this?
 >
 > Normally I don't advise modifying the supplied code.  However,
 > because you just want to simulate packet loss for testing (i.e., I
 > presume you don't plan on building a product that loses packets ,
 > you might as well just modify the (#ifdef'd out) code that's already
 > there.
 >
 > E.g., if you want to simulate N% packet loss (where N is an integer
 > in the range [0,100], then you could change the "if" condition above
 > to if ((our_random()%100 >= N) // simulate N% packet loss

Thanks Ross.  But actually, I DO want to build it into the product. 
Because the product is portable, I want to be able to turn on the packet 
loss feature in the field, and for multiple installations.  I also want 
to things like rearrange the packets so that they arrive in the wrong 
order, so I can be sure that they are being reordered properly.

But I just wanted to be sure that there wasn't any C++ trick that I 
hadn't thought of that was preventing me from subclassing this properly 
so that I can overload the private functions.  I guess that I am hacking 
the library more than the typical user.  Also, C++ is not my best 
language (I'm more of a C and Java guy).

--Andy Stevens



More information about the live-devel mailing list