summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Release 1.19.2HEAD1.19.2masterdiscontinued-for-monorepoTim-Philipp Müller2021-09-236-17/+1063
|
* rtph263pdepay: flag keyframes on output buffersTim-Philipp Müller2021-09-221-0/+94
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1091>
* rtphdrhext-twcc: Return failure on map failureOlivier Crête2021-09-151-1/+1
| | | | | | This feels like exactly like a case that should fail. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1059>
* rtphdrext: Update write() API to return a signed valueOlivier Crête2021-09-153-4/+4
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1059>
* qtdemux: Try to build AAC codec-data whenever it's possibleSeungha Yang2021-09-141-21/+35
| | | | | | | | | | AAC codec_data is a just collection of AAC profile, samplerate, and channels. We can know samplerate and channels from parsed SampleEntry data. Although the AAC profile is unknown there, let's assume it as AAC-LC like we've been doing for the version 1 atom. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1082>
* flv: fix seqnum handling for seeksVivienne Watermeier2021-09-132-37/+96
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1078>
* isomp4: also allow muxing different h264/5 profiles/levels/etcMatthew Waters2021-09-131-0/+15
| | | | | | | All of that is advertised through the codec_data itself so can change just fine within isomp4. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1071>
* matroska: Add support for muxing/demuxing ffv1Sebastian Dröge2021-09-134-2/+23
| | | | | | | | | | | Previously only demuxing when stored via the RIFF/AVI mapping was supported. See https://github.com/FFmpeg/FFV1/blob/master/ffv1.md#matroska-file-format Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/923 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1080>
* docs: Update cachePhilippe Normand2021-09-121-1/+4
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1081>
* jpegdec: Fix crash when interlaced field height is not DCT block size alignedSeungha Yang2021-09-071-3/+8
| | | | | | | In case of interlaced JPEG file, we are doubling stride. The scratch scan line should take account of it as well. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1042>
* avidemux: Also detect 0x000001 as H264 byte-stream start code in codec_dataSebastian Dröge2021-09-021-30/+29
| | | | | | | | This works around some AVI files storing byte-stream data in the codec_data. The previous workaround was only checking for 0x00000001 (4 bytes) instead of 0x000001 (3 bytes). Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1072>
* qt: Fix build for Qt 5.9Philippe Normand2021-08-311-4/+4
| | | | | | | | | The QQuickItem::size() method was introduced in 5.10, so use direct width() and height() access instead. Fixes #908 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1069>
* rtphdrext-rfc6464: Add test for inserting in payloader using the APIOlivier Crête2021-08-301-0/+47
| | | | | | This makes it clearer how to use the plugin in an API driven application. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1058>
* rtphdrext-rfc6464: Put max level if the audio is beyond itOlivier Crête2021-08-301-3/+5
| | | | | | | | Otherwise, it just fails to add the extension, which makes no sense. And our level element produces levels higher than 127 in some cases. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1058>
* rtphdrext-rfc6464: Add example pipelineOlivier Crête2021-08-301-1/+8
| | | | | | This makes it a bit easier to understand how to use it in an application. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1058>
* rtphdrext-rfc6464: Add test for inserting it based on capsOlivier Crête2021-08-301-0/+34
| | | | | | Tests adding the extension based on the caps. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1058>
* qtdemux: Force stream-start push when re-using EOS'd streamsEdward Hervey2021-08-271-2/+3
| | | | | | | | When re-using streams, we *do* need to push a `stream-start` event downstream if we previously were EOS'd. Failure to do that would never remove the EOS status on all downstream elements and cause weird issues. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1067>
* deinterlace: Use proper ASM output format for *BSD OSBrad Smith2021-08-271-2/+0
| | | | | | FreeBSD/NetBSD/OpenBSD amd64 use the ELF binary format. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1066>
* qmlgl: don't critical on input events before input format has been setMatthew Waters2021-08-271-0/+14
| | | | | | Accessing the unset GstVideoInfo would result in criticals Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1065>
* docs: Add `Since` marker to "twcc-feedback-interval" propertySebastian Dröge2021-08-251-1/+1
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/927>
* docs: update with "twcc-feedback-interval"Havard Graff2021-08-251-0/+14
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/927>
* rtptwcc: changes to use rtp buffer arrival time and current time.Tulio Beloqui2021-08-254-46/+125
| | | | | | | | For TWCC we are more interested to track the arrival time (receive side) and the current time (sender side) of the buffers rather than the running time. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/927>
* rtptwcc: add payloadtype to RTPTWCCPacketKnut Inge Hvidsten2021-08-253-0/+5
| | | | | | | The consumer of the stats can then separate between different media-types, and do individual stats for each of them. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/927>
* rtptwcc: make enabling TWCC stickyHavard Graff2021-08-251-4/+6
| | | | | | | | | Meaning that if a caps comes along that does NOT have TWCC in it, this does not turn of TWCC for the rest, as this is in fact completely allowed. (To have some payload-types not containing TWCC seqnums). Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/927>
* rtptwcc: move TWCC-logic over to the TWCC-managerHavard Graff2021-08-253-91/+140
| | | | | | | | | | | | | | | | | | Prevent cluttering up the rtpsession, and keeping things localized. Also write TWCC-seqnums for *all* streams in the session if configured by caps. A while back WebRTC was not doing TWCC for audio, basically breaking the whole idea of a "transport-wide seqnuencenumber" applying for all bundled streams. However, they have since fixed this, and now it no longers makes sense to be able to single out certain payloadtypes for use with TWCC, rather just including them all. This also makes using RTX, RED, FEC etc much simpler, as it will apply to them all as they enter the rtpsession. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/927>
* rtptwcc: fix warningHavard Graff2021-08-251-3/+4
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/927>
* rtptwcc: fixes and optimizations around run-length chunksTulio Beloqui2021-08-252-100/+409
| | | | | Co-authored-by: Havard Graff <havard.graff@gmail.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/927>
* rtptwcc: fix seqnum-wrapHavard Graff2021-08-252-3/+50
| | | | | | | | | Using the proper API to do this is obviously an improvement, and adding a test for the case of a packet-loss when the seqnum wrap is also a good idea. Co-authored-by: Tulio Beloqui <tulio.beloqui@pexip.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/927>
* rtptwcc: fixed feedback packet count overflow that allowed lateTulio Beloqui2021-08-252-3/+75
| | | | | | | packets to be processed Co-authored-by: Havard Graff <havard.graff@gmail.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/927>
* rtptwcc: fixed parsing of old sequence numberTulio Beloqui2021-08-252-2/+61
| | | | | Co-authored-by: Havard Graff <havard.graff@gmail.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/927>
* rtptwcc: fixed guint8 overflow of feedback packet countTulio Beloqui2021-08-252-2/+61
| | | | | Co-authored-by: Havard Graff <havard.graff@gmail.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/927>
* rtptwcc: add feedback-intervalHavard Graff2021-08-254-2/+109
| | | | | | | To allow RTCP TWCC reports to be scheduled on a timer instead of per marker-bit. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/927>
* rtptwcc: remove _set_send_packet_tsHavard Graff2021-08-252-14/+0
| | | | | | Not in use. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/927>
* rtptwcc: make twcc-tests more deterministicHavard Graff2021-08-251-44/+32
| | | | | | They were a bit racy. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/927>
* qtdemux: add depth for ProRes 4:4:4:4 variants if availableTim-Philipp Müller2021-08-241-0/+12
| | | | | | | Might be 24bpp in case an alpha channel is coded but the image is always opaque. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1061>
* qtmux: for Apple ProRes, allow overriding pixel bit depth for 4:4:4:4 variantsRuslan Khamidullin2021-08-241-1/+1
| | | | | | | | | | | e.g. when exporting an opaque image, yet with alpha channel. Apple ProRes certification requires that, when a ProRes-writing application *knows* that the entire frame is opaque, the application writes only RGB without alpha even when the clip is RGBA. For that, this tiny change allows the app to override pixel depth when writing ProRes. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1061>
* vpxdec: Fix direct rendering, avoid holding write accessHavard Graff2021-08-232-0/+14
| | | | | | | | | | | | | | | | When a buffer is pushed downstream, we should try not to hold the buffer mapped with write access. Doing so would often lead to an unneccesary memcpy later. For instance, gst_buffer_make_writable() in gst_video_decoder_finish_frame() will cause a memcpy because of _memory_get_exclusive_reference(). We know that we can perform a two-step remap when using system memory, as this will not cause the location of the memory to change. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/812>
* isomp4/mux: add a function for seeking to a specific output byte positionMatthew Waters2021-08-231-61/+30
| | | | | | | We do it enough times that this makes sense. Also add a debug log line for the seek position requested. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1060>
* isomp4/mux: don't overwrite with a bigger moov when fragmentingMatthew Waters2021-08-231-5/+3
| | | | | | | | | | | | | | | | | | When outputting fragmented mp4, with a seekable downstream, we rewrite the moov to maybe add a duration to the mvex. If we start by not writing the initial moov->mvex->mhed duration and then overwrite with a moov containing mhed atom, the moov's will have different sizes and could overwrite subsequent data and result in an unplayable file. e.g. The initial moov would be of size 842 and the final moov would have a size of 862. Fix by always pushing out the mhed duration in the moov when fragmenting. Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/898 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1060>
* isomp4: actually make streamable fallback workMatthew Waters2021-08-231-5/+8
| | | | | | | | We weren't setting the fragment_mode field anymore now that the implementation doesn't change based on the value of the streamable property. This lead to invalid files. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1060>
* isomp4: fix trun data offset handlingMatthew Waters2021-08-231-2/+2
| | | | | | | | | The trun offset was missing a calculation for one of the box type headers. Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/866 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1060>
* isomp4/mux: fixes for fragmented mp4 outputMatthew Waters2021-08-232-10/+18
| | | | | | | | Various buffer offset calculations were not quite correct in all cases. Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/866 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1060>
* matroska-mux: support H264 avc3 / H265 hev1Mathieu Duponchelle2021-08-202-8/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The matroska codec specs is unfortunately vague on the subject, stating for H264: AVC/H.264 stored as described in [@!ISO.14496-15] and for H265: HEVC/H.265 stored as described in [@!ISO.14496-15] This spec however specifies multiple stream formats, our implementation has opted for interpreting this as avc1 / hvc1, both of which disallow in-band SPS. Most decoders however will support in-band SPS / PPS, and this commit gives the option to explicitly mux in avc3 / hev1, which allows changing stream parameters on the fly, that is useful for smart encoding for example. When either of these stream formats are picked as the input, changes in codec_data / tier / level / profile do not cause renegotiation failure, a warning is logged however as it isn't clear how compliant such a stream is. The stream-format field is correctly ordered in the template caps to avoid selecting potentially non-compliant options on automatic negotiation. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1047>
* isomp4/qtmux: allow renegotiating when tier / level / profile changeMathieu Duponchelle2021-08-201-1/+10
| | | | | | | | Those are carried either in codec_data or in-band SPS (for avc3), and it is OK for those to change, though decoders obviously need to support it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1047>
* isomp4/qtmux: accept video/x-h264, stream-format=avc3Mathieu Duponchelle2021-08-202-2/+12
| | | | | | | | | The main difference between avc1 and avc3 is that avc3 is allowed to contain in-band SPS / PPS. In practice decoders will always use in-band parameter sets anyway, but it is cleaner to explicitly advertise it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1047>
* isomp4/qtmux: make sure to switch to next chunk on new capsMathieu Duponchelle2021-08-201-0/+8
| | | | | | | | For example, with single video sink pad, and new codec_data is received, current_chunk_offset must be reset to -1 for the aggregate loop to open a new chunk. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1047>
* isomp4/atoms: fix multiple stsd entriesMathieu Duponchelle2021-08-201-1/+1
| | | | | | | | stsd entries are serialized in reverse order (starting from g_list_last()), and must be prepended to the entry list for their index to be correct when referenced from stsc entries. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1047>
* matroska-mux: Add a timestamp-offset propertyArun Raghavan2021-08-183-0/+42
| | | | | | | | | | Adds a user-controllable timestamp offset to clusters and blocks. This should be useful if we want to have timestamps that have significance outside of the current file (for example, we might set the offset to the wallclock when the file is being created, or some other common base, if we want to correlate streams across multiple files). Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1051>
* matroska: demux: update stream_start_timeStéphane Cerveau2021-08-171-4/+14
| | | | | | | | | | The stream_start_time can be less than the first detected. In case of B-Frame based media, the first frame PTS might be greater than the next one. Need to keep the segment.start if a seek has been performed. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1030>
* mastrokademux: Remove redundant assignmentNicolas Dufresne2021-08-171-1/+0
| | | | | | The segment.position is unconditionnaly set few lines below. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1030>