Compartilhar via


Serviços de formato de arquivo de intercâmbio de recursos

[O recurso associado a esta página, de E/S de Arquivo Multimídia, é um recurso herdado. Ele foi substituído pelo leitor de origem. o leitor de origem foi otimizado para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use leitor de origem em vez de de E/S de Arquivo Multimídia, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

O formato preferencial para arquivos multimídia é o RIFF (formato de arquivo de intercâmbio de recursos). As funções de E/S do arquivo RIFF funcionam com os serviços básicos de E/S de arquivo em buffer e não armazenados em buffer. Você pode abrir, ler e gravar arquivos RIFF da mesma forma que outros tipos de arquivo. Para obter informações detalhadas sobre o RIFF, consulte AVIFile Functions and Macros.

Os arquivos RIFF usam códigos de quatro caracteres para identificar elementos de arquivo. Esses códigos são quantidades de 32 bits que representam uma sequência de um a quatro caracteres alfanuméricos ASCII, acolchoados à direita com caracteres de espaço. O tipo de dados para códigos de quatro caracteres é fourcc. Use a macro mmioFOURCC para converter quatro caracteres em um código de quatro caracteres. Para converter uma cadeia de caracteres terminada em nulo em um código de quatro caracteres, use a funçãommioStringToFOURCC.

O bloco de construção básico de um arquivo RIFF é uma parte . Uma parte é uma unidade lógica de dados multimídia, como um único quadro em um clipe de vídeo. Cada parte contém os seguintes campos:

  • Um código de quatro caracteres especificando o identificador de parte
  • Um valor de palavra dupla que especifica o tamanho do membro de dados na parte
  • Um campo de dados

A ilustração a seguir mostra um bloco "RIFF" que contém dois subchunks.

parte do riff que contém duas de imagem de subchunks

Uma parte contida em outra parte é uma de subchunk. As únicas partes permitidas para conter subchunks são aquelas com um identificador de partes de "RIFF" ou "LIST". Uma parte que contém outra parte é chamada de parte pai. A primeira parte em um arquivo RIFF deve ser uma parte "RIFF". Todas as outras partes do arquivo são subchunks da parte "RIFF".

As partes "RIFF" incluem um campo adicional nos quatro primeiros bytes do campo de dados. Esse campo adicional fornece o tipo de formulário do campo. O tipo de formulário é um código de quatro caracteres que identifica o formato dos dados armazenados no arquivo. Por exemplo, os arquivos de áudio waveform da Microsoft têm um tipo de formulário de "WAVE".

As partes "LIST" também incluem um campo adicional nos quatro primeiros bytes do campo de dados. Esse campo adicional contém o tipo de lista do campo. O tipo de lista é um código de quatro caracteres que identifica o conteúdo da lista. Por exemplo, uma parte "LIST" com um tipo de lista de "INFO" pode conter partes "ICOP" e "ICRD" fornecendo informações de data de criação e direitos autorais. A ilustração a seguir mostra um bloco "RIFF" que contém uma parte "LIST" e um outro subchunk (a parte "LIST" contém dois subchunks).

parte do riff que contém uma imagem de parte de lista

Os serviços de E/S de arquivo multimídia incluem duas funções que você pode usar para navegar entre partes em um arquivo RIFF: mmioAscend e mmioDescend. Você pode usar essas funções como funções de busca de alto nível. Quando você desce em uma parte, a posição do arquivo é definida como o campo de dados da parte (8 bytes desde o início da parte). Para partes "RIFF" e "LIST", a posição do arquivo é definida como o local após o tipo de formulário ou tipo de lista (12 bytes desde o início da parte). Quando você sobe de uma parte, a posição do arquivo é definida como o local após o final da parte.

Para criar uma nova parte, use a função mmioCreateChunk para gravar um cabeçalho de parte na posição atual em um arquivo aberto. As funções mmioAscend, mmioDescende mmioCreateChunk usam a estrutura deMMCKINFOpara especificar e recuperar informações sobre partes "RIFF".