[Live-devel] How to dispatch media data to multiple sinks?

alphax alphax at vip.163.com
Mon Oct 31 00:04:05 PDT 2011


On 2011-10-14 17:04, Ross Finlayson wrote:
Now, I can use this filter as the source of my custom subsession object, then pass True as reuseFirstSource argument of the subsession constructor, so I can just use one filter to serve multiple remote player, right?



Yes, that should work.


However, your filter class is not quite right.  In your "afterGettingCallback()" function, you need to set the filter's "fFrameSize", "fNumTruncatedBytes", "fPresentationTime", and "fDurationInMicroseconds" member variables from the corresponding function parameters: "frameSize", "numTruncatedBytes", "presentationTime", and "durationInMicroseconds".

Thanks, According to your advise, I have updated my code. But there is another problem here.

My filter chain look like:

H264VideoRTPSource -> MyFilter -> H264VideoRTPSink.

The reason I use a Filter betweens H264VideoRTPSource and 
H264VideoRTPSink is, I want save the file and send to multiple remote 
player(unicast) simultaneously.

But it seems the H264VideoRTPSink can only work with H264VideoStreamFramer directly in the current source . 
I found, if my filter want to act as a source for H264VideoRTPSink, my filter must implement 2 methods:

1) Boolean& PictureEndMarker();
2) void GetSPSandPPS(u_int8_t*& sps, unsigned& spsSize, u_int8_t*& pps, unsigned& ppsSize);

Now, I use H264VideoStreamFramer as the model and implemented the 
GetSPSAndPPS() method, but the PictureEndMarker() method seems difficult to 
implement in such situation, it want to see the next packet to determine whether picture end mark(See the code in  H264VideoStreamParser::parse()).

Could you give me an advise or some sample code?


-- 
邱关坚
KwanKin Yau
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20111031/b16a6176/attachment.html>


More information about the live-devel mailing list