[Live-devel] TS thrashing
Umar Qureshey
umar at janteq.com
Tue Mar 4 12:36:43 PST 2014
Hello,
I have modified the testH264VideoToTransportStream.cpp program by simply replacing inputFileName to "stdin" and outputFileName to "/dev/my_device".
/dev/my_device is a Linux device driver that transports the TS data to the streaming hardware.
Then I run the following command line:
./openRTSP -v rtsp://192.168.1.214/stream/profile1=u | ./testH264VideoToTransportStreamToMicrowave
This works well except there is a lot of "thrashing". Even with constant bitrate set in the encoder, the bitrate varies a lot. At first I suspected that this may be happening because of the Linux pipe so I recompiled the kernel and increased to pipe size to 1 MB. This did not help.
So to verify if this is a Linux pipe issue I modified testH264VideoToTransportStream.cpp to output to UDP:
./openRTSP -v rtsp://192.168.1.214/stream/profile1=u | ./testH264VideoToTransportStreamToUDP
The above command line showed a very constant bitrate on the receiver side so I can deduce it's not a Linux pipe issue.
Finally, I put some debug prints in the Linux device driver and it shows that each fwrite call by the FileSink object is 188 bytes.
I have already changed the bufferSize of FileSink to 1000000 for testing but that doesn't seem to help; it's still writing only 188 bytes per fwrite call:
MediaSink* outputSink = FileSink::createNew(*env, outputFileName, 1000000);
So is there a way to have more buffering going on so at each fwrite call writes more than 188 bytes at a time to /dev/my_device ??
Thanks.
More information about the live-devel
mailing list