[Live-devel] How to bypass streamlimit causes by EventTriggerIDs

Fischer Daniel d.fischer at ids-imaging.de
Mon Jun 6 00:01:38 PDT 2011


No problem. Thanks for your answer. 

It was not the problem to reimplement “createEventTrigger”, “deleteEventTrigger”, “triggerEvent” and “SingleStep”. I did this first. But this didn´t solve my problem. Windows make the trouble :-)

Windows has a limitation of numbers of sockets that can be open by one process. This is 64 ( 2 per stream = 32 stream clients ). So I can create millions of EventTriggerID´s, it didn´t effect anything…

To solve this I only define FD_SETSIZE to a higher value.

 

Viele Grüße / Best regards 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Dipl.-Inf. (FH)
Daniel Fischer
iGuard - Development

IDS Imaging Development Systems GmbH
Dimbacher Strasse 6-8 ▪ D-74182 Obersulm
Handelsregister: Stuttgart HRB 106225
Geschäftsführer: Jürgen Hartmann, Armin Vogt, Torsten Wiesinger
T :        +49 (0)7134 / 961 96-0
F :        +49 (0)7134 / 961 96-99
E :        d.fischer at ids-imaging.de

Web: www.ids-imaging.com <http://www.ids-imaging.com/>  -  www.iguard.de <http://www.iguard.de/> 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 P   Please consider the environment before printing this e-mail

________________________________

Von: live-devel-bounces at ns.live555.com [mailto:live-devel-bounces at ns.live555.com] Im Auftrag von Ross Finlayson
Gesendet: Donnerstag, 2. Juni 2011 04:06
An: LIVE555 Streaming Media - development & use
Betreff: Re: [Live-devel] How to bypass streamlimit causes by EventTriggerIDs

 

	I am using live555 to stream several network cameras. For that I generate one RTSP-Server and for every camera a subsession on this server with a new URL. To signal the TaskScheduler, that there is a new frame for a stream, I use a EventTriggerID. Every stream has his own EventTriggerID. Now I got the problem, that the EventTriggerID is generated by a bitmask (0x80000000), and the line

	 

	"m_EventTriggerId = envir().taskScheduler().createEventTrigger(deliverFrame0);"

	 

	generates only 32 EventTriggerID´s, so that I have a maximum of 32 stream receivers.

	Now my question: Is it possible to solve that problem without generating more RTSP-Server with different TaskScheduler on different ports?

 

Sorry for the long delay in responding to this.  (I've been traveling for the past two months, and am way behind on email.)

 

Note that the implementation of 'event triggers' that we provide (for the "BasicTaskScheduler" class) is just one possible implementation.  You can - if you wish - provide your own implementation, by

        1/ Defining a subclass of "BasicTaskScheduler", and

        2/ Reimplementing the virtual functions

                virtual EventTriggerId createEventTrigger(TaskFunc* eventHandlerProc);

                virtual void deleteEventTrigger(EventTriggerId eventTriggerId);

                virtual void triggerEvent(EventTriggerId eventTriggerId, void* clientData = NULL);

 

Note that "EventTriggerId" must remain a "u_int32_t", so you won't be able to change that.  So you won't be able to continue to use it as a 'bit mask', if you want to support more than 32 triggers.  But you can implement event triggers any way you choose.

-- 


Ross Finlayson
Live Networks, Inc.
http://www.live555.com/

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20110606/f5d70064/attachment-0001.html>


More information about the live-devel mailing list