|
This post was updated on .
Given the below launch string, I'm hoping to get wrapping [once again?] working when using queue2's temp file feature, so that if the temp file starts to extend past available disk space, it will wrap to the beginning of the file and start overwriting. Maybe I'm just missing something painfully obvious, and file wrapping does work under some specific condition?
gst-launch-1.0 udpsrc uri=udp://192.168.1.100:5004 buffer-size=10485760 ! queue2 temp-template=/video/video_XXXXXX.tmp temp-remove=false ! decodebin ! videoconvert ! videoscale ! ximagesink
If I'm not wrong in my observation, it looks like, perhaps, temp file wrapping once worked in queue2, or that it was intended to work, as the wrapping section of gst_queue2_create_write () checks for QUEUE_IS_USING_TEMP_FILE (). On the other hand, though, the following checks for a failed file seek keep the aforementioned wrapping section from ever being hit if the file size spans remaining available disk space.
if (QUEUE_IS_USING_TEMP_FILE (queue)
&& FSEEK_FILE (queue->temp_file, writing_pos))
goto seek_failed;
As of right now, wrapping seems to work when using queue2's ring buffer, but I'm strictly looking to buffer to file, not memory. I've attempted to edit both queue2 and downloadbuffer sources to get wrapping working like when using the ring buffer, but have failed on both counts. The closest I've gotten is with queue2, and my efforts so far have yielded just terrible video quality, much like one would encounter during heavy packet loss.
Has anyone successfully implemented file wrapping, or does anyone have any insight as to how I might better approach this? I can certainly supply my code changes, if anyone is interested in inspecting.
Erik? Wim?
Thanks.
|