I've faced problems using live555 to capture many streams per process.
The source is select() calls. It can't accept fd index more than FD_SETSIZE
( 1024 on most distros).

I've made some patches to code and i believe it would be useful
Sorry, if i've choosed wrong way to send a patch, but cannot found right
way to post it on site.

1) GroupsockHelper.cpp :

      // Block until the socket is readable (with a 5-second timeout):

    #define GROUPSOCK_USES_POLL

    #ifndef GROUPSOCK_USES_POLL

      fd_set rd_set;

      FD_ZERO(&rd_set);

      FD_SET((unsigned)sock, &rd_set);

      const unsigned numFds = sock+1;

      struct timeval timeout;

      timeout.tv_sec = 5;

      timeout.tv_usec = 0;

      int result = select(numFds, &rd_set, NULL, NULL, &timeout);

      if (result <= 0) break;

#else

      struct pollfd pollFd;

      memset(&pollFd,0,sizeof(pollFd));

      pollFd.fd = sock;

      pollFd.events = POLLIN | POLLERR;

      int result = poll(&pollFd, 1, 5000);

      if (result < 0 ) break;

    #endif


2) I've made poll()-based task scheduler - how can I post it the best way ?

-- 
Сергей Куприенко
Отдел разработки ПО, "Эф-Эф"
Sergey Kuprienko
Head of software development dpt.
_______________________________________________
live-devel mailing list
[email protected]
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to