Technologieaustausch

FFmpeg-Referenzzähldatenpuffer-bezogene Strukturen: Einführung in AVBuffer und AVBufferRef

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

=================================================================

Quellcode-Analyse im Zusammenhang mit der FFmpeg-Speicherverwaltung:

Quellcode im Zusammenhang mit der Speicherzuweisung und -freigabe in FFmpeg: Analyse der Funktion av_malloc, der Funktion av_mallocz, der Funktion av_free und der Funktion av_freep

FFmpeg-Referenzzähldatenpuffer-bezogene Strukturen: Einführung in AVBuffer und AVBufferRef

FFmpeg-Quellcode: buffer_create, av_buffer_create, av_buffer_default_free, av_buffer_alloc, av_buffer_allocz Funktionsanalyse

FFmpeg-Quellcode: av_buffer_ref, av_buffer_unref Funktionsanalyse

=================================================================

I. Einleitung

Viele Strukturen im FFmpeg-Quellcode, wie AVPacket und AVFrame, verwenden AVBufferRef und AVBuffer zum Verwalten von Puffern. AVBuffer zeichnet die Anzahl der Ressourcennutzungen über die Mitgliedsvariable refcount auf und steuert die Freigabe von Ressourcen. Dieser Artikel bietet eine Einführung in die Strukturen AVBuffer und AVBufferRef.

2. Deklaration der AVBuffer-Struktur

AVBuffer ist eine Anwendungsprogrammierschnittstelle für referenzgezählte Datenpuffer, die den Datenpuffer selbst darstellen. Es ist undurchsichtig und Benutzer, die die FFmpeg-API verwenden, können nicht direkt darauf zugreifen. Benutzer können nur indirekt über AVBufferRef darauf zugreifen. Sie können jedoch überprüfen, ob zwei verschiedene Referenzen denselben Datenpuffer beschreiben, indem Sie zwei AVBuffer-Zeiger vergleichen.

Die AVBuffer-Struktur wird in der Header-Datei libavutil/buffer_internal.h des FFmpeg-Quellcodes deklariert (die in diesem Artikel zur Demonstration verwendete FFmpeg-Quellcodeversion ist 5.0.3):

struct AVBuffer {
    uint8_t *data; /**