2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
=================================================================
FFmpeg-muistin hallintaan liittyvä lähdekoodianalyysi:
FFmpeg-viitelaskennan datapuskuriin liittyvät rakenteet: AVBufferin ja AVBufferRefin esittely
FFmpeg-lähdekoodi: av_buffer_ref, av_buffer_unref funktioanalyysi
=================================================================
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.
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; /**