summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* qtmux: round to nearest when computing mehd and tkhd durationAlicia Boya García2018-11-072-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes a bug where in some files mehd.fragment_duration is one unit less than the actual duration of the fragmented movie, as explained below: mehd.fragment_duration is computed by scaling the end timestamp of the last frame of the movie in (in nanoseconds) by the movie timescale. In some situations, the end timestamp is innacurate due to lossy conversion to fixed point required by GstBuffer upstream. Take for instance a movie with 3 frames at exactly 3 fps. $ gst-launch-1.0 -v videotestsrc num-buffers=3 \ ! video/x-raw, framerate="(fraction)3/1" \ ! x264enc \ ! fakesink silent=false dts: 999:59:59.333333334, pts: 1000:00:00.000000000, duration: 0:00:00.333333333 dts: 999:59:59.666666667, pts: 1000:00:00.666666666, duration: 0:00:00.333333334 dts: 1000:00:00.000000000, pts: 1000:00:00.333333333, duration: 0:00:00.333333333 The end timestamp is calculated by qtmux in this way: end timestamp = last frame DTS + last frame DUR - first frame DTS = = 1000:00:00.000000000 + 0:00:00.333333333 - 999:59:59.333333334 = = 0:00:00.999999999 qtmux needs to round this timestamp to the declared movie timescale, which can ameliorate this distortion, but it's important that round-neareast is used; otherwise it would backfire badly. Take for example a movie with a timescale of 30 units/s. 0.999999999 s * 30 units/s = 29.999999970 units A round-floor (as it was done before this patch) would set fragment_duration to 29 units, amplifying the original distorsion from 1 nanosecond up to 33 milliseconds less than the correct value. The greatest distortion would occur in the case where timescale = framerate, where an entire frame duration would be subtracted. Also, rounding is added to tkhd duration computation too, which potentially has the same problem. https://bugzilla.gnome.org/show_bug.cgi?id=793959
* matroska-ids: Fix uninitialized memory in contextsJohan Bjäreholt2018-11-071-0/+6
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=797327
* splitmuxsink: Do not hardcode frames_of_daily_jamVivia Nikolaidou2018-11-071-25/+19
| | | | | | | | | Apart from the obvious drawbacks of hardcoding, the drawback here was that, if we subtracted 2 frames (instead of 2.6) from the target running time, we'd request the next keyframe a bit too far into the future, which would make our files split at the wrong position. https://bugzilla.gnome.org/show_bug.cgi?id=797293
* flvdemux: Use aac codec-data to adjust channels if neededYeongjin Jeong2018-11-071-1/+12
| | | | | | | Flv does not support various channels in AAC stream format, for example flvdemux detect an audio channels of 2(stereo) when the AAC really is 1(mono). https://bugzilla.gnome.org/show_bug.cgi?id=797275
* splitmuxsink: Fix if condition in drop-frame timecode wrap-aroundVivia Nikolaidou2018-11-071-2/+2
| | | | | Was previously: if ( x | y && a == b). Changed it into if ((x & y) && (a == b)).
* splitmuxsink: Subtract daily jam offset when day wraps aroundVivia Nikolaidou2018-11-071-0/+27
| | | | | | | | | For drop-frame framerates, when the expected next max timecode wraps around at the end of the day, we have to subtract the offset of the daily jam, otherwise we end up with a duration that's a few frames too long. https://bugzilla.gnome.org/show_bug.cgi?id=797270
* rtpmux: protect against NULL capsHavard Graff2018-11-071-0/+3
| | | | | | | Due to state-changes deactivating the pad from another thread, this can happen. https://bugzilla.gnome.org/show_bug.cgi?id=795162
* splitmuxsink: accept pads named 'sink' on the muxer, handle static pads as wellPeter Körner2018-11-071-3/+46
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=797241
* matroska-demux: Fix caps memleakJohan Bjäreholt2018-11-053-1/+2
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=797326
* qtmux: Correctly set tkhd width/height to the display sizeSebastian Dröge2018-10-221-5/+2
| | | | | | | | | | It was previously set to the display aspect ratio, e.g. 4x3, 16x9, etc. but should be set to the display size. This is a regression from e655d47dfce1652630fe8ff5fb6be56370087004 (1.5.1) and was correct before that. https://bugzilla.gnome.org/show_bug.cgi?id=797318
* Revert "qtdemux: Store/Forward SEGMENT seqnum"Edward Hervey2018-10-191-5/+3
| | | | This reverts commit b31d80d1159b2376cdcf383b743457f73452e2a3.
* Revert "rtspsrc: Store and forward SEEK and SEGMENT seqnum"Edward Hervey2018-10-192-9/+0
| | | | This reverts commit 6528a0577c7e22106311d0071b79c521e64eb978.
* Revert "dvdemux: Properly forward the SEGMENT seqnum"Edward Hervey2018-10-191-6/+1
| | | | This reverts commit da6cdc213c8adac2817ab2d437215d48b780d964.
* Revert "qtdemux: Remember seek seqnum for push seek"Edward Hervey2018-10-191-1/+0
| | | | This reverts commit 1e1d015f708be196c621a338acc14cda135bfe6c.
* qtdemux: Only set width/height in caps if they're non-0Olivier Crête2018-10-191-3/+4
| | | | | | If they are not valid, then let a downstream parser complete them. https://bugzilla.gnome.org/show_bug.cgi?id=796878
* qtdemux: Store/Forward SEGMENT seqnumEdward Hervey2018-10-191-3/+5
| | | | And only reset it when doing *hard* resets
* rtspsrc: Store and forward SEEK and SEGMENT seqnumEdward Hervey2018-10-192-0/+9
|
* dvdemux: Properly forward the SEGMENT seqnumEdward Hervey2018-10-191-1/+6
|
* qtdemux: Remember seek seqnum for push seekEdward Hervey2018-10-191-0/+1
|
* Release 1.14.41.14.4Tim-Philipp Müller2018-10-026-9/+203
|
* Update docsTim-Philipp Müller2018-10-0272-73/+73
|
* osxaudio: add support for parsing more channel layouts ...Nicola Murino2018-09-271-36/+111
| | | | | | | | | ... and fallback to gst_audio_info_set_format for not yet supported layouts. Fix audio playback on iOS 12. Based on patch from Byron Schiel <byron@canary.is> https://bugzilla.gnome.org/show_bug.cgi?id=796919
* matroskademux: Emit no-more-pads after parsing TracksAlicia Boya García2018-09-221-2/+3
| | | | | | | | | | | | | | | | | Currently matroskademux does not emit no-more-pads until the first Cluster is parsed, even though the Tracks have already been parsed and from that point on there can be no more tracks. This is important in MSE because the browser needs to know when the MSE initialization segment has been completely parsed so that it can expose the tracks to the user. Some applications depend on this been done before they feed frames to the demuxer. As a consequence, historically WebKit has relied on hacks such as listening to the `pad-added` event, which made impossible to support multiple tracks in the same file. Let's fix that. https://bugzilla.gnome.org/show_bug.cgi?id=797187
* matroskademux: Parse successive Tracks elementsAlicia Boya García2018-09-211-2/+109
| | | | | | | | This patch allows matroskademux to parse a second Tracks element, erroring out if the tracks are not compatible (different number, type or codec) and emitting new caps and tag events should they have changed. https://bugzilla.gnome.org/show_bug.cgi?id=793333
* matroskademux: Refactor track parsing out from adding tracksAlicia Boya García2018-09-211-42/+72
| | | | | | | | | | | | | | | This splits gst_matroska_demux_add_stream() into: * gst_matroska_demux_parse_stream(): will read the Matroska bytestream and fill a GstMatroskaTrackContext. * gst_matroska_demux_parse_tracks(): will check there are no repeated tracks. * gst_matroska_demux_add_stream(): creates and sets up the pad for the track. https://bugzilla.gnome.org/show_bug.cgi?id=793333
* matroskademux: Allow Matroska headers to be read more than onceAlicia Boya García2018-09-211-0/+5
| | | | | | | | | | | | | | | | | | | This is necessary for MSE, where a new MSE initialization segment may be appended at any point. These MSE initialization segments consist of an entire WebM file until the first Cluster element (not included). [1] Note that track definitions are ignored on successive headers, they must match, but this is not checked by matroskademux (look for `(!demux->tracks_parsed)` in the code). Source pads are not altered when the new headers are read. This patch has been splitted from the original patch from eocanha in [2]. [1] https://www.w3.org/TR/mse-byte-stream-format-webm/ [2] https://bug334082.bugzilla-attachments.gnome.org/attachment.cgi?id=362212 https://bugzilla.gnome.org/show_bug.cgi?id=793333
* Release 1.14.31.14.3Tim-Philipp Müller2018-09-166-11/+428
|
* Update docsTim-Philipp Müller2018-09-1672-73/+73
|
* splitmuxsink: Fix reference counting loopJan Schmidt2018-09-112-43/+16
| | | | | | | | | | | The stream context was holding a reference to the internal queue and pads, with pad probes that were in turn holding references to the stream context. This lead to a leak if the request pads weren't explicitly released. https://bugzilla.gnome.org/show_bug.cgi?id=796893
* splitmux: Improve handling of repeated timestampsJan Schmidt2018-09-111-6/+13
| | | | | | | | | | | | When handling input with timestamps that repeat, sometimes splitmuxsink would get confused and ignore a keyframe. The logic in question is a holdover from before the cmd queue moved the file cutting to the multiqueue output side and made it deterministic, so it's no longer needed on the input here. https://bugzilla.gnome.org/show_bug.cgi?id=796773
* rtpsession: Don't start the RTCP thread until it's neededHavard Graff2018-09-114-25/+91
| | | | | | | | | | | Always wait with starting the RTCP thread until either a RTP or RTCP packet is sent or received. Special handling is needed to make sure the RTCP thread is started when requesting an early RTCP packet. We want to wait with starting the RTCP thread until it's needed in order to not send RTCP packets for an inactive source. https://bugzilla.gnome.org/show_bug.cgi?id=795139
* v4l2object: Protect against zero PAR num/demuNicolas Dufresne2018-09-101-1/+1
| | | | | This fixes an assertion when the driver implement CROPCAP but does not set the PAR.
* meson: Fix typo in speex build fileNirbheek Chauhan2018-09-071-1/+1
| | | | Bad backport, host_system is not defined in this branch.
* meson: Explicitly pass -DWIN32 while building speexNirbheek Chauhan2018-09-071-1/+5
| | | | | | The speex headers assume that WIN32 will always be defined when building on Windows, but this is only true by default on MinGW. Always set it explicitly.
* mpg123: Remove ssize_t fallback, not needed anymoreNirbheek Chauhan2018-09-071-12/+0
| | | | | The mpg123 headers now contain a definition for ssize_t and building with MSVC fails because of a redefinition for ssize_t
* v4l2object: Only offer MMAP/DMABUF poolNicolas Dufresne2018-08-311-2/+10
| | | | | The propose allocation was offering a pool even in DMABUF_IMPORT or USERPTR mode. These pool are internal only.
* v4l2object: complete colorspace info in debug logPhilipp Zabel2018-08-211-2/+14
| | | | | | | | | | | | | | | | | The desired colorimetry is logged with all parameters (colorpsace, range, matrix, and transfer function), but of the values actually set by the driver, only colorspace is logged. Complete the debug log message to display all colorimetry parameters: Desired colorspace is 8:1:1:1 Got format of 640x480, format YU12, nb planes 1, colorspace 8 -> Desired colorspace is 8:1:1:1 Got format of 640x480, format YU12, nb planes 1, colorspace 8:0:0:0 https://bugzilla.gnome.org/show_bug.cgi?id=796940
* v4l2object: fix typo in commentPhilipp Zabel2018-08-211-1/+1
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=796940
* v4l2object: improve colorspace handling for JPEG sourcesPhilipp Zabel2018-08-211-9/+41
| | | | | | | | | | | | | | | | gstjpegdec sets 1:4:0:0 colorimetry (full range BT.601 YCbCr encoding with unknown primaries and unknown transfer function). This currently gets translated to bt601 or bt709 depending on resolution. Both cases result in a negotiation failure: ERROR: from element /GstPipeline:pipeline0/v4l2video0convert:v4l2video0convert0: Device '/dev/video0' does not support 1:4:0:0 colorimetry Improve the guessing game by selecting JPEG colorimetry (JPEG colorspace with sRGB transfer function) under these specific conditions, and loosen the matching so that 1:4:0:0 input gets accepted if the device is actually configured to 1:4:7:1 (V4L2_PIX_FMT_JPEG default). https://bugzilla.gnome.org/show_bug.cgi?id=796940
* v4l2object: stop V4L2 from zeroing extended colorimetry for non-mplanePhilipp Zabel2018-08-211-0/+1
| | | | | | | | Setting the priv field to a magic value stops V4L2 core from zeroing the extended colorimetry fields quantization, ycbcr_enc, and xfer_func for non-mplane queues. https://bugzilla.gnome.org/show_bug.cgi?id=796940
* examples: dist qt examplesTim-Philipp Müller2018-08-171-0/+12
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=796968
* meson: Unify required version to 0.40.1Nicolas Dufresne2018-08-161-1/+1
|
* aacparse: fix codec_data buffer leakRoland Jon2018-08-131-0/+1
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=740101
* tests: remove broken and now pointless v4l2src-testTim-Philipp Müller2018-08-083-526/+1
| | | | | This tests APIs that don't exist any longer and also doesn't work at all, and was last touched in a meaningful way in 2006.
* v4l2src: fix first input used is always used next timesIñigo Huguet2018-08-021-0/+5
| | | | | | | | | | | | | | | The input from an v4l2 device that was used the first time was remembered for next times, and set again always the pipeline is set to READY state. This was making that users wasn't able to select a different input without having to create a new pipeline. This patch makes that v4l2src element forget previous used input when going to NULL state, so it will check again for the current selected input when going again to READY state. Users can change to NULL state, select a new input with a VIDIOC_S_INPUT ioctl and change to PLAYING again. https://bugzilla.gnome.org/show_bug.cgi?id=796908
* rtpgstpay: Add support for force-keyunit eventsSebastian Dröge2018-08-023-1/+33
| | | | | | This triggers immediate re-sending of the configuration data in-band. https://bugzilla.gnome.org/show_bug.cgi?id=796877
* qtdemux: Don't assert in prefill mode if a track has no samples at allSebastian Dröge2018-08-021-49/+55
| | | | Just write it with a duration of 0, no samples, etc.
* rtppayload: Fix VP8/VP9/OPUS dual encoding name handlingNicolas Dufresne2018-08-013-29/+47
| | | | | | | | | All these were copy pasted and would lead to assertion when chained with rtpmux. This commit rewrite the negotiation with downstream. This also drop the fallback to ancient names if the pad is unlinked. This was completly arbitrary decision that made no sense. https://bugzilla.gnome.org/show_bug.cgi?id=796809
* qt: Ensure GL headers are includedMatthew Waters2018-08-011-0/+1
| | | | | | | | | | | | | | | Otherwise there may be no valid typedef of GLsync. ... /usr/include/gstreamer-1.0/gst/gl/gstglfuncs.h:93:24: note: in definition of macro 'GST_GL_EXT_FUNCTION' ret (GSTGLAPI *name) args; ^~~~ /usr/include/gstreamer-1.0/gst/gl/glprototypes/sync.h:33:23: error: 'GLsync' has not been declared (GLsync sync)) ^~~~~~ ... https://bugzilla.gnome.org/show_bug.cgi?id=796879
* rtpL8pay: don't try to modify a read-only structureMichael Olbrich2018-07-251-6/+0
| | | | | | | | | Just remove the code. It's not doing anything useful anyways. The modified caps are the result of a caps query, so either not used afterwards of a reference to some internal caps of another element that should not be modified. https://bugzilla.gnome.org/show_bug.cgi?id=796837