mirror of
https://github.com/mpv-player/mpv.git
synced 2026-05-07 20:02:49 +00:00
038d66549d
This update introduces a demux_packet_pool, allowing for the reuse of previously allocated packets when needed. sizeof(AVPacket) is not a part of the lavc public ABI, which prevents us to allocate memory in larger blocks. However, we can substantially decrease the amount of alloc/free operations during playback by reusing both mpv's demux_packet and AVPacket. This adjustment addresses the root cause of issue #12076, which, although resolved upstream, did not fully tackle the persistent problem of allocating small blocks of aligned memory. This issue largely stems from the FFmpeg design of the AVPacket API. After this change memory will no longer be allocated once cache limits is reached. The demux_packet_pool is shared as a global pool of packets for a given MPContext. This change significantly speeds up the demuxer deinitialization, benefiting file switching scenarios, especially when a large demuxer cache is used. See: #12294 See: #12563 Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
17 lines
423 B
C
17 lines
423 B
C
#ifndef MPV_MPV_H
|
|
#define MPV_MPV_H
|
|
|
|
// This should be accessed by glue code only, never normal code.
|
|
// The only purpose of this is to make mpv library-safe.
|
|
// Think hard before adding new members.
|
|
struct mpv_global {
|
|
struct mp_log *log;
|
|
struct m_config_shadow *config;
|
|
struct mp_client_api *client_api;
|
|
char *configdir;
|
|
struct stats_base *stats;
|
|
struct demux_packet_pool *packet_pool;
|
|
};
|
|
|
|
#endif
|