Edward Hervey
f7337b7477
ffmpeg: Don't register elements for which we have no caps
...
We would previously register a whole bunch of encoder/decoder for which the caps
were ... "unknown/unknown".
Add a function to quickly check (without generating caps) whether a given
AVCodecID has a known mapping (which can include the {video|audio}/x-gst-av-*
ones) without generating the caps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6237 >
2024-07-25 12:14:50 +00:00
Sebastian Dröge
e52f0bbc03
avvidenc: Make sure to pass always increasing PTS to the encoder
...
All MPEG1/2/4-based encoders at least are ignoring input frames if
backwards PTS or PTS that are equal to the previous one are passed in.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6505 >
2024-07-08 14:31:39 +00:00
Sebastian Dröge
dc0aebbea0
avvidenc: Set the DTS to 0 if it is negative, not the PTS
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6505 >
2024-07-08 14:31:39 +00:00
Sebastian Dröge
ee518b9c7e
avvidenc: Only use 2 ticks per frame if encoding interlaced video
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3518
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6505 >
2024-07-08 14:31:39 +00:00
Sebastian Dröge
73d0cac16c
libav: Update AVCodecContext lifetime to work properly with ffmpeg 7
...
avcodec_close() is deprecated and it's not supported anymore to re-open
a codec, so we only ever allocate the codec in set_format() now and
always free it after usage.
As part of this, also fix various memory leaks in related code paths.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6505 >
2024-07-08 14:31:39 +00:00
U. Artie Eoff
b699341ac9
libav: guard dropped AV_CODEC_ID_AYUV api
...
The FF_API_AYUV_CODECID api was dropped in upstream:
https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/9ee59b63f5ea
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6341 >
2024-04-02 07:12:37 +00:00
L. E. Segovia
b46559102b
libav: Port deprecated AVFrame fields to flags
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5186 >
2024-01-17 08:39:13 +00:00
L. E. Segovia
09de59477a
libav: Port AVCodecContext.ticks_per_frame to AV_CODEC_PROP_FIELDS
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5186 >
2024-01-17 08:39:13 +00:00
Tim-Philipp Müller
8a047a619e
gst-libav: drop use of GSlice allocator
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3784 >
2023-02-03 17:48:09 +00:00
Sebastian Dröge
13fc49770e
avvidenc: Don't take ffmpeg timestamps verbatim but only use them to calculate DTS
...
The ffmpeg timestamps are inaccurate and only in framerate granularity.
To avoid generating inaccurate output timestamps, especially with
variable framerate streams, only use the ffmpeg timestamps for
calculating the DTS.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1544
again.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3780 >
2023-01-24 13:50:11 +00:00
Sebastian Dröge
5372b77987
Revert "avvidenc: Set timebase in the ffmpeg context to nanoseconds and set framerate"
...
This reverts commit 50db59449e
.
This broke the MPEG-1 video encoder as it requires the framerate to be
used for the timebase.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1734
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3780 >
2023-01-24 13:50:11 +00:00
Sebastian Dröge
79e8d2c03e
avvidenc: Offset PTS to zero to fix bitrate control
...
Otherwise ffmpeg's rate control algorithm will not work correctly as
it is based on the absolute PTS values.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/91
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3718 >
2023-01-13 17:18:38 +00:00
Sebastian Dröge
50db59449e
avvidenc: Set timebase in the ffmpeg context to nanoseconds and set framerate
...
As we now actually use the timestamps from ffmpeg for timestamping the
output we would lose a lot of accuracy if the framerate is used.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1544
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3634 >
2023-01-03 16:46:14 +00:00
Edward Hervey
6582cd514a
avvidenc: Don't leak AVPacket on EOF
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3390 >
2022-11-13 06:59:11 +01:00
Edward Hervey
052f23a310
avvidenc: Don't leak filename
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3390 >
2022-11-12 10:33:51 +01:00
Xi Ruoyao
6ea56e7fd3
gst-libav: fix build with ffmpeg-5.0.0
...
Latest ffmpeg has removed avcodec_get_context_defaults(), and its
documentation says a new AVCodecContext should be allocated for this
purpose. The pointer returned by avcodec_find_decoder() is now
const-qualified so we also need to adjust for it. And, AVCOL_RANGE_MPEG
is now rejected with strict_std_compliance > FF_COMPLIANCE_UNOFFICIAL.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1531 >
2022-01-17 18:11:32 +08:00
Thibault Saunier
7a371e75b7
Move files from gst-libav into the "subprojects/gst-libav/" subdir
2021-09-24 16:15:08 -03:00