filesink cannot write output file more than 2048 MB, windows, gstreamer 1.16.1 mingw x64

Артем Семенов artem.semenov at jarillolabs.com
Wed Sep 15 21:38:28 UTC 2021


Hello, Nicolas.

Thanks for your answers!

But the pipeline:

/    gst-launch-1.0.exe videotestsrc ! filesink location=bigfile.yuv/

will not detect this bug, since there is no need to seek inside the file in this case, and 
therefore fseeko will not be called.

But the pipeline like:
/
     gst-launch-1.0.exe videotestsrc ! video/x-raw,width=1920,height=1080,framerate=30/1 ! x264enc 
bitrate=50000 ! matroskamux ! filesink location=test.mkv/

will detect it.

I conducted an experiment - gstreamer-1.0-mingw-x86_64-1.16.3.msi prebuilt binary does not contain 
this error.

Anyway, thank you very much!

On 15.09.2021, 21:28:03:
> Le mercredi 15 septembre 2021 à 17:18 +0300, Артем Семенов a écrit :
>> Hello, Nicolas.
>>
>> Thanks!
>>
>> The reason for this error was obvious, but the reasons for its occurrence were not obvious for me.
>>
>> Ultimately, gstreamer-1.0-mingw-x86_64-1.16.3.msi prebuilt binary does not contain this error, 
>> am I right?
>
> I think it's faster to just test it then to dig into history:
>
>   gst-launch-1.0.exe videotestsrc ! filesink location=bigfile.yuv
>
> If it's using older meson, it will stop at 2G, otherwise it will up your hard-drive :-D
>
>>
>> I don't want to use the msvc build, in our projects, we are now trying to completely switch to 
>> gcc and cmake, taking into account the urgent need for cross-platform.
>>
>> By the way, was the performance of gstreamer compared in the mingw vs msvc build on windows?
>
> I haven't heard of any scientific measure of performance comparing MingW and MSCV. For most of 
> the work, I would expect similar results (though larger binary). Note that the binary for 1.16 
> might be built with an old Mingw, I can't remember when we updated that toolchain in your build 
> system. There is plugins that cannot be built without MSCV, and but opposite is also true.
>
>>
>> About FAT32 - this is a well-known limitation, of course, we use ntfs.
>>
>> Thank you again!
>>
>> On 15.09.2021, 15:59:09:
>>
>>> Le mercredi 15 septembre 2021 à 11:44 +0300, Артем Семенов via gstreamer-devel a
>>> écrit :
>>>
>>>> Hello, James.
>>>>   
>>>>   You are wrong, it's not a "low down" windows issue.
>>>>   
>>>>   I found this:
>>>>   
>>>>   1. "filesink: fails with matroskamux when writing files larger than 2GiB on
>>>> Windows" https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/579  2. "meson: Ensure large file support for fseeko"
>>>> https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/517
>>>>   
>>>>   And it looks like this fix was backported into 1.16 (1.16.3).
>>> This one was confusing, this MR was closed, as in the end it was a Meson bug
>>> (regression in the transition to Meson):
>>> https://github.com/mesonbuild/meson/pull/7272
>>> This is a bit specific to MSys Windows builds, MSVC build should not be
>>> affected.
>>> p.s. Note that the hard limit on FAT is 4G files (unsigned).
>>>
>>>>   
>>>>   On 15.09.2021, 09:13:57:
>>>>   
>>>>
>>>>> That is a windows issue that cannot be fixed. (Well it can, but it is low down
>>>>> in windows)
>>>>> James
>>>>   
>>>>   
>>>>
>>>>>    
>>>>>
>>>>>> On 15 Sep 2021, at 8:25 am, Артем Семенов via gstreamer-devel
>>>>>> <gstreamer-devel at lists.freedesktop.org>  wrote:
>>>>>> Hello.
>>>>>> Windows, gstreamer 1.16.1 mingw x64:
>>>>>> When the output file reaches a size greater than 2048 MB, filesink stops
>>>>>> recording and generates an error:
>>>>>> GST_DEBUG=3
>>>>>> 0:19:09.838828958  5464 000002C708342300 WARN                filesink
>>>>>> gstfilesink.c:606:gst_file_sink_event:<filesink> error: Error while seeking
>>>>>> in file "{path_to_output_file}".
>>>>>> 0:19:09.838856894  5464 000002C708342300 WARN                filesink
>>>>>> gstfilesink.c:606:gst_file_sink_event:<filesink> error: system error:
>>>>>> Invalid argument
>>>>>> GST_DEBUG=5
>>>>>> 1:00:17.891237294  6080 000001CC520A4940 DEBUG               filesink
>>>>>> gstfilesink.c:504:gst_file_sink_do_seek:<filesink> Seeking to offset
>>>>>> 2147862966 using fseeko
>>>>>> 1:00:17.891284786  6080 000001CC520A4940 DEBUG               filesink
>>>>>> gstfilesink.c:714:gst_file_sink_flush_buffer:<filesink> Flushing out buffer
>>>>>> of size 24
>>>>>> 1:00:17.891333954  6080 000001CC520A4940 DEBUG               filesink
>>>>>> gstfilesink.c:658:gst_file_sink_render_buffers:<filesink> writing 1 buffers
>>>>>> (1 memories, 24 bytes) at position 1074029354
>>>>>> 1:00:17.912922452  6080 000001CC520A4940 DEBUG               filesink
>>>>>> gstfilesink.c:535:gst_file_sink_do_seek:<filesink> Seeking failed: Invalid
>>>>>> argument
>>>>>> 1:00:17.912970224  6080 000001CC520A4940 WARN                filesink
>>>>>> gstfilesink.c:606:gst_file_sink_event:<filesink> error: Error while seeking
>>>>>> in file "{path_to_output_file}".
>>>>>> Obviously, this is due to the fact that the 32-bit version of the fseek
>>>>>> function is used instead of the 64-bit one.
>>>>>> Has this been fixed in subsequent releases?
>> -- 
>> With best regards,
>>  Artem Semenov mailto:artem.semenov at jarillolabs.com
>

-- 
With best regards,
  Artem Semenov mailto:artem.semenov at jarillolabs.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20210916/9ad01d1b/attachment-0001.htm>


More information about the gstreamer-devel mailing list