2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
=================================================================
Анализ исходного кода, связанный с управлением памятью FFmpeg:
Структуры, связанные с буфером данных подсчета ссылок FFmpeg: введение в AVBuffer и AVBufferRef
Исходный код FFmpeg: анализ функции av_buffer_ref, av_buffer_unref
=================================================================
Многие структуры исходного кода FFmpeg, такие как AVPacket и AVFrame, используют AVBufferRef и AVBuffer для управления буферами. AVBuffer записывает количество использований ресурсов через переменную-член refcount и контролирует высвобождение ресурсов. В этой статье представлено введение в структуры AVBuffer и AVBufferRef.
AVBuffer — это интерфейс прикладного программирования для буферов данных с подсчетом ссылок, которые представляют собой сам буфер данных. Он непрозрачен и не может быть доступен напрямую пользователям, использующим API FFmpeg. Пользователи могут получить к нему доступ только косвенно через AVBufferRef. Но вы можете проверить, описывают ли две разные ссылки один и тот же буфер данных, сравнив два указателя AVBuffer.
Структура AVBuffer объявлена в заголовочном файле libavutil/buffer_internal.h исходного кода FFmpeg (версия исходного кода FFmpeg, используемая для демонстрации в этой статье, — 5.0.3):
struct AVBuffer {
uint8_t *data; /**