Κοινή χρήση τεχνολογίας

Δομές μέτρησης δεδομένων αναφοράς FFmpeg που σχετίζονται με την προσωρινή μνήμη: Εισαγωγή στο AVBuffer και στο AVBufferRef

2024-07-08

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

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

Ανάλυση πηγαίου κώδικα που σχετίζεται με τη διαχείριση μνήμης FFmpeg:

Πηγαίος κώδικας που σχετίζεται με την κατανομή και την απελευθέρωση μνήμης στο FFmpeg: ανάλυση της συνάρτησης av_malloc, της συνάρτησης av_mallocz, της συνάρτησης av_free και της συνάρτησης av_freep

Δομές μέτρησης δεδομένων αναφοράς FFmpeg που σχετίζονται με την προσωρινή μνήμη: Εισαγωγή στο AVBuffer και στο AVBufferRef

Πηγαίος κώδικας FFmpeg: buffer_create, av_buffer_create, av_buffer_default_free, av_buffer_alloc, av_buffer_allocz ανάλυση συνάρτησης

Πηγαίος κώδικας FFmpeg: av_buffer_ref, av_buffer_unref ανάλυση συνάρτησης

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

εισαγωγή

Πολλές δομές στον πηγαίο κώδικα FFmpeg, όπως το AVPacket και το AVFrame, χρησιμοποιούν AVBufferRef και AVBuffer για τη διαχείριση των buffer. Το AVBuffer καταγράφει τον αριθμό των χρήσεων πόρων μέσω της επαναμέτρησης μεταβλητής μέλους και ελέγχει την αποδέσμευση πόρων. Αυτό το άρθρο παρέχει μια εισαγωγή στις δομές AVBuffer και AVBufferRef.

2. Δήλωση δομής AVBuffer

Το AVBuffer είναι μια διεπαφή προγραμματισμού εφαρμογών για buffer δεδομένων με μέτρηση αναφοράς, τα οποία αντιπροσωπεύουν την ίδια την προσωρινή μνήμη δεδομένων. Είναι αδιαφανές και δεν είναι δυνατή η άμεση πρόσβαση από χρήστες που χρησιμοποιούν το FFmpeg API. Οι χρήστες μπορούν να έχουν πρόσβαση σε αυτό μόνο έμμεσα μέσω του AVBufferRef. Αλλά μπορείτε να ελέγξετε εάν δύο διαφορετικές αναφορές περιγράφουν την ίδια προσωρινή μνήμη δεδομένων συγκρίνοντας δύο δείκτες AVBuffer.

Η δομή AVBuffer δηλώνεται στο αρχείο κεφαλίδας libavutil/buffer_internal.h του πηγαίου κώδικα FFmpeg (η έκδοση πηγαίου κώδικα FFmpeg που χρησιμοποιείται για επίδειξη σε αυτό το άρθρο είναι 5.0.3):

struct AVBuffer {
    uint8_t *data; /**