It`s work now!!!!let me know how it's working.
Smooth stutter free playback, fast channel switch (>3 hour stable play).
*.flv streams not tested.
It`s work now!!!!let me know how it's working.
Stream is FLV not MPEG-TS which is required for Tv Service. If anybody knows, how to convert real-time FLV stream to MPEG-TS stream, let me know (I tried it with VLC but it fails).
Since FLV - this is a media container, not format, some players may not correctly play back video or audio stream in the absence of the codec used to create the file. FLV-format partly proprietary. Codecs are closed and protected by patents, and the container is open. FLV-file is a bit stream, which is a version of the video standard H.263. This is a video compression standard designed for transmission over channels with low bandwidth (128 kbps and below).
VLC - work / MP- work
http://tv.x-lan.net.ua:8015/5channel
Stream 0
Type: Video
Original ID: 6511
Codec: MPEG-1/2 Video (mpgv)
Resolution: 720x576
Frame rate: 50
Stream 1
Type: Audio
Original ID: 6512
Codec: MPEG Audio layer 1/2/3 (mpga)
Channels: Mono
Sample rate: 48000 Hz
Bitrate: 160 kb/s
VLC - work / MP- work
http://tv.x-lan.net.ua:8014/inter
Stream 0
Type: Video
Original ID: 1031
Codec: H264 - MPEG-4 AVC (part 10) (h264)
Resolution: 720x576
Frame rate: 50
Stream 1
Type: Audio
Original ID: 1032
Codec: MPEG Audio layer 1/2/3 (mpga)
Channels: Stereo
Sample rate: 48000 Hz
Bitrate: 192 kb/s
VLC - work / MP- work
SKYNET Counter-Strike
Stream 0
Type: Audio
Original ID: 68
Codec: MPEG Audio layer 1/2/3 (mpga)
Channels: Stereo
Sample rate: 48000 Hz
Bitrate: 192 kb/s
Stream 1
Type: Video
Original ID: 69
Codec: MPEG-1/2 Video (mpgv)
Resolution: 704x576
Frame rate: 50
VLC - work / MP- NOT work
http://89.232.125.188:3526/stream.flv
Stream 0
Type: Video
Codec: H264 - MPEG-4 AVC (part 10) (avc1)
Resolution: 320x240
Frame rate: 16
Stream 1
Type: Audio
Codec: MPEG Audio layer 1/2/3 (mpga)
Channels: Mono
Sample rate: 22050 Hz
Bitrate: 32 kb/s
Version, which you're using, has a bug (which occurs when buffer is full) which cause not releasing critical section and buffer cannot get empty => video stops and TvService goes to 100% CPU utilization.
RTP still not working/supported at the moment, right?
I also saw that you switched the way of getting the data from the winsocket back to polling. Is there a reason for this? The callback mechanism was the main reason to add the winsock-worker thread.
You set it to 10ms, but the value depends heavily on the bandwith of the stream and on the cpu speed.
Did you have better results with polling?
Hi,
there is new version of filter. The previous version has small bug
Unfortunately I have to report that this evening I've had some of the worst stutter in a long time. So much so that I had to restore my old version of the filter
Using UDP of course
It means that no data can be received (=> stuttering) because there is no space in buffer. Because it's linear buffer, it have to be released full and than new data can be received. But in case of using cyclic buffer it don't have to be better.WinsockWorker(): UDP: no data received, buffer free space too small, buffer size: 4194304, free buffer size: 212, occupied buffer size: 1048364, packet size: 1316
EnterCriticalSection(&criticalSection);
int occupiedSpace = this->buffer.GetBufferOccupiedSpace();
LeaveCriticalSection(&criticalSection);
#ifdef EXTENSIVELOGGING
LogDebug("DoBufferProcessingLoop(): occupied space: %i", occupiedSpace);
#endif
if (occupiedSpace > 0)
{
IMediaSample *pSample;
HRESULT hr = GetDeliveryBuffer(&pSample, NULL, NULL, 0);
if (FAILED(hr))
{
Sleep(1);
continue; // go round again. Perhaps the error will go away
// or the allocator is decommited & we will be asked to
// exit soon.
}
...
}