mpv/common
Philip Langdale 4574dd5dc6 ffmpeg: update to handle deprecation of `av_init_packet`
This has been a long standing annoyance - ffmpeg is removing
sizeof(AVPacket) from the API which means you cannot stack-allocate
AVPacket anymore. However, that is something we take advantage of
because we use short-lived AVPackets to bridge from native mpv packets
in our main decoding paths.

We don't think that switching these to `av_packet_alloc` is desirable,
given the cost of heap allocation, so this change takes a different
approach - allocating a single packet in the relevant context and
reusing it over and over.

That's fairly straight-forward, with the main caveat being that
re-initialising the packet is unintuitive. There is no function that
does exactly what we need (what `av_init_packet` did). The closest is
`av_packet_unref`, which additionally frees buffers and side-data.
However, we don't copy those things - we just assign them in from our
own packet, so we have to explicitly clear the pointers before calling
`av_packet_unref`. But at least we can make a wrapper function for
that.

The weirdest part of the change is the handling of the vtt subtitle
conversion. This requires two packets, so I had to pre-allocate two in
the context struct. That sounds excessive, but if allocating the
primary packet is too expensive, then allocating the secondary one for
vtt subtitles must also be too expensive.

This change is not conditional as heap allocated AVPackets were
available for years and years before the deprecation.
2022-12-03 14:44:18 -08:00
..
av_common.c ffmpeg: update to handle deprecation of `av_init_packet` 2022-12-03 14:44:18 -08:00
av_common.h ffmpeg: update to handle deprecation of `av_init_packet` 2022-12-03 14:44:18 -08:00
av_log.c common/av_log: move general FFmpeg version before library versions 2022-11-15 21:41:22 +02:00
av_log.h player: rearrange libav* library check 2020-03-08 19:38:10 +01:00
codecs.c codecs: remove unused family field 2018-02-01 10:21:55 +01:00
codecs.h codecs: remove unused family field 2018-02-01 10:21:55 +01:00
common.c common: add helper for subtracting rectangles 2020-05-22 14:17:46 +02:00
common.h player: rearrange video sync opts/enums/defines 2022-04-11 18:14:22 +00:00
encode.h encode: disable unsupported media types automatically 2020-09-03 14:13:17 +02:00
encode_lavc.c encode_lavc: replace deprecated av_init_packet() 2022-01-10 22:56:52 +01:00
encode_lavc.h encode_lavc: replace deprecated av_init_packet() 2022-01-10 22:56:52 +01:00
global.h stats: some more performance graphs 2020-04-09 00:33:38 +02:00
msg.c msg: fix really-quiet option to only affect terminal output 2021-02-23 00:56:21 +02:00
msg.h msg: add function to reduce log level 2020-05-10 16:40:26 +02:00
msg_control.h player: add --term-title option 2020-05-25 20:39:37 +02:00
playlist.c misc/random: add xoshiro random number implementation 2022-08-17 10:21:55 -04:00
playlist.h client API: report IDs of inserted playlist entries on loading playlist 2020-03-27 00:57:11 +01:00
recorder.c ffmpeg: update to handle deprecation of `av_init_packet` 2022-12-03 14:44:18 -08:00
recorder.h recorder: add support for attachments (fonts) 2021-07-08 12:44:06 +03:00
stats.c build: add meson build support 2021-11-14 19:13:10 +00:00
stats.h player, stats: more silly debug stuff 2020-04-10 00:55:39 +02:00
tags.c demux: support for some kinds of timed metadata 2018-04-18 01:17:42 +03:00
tags.h demux: support for some kinds of timed metadata 2018-04-18 01:17:42 +03:00
version.c build: change filenames of generated files 2020-06-04 16:59:05 +02:00