I use live555 lib under windows.
I write code to get MPEG file duration:

  TaskScheduler* scheduler = BasicTaskScheduler::createNew();
  BasicUsageEnvironment* env = BasicUsageEnvironment::createNew(*scheduler);
  MPEG1or2FileServerDemux* demux =
MPEG1or2FileServerDemux::createNew(*env, inputFileName, False);
  if(demux)
    return double(demux->fileDuration());

In ealier versions of live555 all works fine, but in newest version
process terminates abnormally on line
MPEG1or2FileServerDemux::createNew()

I check source code and found bug in BasicTaskScheduler.cpp
In this file lines from line 73

#if defined(__WIN32__) || defined(_WIN32)
    int err = WSAGetLastError();
    // For some unknown reason, select() in Windoze sometimes fails with
WSAEINVAL if
    // it was called with no entries set in "readSet".  If this happens,
ignore it:
    if (err == WSAEINVAL && readSet.fd_count == 0) {
      err = 0;  // BUG at this line
      // To stop this from happening again, create a dummy readable socket:
      int dummySocketNum = socket(AF_INET, SOCK_DGRAM, 0);
      FD_SET((unsigned)dummySocketNum, &fReadSet);
    }
    if (err != EINTR) {
#else

must look like this

#if defined(__WIN32__) || defined(_WIN32)
    int err = WSAGetLastError();
    // For some unknown reason, select() in Windoze sometimes fails with
WSAEINVAL if
    // it was called with no entries set in "readSet".  If this happens,
ignore it:
    if (err == WSAEINVAL && readSet.fd_count == 0) {
      err = EINTR; // err SHOULD be EINTR for the further comparision
      // To stop this from happening again, create a dummy readable socket:
      int dummySocketNum = socket(AF_INET, SOCK_DGRAM, 0);
      FD_SET((unsigned)dummySocketNum, &fReadSet);
    }
    if (err != EINTR) {
#else

Is this right?

-- 
See you!
---
Vityusha V. Vinokurov - programmer
mailto:vic...@dialog.su
http://www.dialog.su
_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to