Teknologian jakaminen

FFmpeg-viitelaskennan datapuskuriin liittyvät rakenteet: AVBufferin ja AVBufferRefin esittely

2024-07-08

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

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

FFmpeg-muistin hallintaan liittyvä lähdekoodianalyysi:

Muistin varaamiseen ja vapauttamiseen liittyvä lähdekoodi FFmpegissä: av_malloc-, av_mallocz-, av_free- ja av_freep-funktion analyysi

FFmpeg-viitelaskennan datapuskuriin liittyvät rakenteet: AVBufferin ja AVBufferRefin esittely

FFmpeg-lähdekoodi: buffer_create, av_buffer_create, av_buffer_default_free, av_buffer_alloc, av_buffer_allocz-funktioanalyysi

FFmpeg-lähdekoodi: av_buffer_ref, av_buffer_unref funktioanalyysi

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

I. Johdanto

Monet FFmpeg-lähdekoodin rakenteet, kuten AVPacket ja AVFrame, käyttävät AVBufferRefiä ja AVBufferia puskurien hallintaan. AVBuffer tallentaa resurssien käyttömäärän jäsenmuuttujan refcount kautta ja ohjaa resurssien vapauttamista. Tämä artikkeli sisältää johdannon AVBuffer- ja AVBufferRef-rakenteisiin.

2. AVBuffer-rakenteen ilmoitus

AVBuffer on sovellusohjelmointirajapinta viittauksilla lasketuille datapuskureille, jotka edustavat itse tietopuskuria. Se on läpinäkymätön, eikä FFmpeg-sovellusliittymää käyttävät käyttäjät pääse siihen suoraan. Käyttäjät voivat käyttää sitä vain epäsuorasti AVBufferRefin kautta. Mutta voit tarkistaa, kuvaavatko kaksi eri viittausta samaa datapuskuria vertaamalla kahta AVBuffer-osoitinta.

AVBuffer-rakenne on ilmoitettu FFmpeg-lähdekoodin otsikkotiedostossa libavutil/buffer_internal.h (tässä artikkelissa esittelyyn käytetty FFmpeg-lähdekoodiversio on 5.0.3):

struct AVBuffer {
    uint8_t *data; /**