Compartilhamento de tecnologia

Estruturas relacionadas ao buffer de dados de contagem de referência FFmpeg: Introdução ao AVBuffer e AVBufferRef

2024-07-08

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

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

Análise de código-fonte relacionada ao gerenciamento de memória FFmpeg:

Código-fonte relacionado à alocação e liberação de memória no FFmpeg: análise da função av_malloc, função av_mallocz, função av_free e função av_freep

Estruturas relacionadas ao buffer de dados de contagem de referência FFmpeg: Introdução ao AVBuffer e AVBufferRef

Código fonte FFmpeg: buffer_create, av_buffer_create, av_buffer_default_free, av_buffer_alloc, análise de função av_buffer_allocz

Código fonte FFmpeg: análise da função av_buffer_ref, av_buffer_unref

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

I. Introdução

Muitas estruturas no código-fonte do FFmpeg, como AVPacket e AVFrame, usam AVBufferRef e AVBuffer para gerenciar buffers. AVBuffer registra o número de usos de recursos por meio da variável de membro refcount e controla a liberação de recursos. Este artigo fornece uma introdução às estruturas AVBuffer e AVBufferRef.

2. Declaração da estrutura AVBuffer

AVBuffer é uma interface de programação de aplicativos para buffers de dados contados por referência, que representam o próprio buffer de dados. É opaco e não pode ser acessado diretamente pelos usuários que usam a API FFmpeg. Os usuários só podem acessá-lo indiretamente por meio do AVBufferRef. Mas você pode verificar se duas referências diferentes descrevem o mesmo buffer de dados comparando dois ponteiros AVBuffer.

A estrutura AVBuffer é declarada no arquivo de cabeçalho libavutil/buffer_internal.h do código-fonte do FFmpeg (a versão do código-fonte do FFmpeg usada para demonstração neste artigo é 5.0.3):

struct AVBuffer {
    uint8_t *data; /**