- Dec 22, 2023
-
-
Olivier Crête authored
This synchronizes it with the meson.build file Part-of: <!5861>
-
The value 0 for max_buffers means unlimited. If the max_buffers are unlimited, the videorate element shouldn't throw away the bufferpool, but just increase the min_buffers value. Part-of: <gstreamer/gstreamer!5857>
-
Víctor Manuel Jáquez Leal authored
Part-of: <gstreamer/gstreamer!5838>
-
Víctor Manuel Jáquez Leal authored
And by default it's 1/1 Part-of: <gstreamer/gstreamer!5838>
-
Víctor Manuel Jáquez Leal authored
Part-of: <gstreamer/gstreamer!5838>
-
Víctor Manuel Jáquez Leal authored
Part-of: <gstreamer/gstreamer!5838>
-
Víctor Manuel Jáquez Leal authored
Instead of just log the parsed string. It's better for debugging. Part-of: <gstreamer/gstreamer!5838>
-
Víctor Manuel Jáquez Leal authored
Part-of: <gstreamer/gstreamer!5838>
-
Víctor Manuel Jáquez Leal authored
Instead of comparing caps, just signal when renegotation is needed. Part-of: <gstreamer/gstreamer!5838>
-
Víctor Manuel Jáquez Leal authored
Part-of: <gstreamer/gstreamer!5838>
-
Víctor Manuel Jáquez Leal authored
Interlaced MJPEG is a big hack. Most of the streams we've found are from old AVID tools. There are two methods to detect interlaced stream: the container offers a height bigger (or double) than the image's height in SOF. The other is from a APP0 marker. Part-of: <gstreamer/gstreamer!5838>
-
- Dec 21, 2023
-
-
Jordan Petridіs authored
Part-of: <gstreamer/gstreamer!5849>
-
Encoders will add the meta to every single buffer, but we only cannot set partition IDs properly when the meta has temporal_scalability set Part-of: <gstreamer/gstreamer!5814>
-
- Dec 20, 2023
-
-
Aaron Boxer authored
Part-of: <gstreamer/gstreamer!5816>
-
Instead of plain multiplication, use gst_util_uint64_scale_int() to achieve the same effect with additional checks. Part-of: <gstreamer/gstreamer!5791>
-
Add macro which converts picture frame number to suitable timestamp in nanoseconds for use in V4L2 VB2 buffer lookup. Since multiple codecs do the same operation and almost all got it wrong, do it in one place so it can be fixed in one place again, if needed. Part-of: <gstreamer/gstreamer!5791>
-
In case reference_frames is NULL, return outright. Remove the duplicate check from subsequent conditionals. No functional change. Part-of: <gstreamer/gstreamer!5791>
-
Instead of casting GST_CODEC_PICTURE_FRAME_NUMBER (ref_pic) to u64, use 1000ULL which is also u64 . This only aligns the behavior here with '*decoder: Fix multiplication wraparound' commits. Part-of: <gstreamer/gstreamer!5791>
-
Instead of casting GST_CODEC_PICTURE_FRAME_NUMBER (ref_pic) to u64, use 1000ULL which is also u64 . This only aligns the behavior here with '*decoder: Fix multiplication wraparound' commits. Part-of: <gstreamer/gstreamer!5791>
-
The GstMpeg2Picture system_frame_number is guint32, constant 1000 is guint32, GstV4l2CodecMpeg2Dec *_ref_ts multiplication result is u64 . ``` u64 result = (u32)((u32)system_frame_number * (u32)1000); ``` behaves the same as ``` u64 result = (u32)(((u32)system_frame_number * (u32)1000) & 0xffffffff); ``` so in case `system_frame_number > 4294967295 / 1000`, the `result` will wrap around. Since the `result` is really used as a cookie used to look up V4L2 buffers related to the currently decoded frame, this wraparound leads to visible corruption during MPEG2 decoding. At 30 FPS this occurs after cca. 40 hours of playback . Fix this by changing the 1000 from u32 to u64, i.e.: ``` u64 result = (u64)((u32)system_frame_number * (u64)1000ULL); ``` this way, the wraparound is prevented and the correct cookie is used. Part-of: <gstreamer/gstreamer!5791>
-
The GstAV1Picture system_frame_number is guint32, constant 1000 is guint32, GstV4l2CodecAV1Dec v4l2_av1_frame.*_frame_ts multiplication result is u64 . ``` u64 result = (u32)((u32)system_frame_number * (u32)1000); ``` behaves the same as ``` u64 result = (u32)(((u32)system_frame_number * (u32)1000) & 0xffffffff); ``` so in case `system_frame_number > 4294967295 / 1000`, the `result` will wrap around. Since the `result` is really used as a cookie used to look up V4L2 buffers related to the currently decoded frame, this wraparound leads to visible corruption during AV1 decoding. At 30 FPS this occurs after cca. 40 hours of playback . Fix this by changing the 1000 from u32 to u64, i.e.: ``` u64 result = (u64)((u32)system_frame_number * (u64)1000ULL); ``` this way, the wraparound is prevented and the correct cookie is used. Part-of: <gstreamer/gstreamer!5791>
-
The GstVp9Picture system_frame_number is guint32, constant 1000 is guint32, GstV4l2CodecVp9Dec v4l2_vp9_frame.*_frame_ts multiplication result is u64 . ``` u64 result = (u32)((u32)system_frame_number * (u32)1000); ``` behaves the same as ``` u64 result = (u32)(((u32)system_frame_number * (u32)1000) & 0xffffffff); ``` so in case `system_frame_number > 4294967295 / 1000`, the `result` will wrap around. Since the `result` is really used as a cookie used to look up V4L2 buffers related to the currently decoded frame, this wraparound leads to visible corruption during VP9 decoding. At 30 FPS this occurs after cca. 40 hours of playback . Fix this by changing the 1000 from u32 to u64, i.e.: ``` u64 result = (u64)((u32)system_frame_number * (u64)1000ULL); ``` this way, the wraparound is prevented and the correct cookie is used. Part-of: <gstreamer/gstreamer!5791>
-
The GstVp8Picture system_frame_number is guint32, constant 1000 is guint32, GstV4l2CodecVp8Dec v4l2_vp8_frame.*_frame_ts multiplication result is u64 . ``` u64 result = (u32)((u32)system_frame_number * (u32)1000); ``` behaves the same as ``` u64 result = (u32)(((u32)system_frame_number * (u32)1000) & 0xffffffff); ``` so in case `system_frame_number > 4294967295 / 1000`, the `result` will wrap around. Since the `result` is really used as a cookie used to look up V4L2 buffers related to the currently decoded frame, this wraparound leads to visible corruption during VP8 decoding. At 30 FPS this occurs after cca. 40 hours of playback . Fix this by changing the 1000 from u32 to u64, i.e.: ``` u64 result = (u64)((u32)system_frame_number * (u64)1000ULL); ``` this way, the wraparound is prevented and the correct cookie is used. Part-of: <gstreamer/gstreamer!5791>
-
It is easier to maintain plain meson.build file instead of a diff. We can edit it directly. Part-of: <gstreamer/gstreamer!5843>
-
Part-of: <gstreamer/gstreamer!5833>
-
RGBA should be before RBGA. Both the Python script and the gstreamer-rs tests agree on that, but somehow this is not caught by the CI. Part-of: <gstreamer/gstreamer!5837>
-
- Dec 19, 2023
-
-
And also remove the specific registration APIs for serializable meta. Part-of: <!5830>
-
Some transforms always assumed that the transformation was some kind of copy. So adding a "clear" operation didn't work out in practice. Part-of: <!5830>
-
Nicolas Dufresne authored
When we finish a frame, we pass a size which semantic can easily be confused. Improve the documentation to clarify that the parameter size is the amount of input data being consumed and, if set, the output_buffer size can differ. Part-of: <gstreamer/gstreamer!5754>
-
When reopening a v4l2 device, the v4l2object->poll will include some old fds, which was assigned to this device before. If the pipeline opens multiple v4l2 devices, the old fd may been assigned to other v4l2 devices when reopening devices. This will cause the timing of the pipeline become confusing when polling devices, leading functional abnormalities. Therefore, when closing v4l2object, remove the old fds in poll to ensure that the pipeline timing is normal. Signed-off-by:
Chao Guo <chao.guo@nxp.com> Part-of: <gstreamer/gstreamer!5820>
-
- Dec 18, 2023
-
-
This can be useful for debugging purposes. It can't be done on application side because the on_error callback tears down the pipeline. Part-of: <gstreamer/gstreamer!5828>
-
Part-of: <gstreamer/gstreamer!5828>
-
This reverts a part of de92a6c7. Unlike `image_filter` and `video_filter`, `viewfinder_filter` does not get linked to `src` but `viewfinderbin_queue`. Thus the fix in the mentioned commit does not apply for it and should be reverted. This was not spotted earlier as only the other filters are used in the project that uncovered the issue. Fixes: de92a6c7 ("camerabin: Fix source updates with user filters") Part-of: <gstreamer/gstreamer!5689>
-
Since the AV1 specification is not explicitly mentioning about the array size bounds, array sizes in scalability structure should be defined as possible maximum sizes that can have. Also, this commit removes GST_AV1_MAX_SPATIAL_LAYERS define from public header which is API break but the define is misleading and this patch is introducing ABI break already ZDI-CAN-22300 Part-of: <gstreamer/gstreamer!5823>
-
INFO is a bit high for such technical details and best to use WARNING when it fails. Part-of: <gstreamer/gstreamer!5822>
-
This causes a lot of nasty side effects (like decoders assuming they are actually linked downstream). The reason why this was done was to check whether a decoder could handle the actual caps, but this is the wrong way to do it. The proper way to query whether a decoder can handle certain caps is via `GST_QUERY_ACCEPT_CAPS` which is already done just before. Partially reverts !4677 and partially fixes #3160 Part-of: <gstreamer/gstreamer!5821>
-
- Dec 17, 2023
-
-
Part-of: <gstreamer/gstreamer!5741>
-
Part-of: <gstreamer/gstreamer!5741>
-
- AU boundary detection reviewed to follow more closely H.264 spec. and more specifically clauses 7.4.1.2.3 and 7.4.1.2.4. - The gist of the changes is a look-a-head in then next AU required identify the last vcl-nal of current AU and firt vcl-nal of next AU (according to 7.4.1.2.4) followed by the identification of the first nal of next AU (according to 7.4.1.2.3). - A backlog of all nals of current AU and next AU up to the point where current AU can identified completed is kept. - In NAL alignement mode vcl-nal are sent immediatly but the history is kept to allow AU boundary detection. Non-vcl-nal can be delayed up to the reception of the next vcl-nal to allow a correct AUD insertion. - Based on this improved AU boudary detection we can avoid erronous AUD insertion, like the one highlighted by test test_parse_sliced_with_prefix_and_sei_nal_au. - Add support for MVC AU boundary detection. (H.7.4.1.2.4) - Explicitly report SVC not supported. We don't have the SVC NAL parsing required to identify boundary. (missing dependency_id and quality_id fields from SVC, see G.7.4.1.2.4) Part-of: <gstreamer/gstreamer!5741>
-
Part-of: <gstreamer/gstreamer!5355>
-