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.

_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to