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

Nicolas Dufresne nicolas at ndufresne.ca
Wed Sep 15 18:28:03 UTC 2021


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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20210915/9168d88c/attachment.htm>


More information about the gstreamer-devel mailing list