A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Referências

IFF

Dom

8

Jul

2007


18:28

(10 votos, média 4.60 de 5) 


Nível avançado IFF é o acrônimo de Interchage File Format, Formato de Arquivo Permutável. Para que serve isto? É para botar ordem na casa, facilitar a vida dos programadores e muito mais :thumbup:

A Electronic Arts

A Eletronic Arts é uma editora americana de jogos para computador e para videogames fundada em 1982. Esta empresa precisa ser elogiada porque facilitou a vida de programadores e usuários finais. Foi dela a idéia de criar o IFF, um padrão de formato de arquivos genérico. Além de estabelecer um critério de organização dos dados de arquivos, também publicou toda a documentação e o código fonte em C para criar e ler arquivos do tipo IFF.

Primeira coisa: o padrão é aberto, de conhecimento público e não depende de software proprietário - uma enorme vantagem. Segunda grande vantagem: arquivos deste tipo possuem uma vida útil muito prolongada porque, mantido o padrão, arquivos de dados antigos continuam compatíveis com softwares mais atuais. E, como todas as coisas boas são três, a terceira vantagem é que o padrão IFF pode ser ampliado para se criar novos padrões.

Bem, parece que a coisa é tão boa que até a Microsoft se rendeu aos encantos do IFF smile

O padrão dos padrões

Um arquivo IFF é um conjunto de dados dispostos de forma que possam ser lidos por vários programas, mesmo que não relacionados. Um arquivo IFF não pode conter dados pertencentes a um único programa (dados proprietários). Se um programa precisar de dados "pessoais", estes devem ser colocados de modo que outros programas possam "pular" estes dados.

Existem vários tipos diferentes de arquivos IFF. Os mais conhecidos talvez sejam o GIFF, que armazena dados de imagens, e os WAVE, MIDI e AIFF, que guardam amostragens de som. Cada um destes arquivos precisa de uma identificação (ID) que garante que o arquivo é do tipo IFF, seguida por uma segunda ID que indica o tipo do arquivo.

Uma ID é composta por quatro caracteres ASCII, ou seja, por quatro bytes. Experimente abrir um arquivo GIF ou WAV num editor qualquer (até o bloco de notas do Windows serve). Existem alguns caracteres "legíveis", sempre em grupos de 4 - são as IDs.

Todo arquivo IFF precisa começar com uma das seguintes IDs (estão entre aspas para poder identificar o caractere espaço - ASCII 20): "FORM", "LIST" e "CAT ". Se uma destas IDs não estiver no início do arquivo, então ele não é IFF. Esta ID é conhecida como ID de grupo, ou seja, é uma "ID mestra" que agrupa outras IDs também conhecidas como chunks (nacos).

Logo depois da ID mestra vem um inteiro longo (isto é, um valor binário de 32 bits). Este inteiro indica quantos bytes existem no arquivo, excluídos os bytes da ID mestra e os dele mesmo, ou seja, o valor indica o tamanho do arquivo menos 8 bytes (4 da ID mestra e 4 para o valor de 32 bits).

Depois do inteiro longo vem a segunda ID (mais quatro letras) informando o tipo do arquivo IFF: por exemplo, AIFF ou WAVE para som. Somando os 4 bytes da segunda ID com os 8 bytes da ID mestra e da contagem de bytes (inteiro longo), temos um cabeçalho de 12 bytes. O que vem depois do cabeçalho depende do tipo de arquivo e pode variar. Veja um exemplo de cabeçalho AIFF:

46 4F 52 4D            FORM
00 00 12 D4            Número de bytes de dados
41 49 46 46            AIFF

Uma coisa que todos os arquivos IFF possuem em comum depois do cabeçalho é que os dados são organizados em chunks. Um chunk ou naco é composto por uma ID, por um inteiro longo que informa quantos bytes de dados estão presentes no chunk e depois os dados propriamente ditos. Novamente, o inteiro longo não inclui a ID do chunk e ele próprio, apenas o número de bytes ocupados pelos dados.

Resumo da história: arquivos IFF são constituídos por um cabeçalho e por vários chunks (grupos de dados). Cada grupo de dados começa com uma ID e um inteiro longo que contém o número de bytes de dados do grupo.

Algumas particularidades

  • Um chunk nunca pode ter um número ímpar de bytes de dados. Por exemplo, se o grupo CMAP de um arquivo do tipo ILBM (um tipo de imagem) tiver 3 bytes de dados, a estrutura fica assim:
    CMAP          ID do chunk
    3             Quantidade de dados
    0,1,33        <-------------------- NÃO ACONTECE
    
    CMAP          ID do chunk
    3             Quantidade de dados
    0,1,33,0      <-------------------- DADOS AJUSTADOS
    
  • FORM: é a ID mestra para arquivos IFF "normais" (som e imagem).
  • CAT : é uma coleção de arquivos FORM colocados num único arquivo.
  • LIST: é uma coleção de arquivos CAT colocados num único arquivo.

Big Endian e Little Endian

No formato IFF todos os valores de 16 e de 32 bits são armazenados na ordem Big Endian (Byte mais significativo primeiro e byte menos significativo no fim). Por exemplo, num arquivo AIFF:

46 4F 52 4D	FORM
00 00 10 00	hex 00 00 10 00 ou 4096 decimal
41 49 46 46	AIFF

Isto foi feito porque arquivos IFF foram inicialmente usados em máquinas com CPU Motorola 68000. Aliás, este também é o motivo pelo qual os dados precisavam ser ajustados (vide exemplo acima). Pois bem, a Microsoft achou o formato IFF uma tetéia, só que o Windows foi feito para processadores Intel... e Intel usa Little Endian. Compare o exemplo a seguir com o anterior:

52 49 46 46	RIFF
02 01 00 00	hex 00 00 01 02 ou 258 decimal
57 41 56 45	WAVE

Pois bem, a Microsoft pregou o chinelo e criou o formato RIFF, onde os valores são armazenados na ordem Little Endian (é como se fosse ler de trás para frente). Costumo criticar a MS, mas esta alteração realmente foi necessária. Mas tem uma fofoca boa: como a MS adora afanar coisas, "criou" uma tal de ID mestra RIFX. Sabem o que vem a ser a RIFX? Apenas a FORM com outro nome! Ainda bem que não pegou, mas, caso você encontre uma tranqueira destas, é só trocar a ID mestra por FORM que fica tudo do mesmo tamanho... só que no formato original biggrin

казино joycasino игратьтреногиполигон ооо харьков возрождение мунтянtranslation services cincinnatipolish language translationлобановский александр

Informações adicionais