[Live-devel] Proper use of StreamReplicator

Jan Ekholm jan.ekholm at d-pointer.com
Sun Oct 19 02:12:36 PDT 2014


On 19 okt 2014, at 01:15, Ross Finlayson <finlayson at live555.com> wrote:

>> The replica is wrapped in the above class, as per instructions. However, doGetNextFrame() can not simply call
>> getNextFrame() as that requires a set of parameters that are not accessible:
>> 
>>        m_replica->getNextFrame( fTo, fMaxSize, fAfterGettingFunc, fAfterGettingClientData, fOnCloseFunc, fOnCloseClientData );
>> 
>> The fAfterGettingClientData and fOnCloseClientData are private and not accessible to my wrapper. I can also not override getNextFrame()
>> in my wrapper and save said data as that method is not virtual. Instead if I assume you made a typo and meant:
>> 
>> 	m_replica->doGetNextFrame();
> 
> No, I meant “getNextFrame()” - i.e., the regular call that an object makes to get data from an upstream “FramedSource”.  You need to provide your own ‘after getting’ and ‘on close’ functions and data.  There are numerous examples of this in the code.

Yes, there are a lot of uses in the code, but none work like a proxy to a proxy. I have absolutely no idea what my class is
supposed to do in this case. getNextFrame() is a central method and used in so many different ways across the entire library.
> 
>> Anyway, currently stream replicating does not work at all and it does not seem to be easy to do. The StreamReplicator class works in
>> trivial examples but breaks in real world code.
> 
> No, it works just fine.  It just needs to be used properly.

Well, it's escalated quickly from "just use replicator->createStreamReplica()" to creating new components with intricate
knowledge of the internal workings of Live555.

> In any case, I’ve pretty much used up all the free help I can give you on your project right now.

Understood. I thank you for all your help.

-- 
Jan Ekholm
jan.ekholm at d-pointer.com






More information about the live-devel mailing list