summaryrefslogtreecommitdiff
path: root/gst/isomp4
Commit message (Collapse)AuthorAgeFilesLines
* qtdemux: remove fixme from 2006Thiago Santos2015-05-251-1/+0
| | | | It has been verified by use over time.
* qtdemux: fix reverse playback of fragmented mediaThiago Santos2015-05-251-16/+37
| | | | | | | | | | | | qtdemux creates a samples array and gets the timestamps for buffers by accumulating their durations. When doing reverse playback of fragments, accumulating samples will lead to wrong timestamps as the timestamps should go decreasing from fragment to fragment and the accumulation will produce wrong results. In this case, when receiving a discont for fragmented reverse playback, the previous samples information should be flushed before new data is processed.
* qtdemux: avoid wrong warnings on unknown node typesStefan Sauer2015-05-151-0/+2
| | | | | Add 'name' and 'mean' fourccs, as we handle them. Right now each use would trigger a warning.
* qtdemux: fix example pipeline in docsPaul Hyunil2015-05-081-1/+1
| | | | | | | | The gst-launch script for example launch line to test qtdemux is missing a queue before the decodebins, otherwise the gst-launch-1.0 command won't work. https://bugzilla.gnome.org/show_bug.cgi?id=749054
* qtdemux: fix buffer leak on eos in push modeTim-Philipp Müller2015-04-301-4/+11
| | | | | | | | Based on patch by Guillaume Desmottes. scenario: validate.http.playback.seek_with_stop.raw_h264_1_mp4 https://bugzilla.gnome.org/show_bug.cgi?id=748617
* qtdemux: Check for sizes of the rdrf (redirect) atom before accessing the ↵Sebastian Dröge2015-04-291-24/+36
| | | | | | data and use g_strndup() instead of g_strdup() Thanks to Ralph Giles for reporting this.
* Rename property enums from ARG_ to PROP_Luis de Bethencourt2015-04-271-1/+1
| | | | Property enum items should be named PROP_ for consistency and readability.
* Remove obsolete Android build cruftTim-Philipp Müller2015-04-261-14/+0
| | | | This is not needed any longer.
* qtdemux: fix tag list leaks on error pathsVincent Penquerc'h2015-04-161-6/+6
|
* qtdemux: fix tag list leak on unknown stream typeVincent Penquerc'h2015-04-161-0/+3
|
* qtdemux: Update segment.start after key-unit seekHyunjun Ko2015-04-101-0/+1
| | | | | | | | | | | | | | When doing key uint seek, qtdemux calls gst_qtdemux_adjust_seek to get proper offset. And then this offset is set to segment.position and segment.time in gst_qtdemux_perform_seek but segment.start is not updated. After that, application sends segment query, qtdemux sets start and stop to query using gst_segment_to_stream_time. Due to the wrong value in segment.start, the stop position is smaller than it should. https://bugzilla.gnome.org/show_bug.cgi?id=746822
* qtmux: remove useless variable do_ptsThiago Santos2015-04-101-5/+3
| | | | | | We always write the CTTS in qtmux. Ideally we only want to do that for streams that need DTS, it should be present on the track information rather than be decided based on each buffer
* qtmux: remove subtraction that makes PTS/DTS start from 0Thiago Santos2015-04-101-38/+2
| | | | | | As qt uses durations, it doesn't matter, only the difference between consecutive buffers is important. Also, collectpads already replaces PTS/DTS with the running times for them.
* isomp4: Refactor various state variables into a mux_mode varJan Schmidt2015-04-092-144/+269
| | | | | | | Instead of checking various state variables around the muxer, track the current muxing mode in a single 'mux_mode' enum. Add some implementation notes about the different mux modes
* qtdemux: Don't accumulate segment bases manuallySebastian Dröge2015-04-061-3/+3
| | | | | | | | gst_segment_do_seek() does that for us already, and doing it twice will break non-flushing seeks in interesting ways. Leftover from 1.0 porting. Also copy over segment offset and applied_rate, just in case.
* qtdemux: stbl_index is valid from 0 onwardsThiago Santos2015-04-061-1/+1
| | | | | | It indicates the last sample parsed, not the next one to parse. As it starts in -1, any value from 0 onwards means that it has some valid data.
* qtdemux: Guard against 64-bit overflowJan Schmidt2015-04-031-3/+12
| | | | | | For large-file atoms, guard against overflow in the size field, which could make us jump backward in the file and cause infinite loops.
* isomp4: Make non-seekable downstream an error in normal modeJan Schmidt2015-04-032-22/+29
| | | | | | | | | 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. https://bugzilla.gnome.org/show_bug.cgi?id=708808
* qtdemux: resurrect some flow return handlingMark Nauwelaerts2015-03-291-4/+15
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=744572
* Fix double semicolonsTim-Philipp Müller2015-03-101-1/+1
|
* qtdemux: fix key unit seekMatej Knopp2015-03-011-3/+3
| | | | | | | | | | Unlike many other seek flags, the KEY_UNIT seek flag is not copied over into the GstSegment, since it's only relevant for the seek itself, so we need to pass it explicitly to the seek handler here. https://bugzilla.gnome.org/show_bug.cgi?id=745339
* qtdemux: All segment resulting from a seek should have the same seqnumThibault Saunier2015-02-231-1/+0
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=744983
* qtmux: remove not needed conditionThiago Santos2015-02-182-4/+3
| | | | gst_buffer_replace can handle NULL inputs by itself
* qtdemux: prefer the tfdt timestamp over the buffer's that is less accurateThiago Santos2015-02-181-0/+6
| | | | | The tfdt should be more accurate as the buffer timestamp is provided by the fragmented format manifest and it might just be an approximation.
* isomp4: Redefine gst_isoff_ symbols to gst_isoff_qt_Edward Hervey2015-02-173-45/+48
| | | | | | We need different symbol names, because these symbols are also present in the fragmented plugin ... which will cause conflicts when doing static linking
* qtdemux: do not use sparse streams in push-based seekingThiago Santos2015-02-141-3/+6
| | | | | | | | | | | | Using the sparse streams can make the push-based seeking return too far in the stream. It also can lead to issues as the sparse streams will be ignored when restarting playback and, if the sparse stream is the one that has the earliest sample, it will confuse qtdemux's offsets as one stream will have an earlier offset than the demuxer's one which might lead to early EOS. https://bugzilla.gnome.org/show_bug.cgi?id=742661
* qtdemux: Initial 'sidx' atom parsing supportPhilippe Normand2015-02-126-1/+337
| | | | | | | | | | Parse the 'sidx' atom and update the total duration according to the parser result. The isoff parser code is imported from gst-plugins-bad's dashdemux and a gst_isoff_sidx_parser_add_data() function was factored out of the gst_isoff_sidx_parser_add_buffer() function. https://bugzilla.gnome.org/show_bug.cgi?id=743578
* qtdemux: Simple implementation of GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITSJan Schmidt2015-02-041-0/+9
| | | | | When the trickmode key-units flag is set on the segment, simply skip any sample on a video stream that isn't a keyframe
* qtdemux: parse stream tagsThiago Santos2015-02-021-126/+127
| | | | | | | | Keep global and stream tags separately and parse the udta node that can be found under the trak atom. The udta will contain stream specific tags and will be pushed as such https://bugzilla.gnome.org/show_bug.cgi?id=692473
* qtmux: store stream and container tags separatelyThiago Santos2015-01-312-1/+31
| | | | | | | | | Tags received via events, when marked as stream tags, will be stored on that stream's trak atom instead of being stored in the main tags atom. This allows the resulting file to have global and stream tags stored. https://bugzilla.gnome.org/show_bug.cgi?id=692473
* qtmux: refactor tags functions to accomodata UDTA at trak levelThiago Santos2015-01-313-163/+161
| | | | | | | | | | Refactor the functions that were bound to the 'moov' atom to directly pass the desired 'udta' that should receive the tags. This allows the tags to be written to 'udta' at the 'moov' or the 'trak' level, creating tags that are for the container or for a stream only. https://bugzilla.gnome.org/show_bug.cgi?id=692473
* qtmux: map application name to _swr tagThiago Santos2015-01-311-0/+1
| | | | | | | It refers to the application name and version used to create the file https://bugzilla.gnome.org/show_bug.cgi?id=692473
* qtdemux: simplify segment.base mathThiago Santos2015-01-282-8/+1
| | | | | | | | | | | Remove a fix for heavily edited files added for fixing https://bugzilla.gnome.org/show_bug.cgi?id=345830 to work with seeks and proper gaps playback. The fix was replaced for a more general solution that bases on using previous segment's duration, just like it works for media segments playback. https://bugzilla.gnome.org/show_bug.cgi?id=743518
* qtdemux: Fix data dropping for fragmented streamsThiago Santos2015-01-271-6/+15
| | | | | | | | | For fragmented streams with extra data at the end of the mdat qtdemux was not dropping those bytes and would try to use that extra data as the beginning of a new atom, causing the stream to fail. https://bugzilla.gnome.org/show_bug.cgi?id=743407
* qtdemux_dump: Bypass even more code if debugging is disabledEdward Hervey2015-01-211-0/+2
| | | | And avoid using variables that won't exist when debugging is disabled
* qtdemux: Only traverse/dump nodes if guaranteed to be usedEdward Hervey2015-01-211-1/+2
| | | | | __gst_debug_min is the "global" lowest debug level set. There's no guarantee the qtdemux debug category is actually set at that level.
* Constify some static arrays everywhereSebastian Dröge2015-01-213-10/+11
|
* qtdemux: fix deadlock seeking in files without seek entriesVincent Penquerc'h2015-01-191-1/+3
| | | | | | A mutex unlock was missing. https://bugzilla.gnome.org/show_bug.cgi?id=739975
* qtmux: Add support for v210Sebastian Dröge2015-01-133-1/+9
|
* qtdemux: v210 is v210, not UYVY and yuv2 is YUY2, not I420Sebastian Dröge2015-01-131-1/+20
| | | | | | | Also add a few other raw video formats we support: v308, v216 and add comments for a few others we don't support yet. https://developer.apple.com/library/mac/technotes/tn2162/
* qtdemux: fix stream time conversionThiago Santos2015-01-091-1/+1
| | | | | | | Use the right macro to convert to the correct scale or the segment information will be wrong https://bugzilla.gnome.org/show_bug.cgi?id=742572
* qtmux: fix ALAC muxingTim-Philipp Müller2014-12-251-1/+2
| | | | | | | | | Actually copy the codec data instead of copying nothing and then bombing out because there's no data. Fixes: gst-launch-1.0 audiotestsrc ! avenc_alac ! qtmux ! fakesink https://bugzilla.gnome.org/show_bug.cgi?id=741783
* qtdemux: Fix debug statementEdward Hervey2014-12-121-1/+1
| | | | | It was using the non-increasing offset variable, which made that statement not so useful :)
* qtdemux: Add macros for the various timescale conversionsEdward Hervey2014-12-121-89/+70
| | | | | This helps make the code more readable and avoid future bad usage of scaling function argument order.
* qtdemux: Copy flags of the overall segment to output segmentsJan Schmidt2014-12-121-0/+3
| | | | | Preserve the segment flags of the overall demux segment on the output segments for each pad.
* qtmux: use 64bit chunk_offsetMatej Knopp2014-12-101-1/+1
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=741279
* qtdemux: Fix rounding errors in duration updateEdward Hervey2014-12-101-4/+13
| | | | | | | Make sure we store updated segment stop/duration with the same granularity as the duration timescale. And add more debug
* qtdemux: Update duration when we get more informationEdward Hervey2014-12-101-1/+57
| | | | | | | | | | | When dealing with fragmented files, we will get more accurate duration information via the mfra and moof atoms. In order for playback to not stop at the initial duration (from the moov atom), we need to check and update the various duration variables when we find more information. Fixes playback of fragmented files in pull mode
* qtdemux: Remove variable assignments never readEdward Hervey2014-12-101-7/+0
| | | | As detected by clang/scan-build
* qtdemux: Use GstClockTime for nanosecond-based time variables/fieldsEdward Hervey2014-12-102-57/+64
| | | | | | Avoids confusion with timescaled-based variables and bytes (offset) variables. And use GST_CLOCK_TIME_NONE where applicable