БЛОК GIF
Для того, чтобы обеспечить аккуратное расширение определения GIF, необходим механизм для определения упаковки внутри потока данных GIF. Указанное расширение было определено и документировано CompuServe для того, чтобы предусмотреть управляемый способ усовершенствований.
Расширенный блок GIF пакуется способом, похожим на тот, который использовался для растровых данных, но не сжимается. Основная структура блока:
struct {
char id; // '!' - Идентификатор расширенного блока
char code; // Расширенный функциональный код (0-255)
... // Повторяется столько раз, сколько необходимо
char counter; // байт-счетчик
char data[N]; // функ. байты данных
...
char id1; // '0' - нулевой байт-счетчик (терминатор блока)
}
Расширенный блок GIF может непосредственно предшествовать дескриптору изображения или находиться перед терминатором GIF.
Все декодеры GIF должны быть способны распознавать присутствие расширенного блока GIF и затем читать его, если они не могут обработать