GNOME Bugzilla – Bug 708808
qtmux: Error out when downstream is not seekable and no fast-start
Last modified: 2015-04-12 13:54:17 UTC
http://lists.freedesktop.org/archives/gstreamer-devel/2013-September/043147.html Requires fixing the unit test. Alternatively find a better solution :)
The other option if we don't want to error out is to set faststart=TRUE. The problem is that nothing will be pushed downstream until the stream is finished, which wouldn't be a problem because you can't stream live with regular MP4 and the fragmented variant requires a completely different setup.
I was just looking at this code. I think there's no point just warning and switching to 'streamable=true' in non fast-start mode or non-fragmented-streamable mode. In 'normal' mp4 mode, if you can't seek downstream then you can't rewrite the mdat to have non-zero size, which means mdat covers the rest of the file, including any moov header you might write at the end - making it invisible and therefore the file is unplayable anyway. It would be better to error out, and fix the unit test accordingly, so I think I'll do that.
Created attachment 300741 [details] [review] isomp4: Make non-seekable downstream an error in normal mode When not in fast-start or fragmented mode, we need to be able to rewrite the size of the mdat atom, or else the output just won't be playable - the mdat placeholder with size == 0 will cover the rest of the file, including any moov atom we write out.
Created attachment 300742 [details] [review] isomp4: Make non-seekable downstream an error in normal mode When not in fast-start or fragmented mode, we need to be able to rewrite the size of the mdat atom, or else the output just won't be playable - the mdat placeholder with size == 0 will cover the rest of the file, including any moov atom we write out.
Grargh. Attached the patch with uncommitted changes. Fixed this time.
Indeed, I think erroring out is the only thing we can do here in non-fragmented mode.
I pushed this a few days ago, forgot to close.