O que é um arquivo J2C?
Um arquivo J2C contém um fluxo de código bruto JPEG 2000, em vez das caixas e da estrutura de metadados de um contêiner da família JP2. O mesmo fluxo de bits elementar também circula com as extensões .j2k e .jpc. Ele transporta principalmente dados comprimidos de amostras de imagem.
Como funcionam os arquivos J2C
Um arquivo .j2c é um único fluxo de código JPEG 2000, sem nenhum envoltório; .j2k e .jpc são outros nomes para o mesmo fluxo, não formatos distintos. A sintaxe do fluxo de código é definida no anexo A de ITU-T T.800 | ISO/IEC 15444-1. Ele começa com o marcador SOC, imediatamente seguido pelo segmento marcador SIZ, que informa o tamanho da grade de referência e dos blocos, a quantidade de componentes e a profundidade de bits e o espaçamento das amostras de cada componente. Outros segmentos marcadores descrevem o estilo de codificação, a quantização e a progressão, e o marcador EOC encerra o fluxo. Isso é suficiente para um decodificador reconstruir os valores das amostras, e como os níveis de resolução, as camadas de qualidade, os blocos e a ordem de progressão são codificados no próprio fluxo, a decodificação parcial ou com resolução reduzida não depende de um contêiner. O que o fluxo de código não informa é o significado das amostras. O formato de arquivo JP2 existe para acrescentar essa camada: ele envolve o fluxo de código em caixas que contêm, entre outras coisas, pelo menos uma caixa de especificação de cor e, opcionalmente, uma caixa de propriedade intelectual para informações sobre direitos.
Informações essenciais
- Como reconhecer um arquivo
.j2c? Pelos primeiros bytes, não pelo nome. Um fluxo de código começa comFF 4F FF 51, o marcador SOC seguido pelo marcador SIZ, enquanto um arquivo JP2 começa com a caixa de assinatura de 12 bytes00 00 00 0C 6A 50 20 20 0D 0A 87 0A, seguida por uma caixa de tipo de arquivo. O tipo de mídia registrado para um fluxo de código sem contêiner éimage/j2c, que lista tantoj2cquantoj2kcomo extensões de arquivo;image/jp2é o tipo do formato de arquivo estruturado em caixas. - O arquivo informa em qual espaço de cor estão suas amostras? Não. O registro de
image/j2cafirma que um fluxo de código JPEG 2000 não contém informações sobre o espaço de cor da imagem e que essas informações são implícitas ou fornecidas fora de banda. Um arquivo JP2 deve conter pelo menos uma caixa de especificação de cor; um arquivo.j2cnão tem equivalente. Portanto, quem exibe ou converte um fluxo de código sem contêiner depende de uma suposição ou de informações mantidas em outro lugar. - Todo decodificador de JPEG 2000 Parte 1 consegue ler qualquer arquivo
.j2c? Não necessariamente. Segundo o registro, um fluxo de código pode usar recursos de qualquer parte da família JPEG 2000, e os recursos de que um decodificador precisa são sinalizados pelo parâmetro Rsiz no segmento marcador SIZ em conjunto com o segmento marcador CAP. Os bytes iniciais não distinguem esses casos: o OpenJPEG, por exemplo, detecta fluxos de código de alto rendimento.jhccom a mesma assinatura de quatro bytes que usa para.j2c. - Um arquivo
.j2cé sem perdas ou com perdas? O sufixo não informa, mas o fluxo informa em parte. Em um fluxo de código da Parte 1, os segmentos marcadores de estilo de codificação registram se foi usado o filtro wavelet irreversível 9-7 ou o reversível 5-3. O filtro irreversível é o caminho com perdas. O filtro reversível possibilita a codificação sem perdas, mas não comprova que ela foi usada, porque T.800 observa que a transformação reversível de múltiplos componentes, usada apenas com o filtro 5-3, pode ser usada em fluxos de código truncados para oferecer compressão com perdas. Um fluxo de código que usa as extensões da Parte 2 (T.801 | ISO/IEC 15444-2) pode conter outros valores no mesmo campo, cada um selecionando um núcleo de transformação definido no próprio fluxo.
Quando os arquivos J2C são relevantes
Um decodificador deve aceitar um fluxo de código JPEG 2000 sem contêiner, em vez de supor que todo recurso tenha metadados de um contêiner JP2. Fluxos de trabalho que precisam de informações sobre cor ou direitos podem precisar obtê-las de outra fonte.
Fontes
- Registro de tipo de mídia na IANA: image/j2c (um único fluxo de código JPEG 2000)
- Rec. ITU-T T.800 (06/2019) | ISO/IEC 15444-1: sistema básico de codificação JPEG 2000, edição substituída com texto disponível gratuitamente (anexo A, sintaxe do fluxo de código; anexo G, transformações de componentes; anexo I, formato de arquivo JP2)
- Rec. ITU-T T.801 (06/2021) | ISO/IEC 15444-2: extensões de JPEG 2000, edição substituída com texto disponível gratuitamente (anexo A, tabela A.10, valores estendidos de transformação)
- RFC 3745: registros de tipos MIME para JPEG 2000 (image/jp2 e tipos relacionados baseados em caixas)
- Descrição de formato da Library of Congress: JPEG 2000 Parte 1, sistema básico de codificação
- Código-fonte do OpenJPEG: opj_decompress.c (tabela de extensões e detecção de assinatura)