Hello,<div><br></div><div>I'm trying to develop a small program that reads output from an xvid encoder through a pipe (named "\\.\pipe\file.m4e" as an example) and serves it over RTSP - unicast.</div><div><br>

</div><div>I've got a small application based off of testOnDemandRTSPServer.cpp, and it works if I save the bitstream to a file and give it that.  But once I use the pipe, VLC times out trying to connect to the server, and the server doesn't give any errors.</div>

<div><br></div><div>Upon digging into the code, I found this in ByteStreamSource.cpp:</div><div><br></div><div><div>#ifdef READ_FROM_FILES_SYNCHRONOUSLY</div><div>  fFrameSize = fread(fTo, 1, fMaxSize, fFid);</div><div>#else</div>

<div>  if (fFidIsSeekable) {</div><div>    fFrameSize = fread(fTo, 1, fMaxSize, fFid);</div><div>  } else {</div><div>    // For non-seekable files (e.g., pipes), call "read()" rather than "fread()", to ensure that the read doesn't block:</div>

<div>    fFrameSize = read(fileno(fFid), fTo, fMaxSize);</div><div>  }</div><div>#endif</div></div><div><br></div><div>....and looking for READ_FROM_FILES_SYNCHRONOUSLY I find it defined in InputFile.hh with the following note:</div>

<div><br></div><div><div>#define READ_FROM_FILES_SYNCHRONOUSLY 1</div><div>    // Because Windows is a silly toy operating system that doesn't (reliably) treat</div><div>    // open files as being readable sockets (which can be handled within the default</div>

<div>    // "BasicTaskScheduler" event loop, using "select()"), we implement file reading</div><div>    // in Windows using synchronous, rather than asynchronous, I/O.  This can severely</div><div>    // limit the scalability of servers using this code that run on Windows.</div>

<div>    // If this is a problem for you, then either use a better operating system,</div><div>    // or else write your own Windows-specific event loop ("TaskScheduler" subclass)</div><div>    // that can handle readable data in Windows open files as an event.</div>

</div><div><br></div><div>I'm working under the assumption that the problem is that the fread call is blocking and cause the problems.</div><div><br></div><div>My question is this: can I safely undefine READ_FROM_FILES_SYNCHRONOUSLY (on windows) and have non-blocking calls to read, or do I need to extend ByteStreamSource with my own version that uses non-blocking IO in windows?</div>

<div><br></div><div>Thank you for any help...</div><div><br></div><div>Chris V.</div>