Compartir a través de


Información general sobre el códec JPEG XR

El códec JPEG XR nativo está disponible a través del componente de creación de imágenes de Windows (WIC). El formato JPEG XR, que admite el códec, está diseñado para fotografía digital profesional y de consumidor.

El formato JPEG XR puede lograr hasta dos veces la eficacia de compresión del formato JPEG original, con artefactos de compresión menos notables. Las características de JPEG XR incluyen:

  • Compatibilidad con imágenes monocromáticas, RGB, CMYK y n-channel
  • Formatos enteros de 8, 16 y 32 bits
  • Intervalo dinámico alto, formatos de gama ancha, mediante valores de color de punto fijo o punto flotante
  • Descodificación progresiva
  • Codificación perdida o sin pérdida mediante el mismo algoritmo de compresión
  • Compatibilidad con la descodificación de regiones de interés en imágenes grandes

El formato JPEG XR se define en los siguientes documentos de estándares:

  • UIT-T T.832: Tecnología de la información – Sistema de codificación de imágenes JPEG XR – Especificación de codificación de imágenes
  • ISO/IEC 29199-2:2010: Tecnología de la información — Sistema de codificación de imágenes JPEG XR — Parte 2: Especificación de codificación de imágenes

El estándar JPEG XR se basa en gran medida en el formato HD Photo , pero hay algunas diferencias entre los dos formatos. En Windows 8, el códec HD Photo se ha actualizado para admitir JPEG XR. El codificador ahora siempre genera una secuencia de bits compatible con JPEG XR. El descodificador puede descodificar imágenes JPEG XR y HD Photo.

Se han realizado importantes mejoras de rendimiento, en relación con el códec HD Photo, al códec JPEG XR. Por ejemplo, la descodificación de imágenes de resolución secundaria, como la generación de miniaturas, se ha mejorado, así como la descodificación de imágenes de baja resolución. Se recomienda usar el formato JPEG XR en lugar del formato HD Photo.

Información del códec

Componente Descripción
Extensión de nombre de archivo "jxr" y "wdp"
GUID del contenedor GUID_ContainerFormatWmp
GUID del descodificador CLSID_WICWmpDecoder
GUID del codificador CLSID_WICWmpEncoder
Compatibilidad con perfiles El codificador y el descodificador admiten hasta el perfil principal y hasta el nivel 128.

 

Características del códec

Rango dinámico alto

JPEG XR admite imágenes de rango dinámico alto, usando colores de punto flotante o punto fijo. En estos formatos de color, el intervalo numérico de un píxel es mayor que el intervalo visible, por lo que puede ajustar los colores por encima o por debajo del intervalo visible durante las fases de procesamiento intermedias.

  • Punto fijo: en una representación de punto fijo, 0 representa negro y 1,0 representa la saturación máxima. El códec JPEG XR admite formatos de punto fijo de 16 y 32 bits. Para 16 bits, 1,0 = 0x2000h, que proporciona 13 bits para el intervalo visible [0...1]. El intervalo total es de –4,0 a +3,999 y se asigna linealmente. Para 32 bits, 1,0 = 0x01000000h, el intervalo visible es de 24 bits y el intervalo total es de –128 a +127,999.
  • Punto flotante: en una representación de punto flotante, 0 representa negro y 1,0 representa la saturación máxima. El códec JPEG XR admite formatos de punto flotante de 16 y 32 bits.

Iconos

Un marco se puede particionar en las subregiones rectangulares denominadas mosaicos. Un icono es un área de una imagen que contiene matrices rectangulares de macrobloqueos. Los iconos permiten descodificar las regiones de la imagen sin procesar toda la imagen.

Durante la codificación, seleccione el número de iconos estableciendo las propiedades HorizontalTileSlices y VerticalTileSlices . El tamaño mínimo del icono es de 16 × 16 píxeles. El codificador ajusta el número de iconos para mantener esta restricción. Hay sobrecarga de almacenamiento y procesamiento asociada a cada icono, por lo que debe tener en cuenta el número de iconos necesarios para escenarios concretos.

Salida de flujo de imagen

El estándar JPEG-XR define dos partes de un archivo JPEG-XR:

  • Secuencia de bits de imagen, definida en el cuerpo del estándar.
  • Contenedor de imágenes. El archivo contiene metadatos exif y XMP, y se define en el anexo A del estándar.

Es posible, y permitido por el estándar, insertar la secuencia de imágenes dentro de otro tipo de contenedor de archivos. El codificador admite un modo de solo secuencia, que genera la secuencia de bits de imagen sin procesar sin contenedor de imágenes. Una aplicación puede almacenar la secuencia de bits en algún otro formato de contenedor.

Para habilitar el modo de solo secuencia, establezca la propiedad StreamOnly .

Configuración de calidad de imagen

Varias propiedades de códec controlan la calidad de la imagen de salida del codificador.

  • ImageQuality es una propiedad común entre códecs WIC. Especifica la calidad de la imagen como un valor de punto flotante único de 0,0 a 1,0,
  • Las propiedades Quality, Overlap y Subsampling proporcionan más control sobre la configuración de calidad.

Para usar las propiedades Quality, Overlap y Subsampling , establezca la propiedad UseCodecOptions en VARIANT_TRUE.

Si UseCodecOptions es VARIANT_FALSE (VARIANT_FALSE es el valor predeterminado), el codificador usa la propiedad ImageQuality . El codificador asigna el valor de ImageQuality a Quality, Overlap y Subsampling a través de una tabla de búsqueda.

El codificador no admite la propiedad CompressionQuality .

Transcodificación de dominio comprimido

El códec JPEG XR puede realizar ciertas transformaciones de imagen sin descodificar realmente los datos comprimidos y volver a codificarlo. Las operaciones de dominio comprimidos son muy eficaces y evitan cualquier pérdida de calidad adicional que sea habitual al descodificar y volver a codificar una imagen comprimida con pérdida.

Se admiten las siguientes operaciones de dominio comprimido:

  • Recorte una región de la imagen.
  • Girar o voltear la imagen.
  • Descarte los datos de frecuencia para crear un archivo de imagen más pequeño.
  • Reorganizar la imagen entre el orden espacial y la frecuencia.

El codificador JPEG XR usa transcodificación de dominio comprimido, si es posible, cuando la imagen de origen es una imagen JPEG XR. Cuando el codificador realiza una operación de dominio comprimido, omite las siguientes propiedades de códec: AlphaQuality, ImageQuality, InterleavedAlpha, Superposiciónsin pérdida y Calidad. Si las propiedades HorizontalTileSlices y VerticalTileSlices están presentes, debe establecerlas en cero. No se puede cambiar el tamaño del icono de una imagen como parte de un transcodificación de dominio comprimido.

En la lista siguiente se describe cómo realizar las transformaciones de imagen.

  • Para recortar la imagen, establezca la región deseada en el parámetro WICRect del método WriteSource .
  • Para girar o voltear la imagen, establezca la propiedad BitmapTransform .
  • Para descartar los datos de frecuencia en la imagen, establezca la propiedad ImageDataDiscard . Para descartar los datos de frecuencia en el canal alfa, establezca la propiedad AlphaDataDiscard . Descartar los datos de frecuencia reduce el tamaño del archivo codificado y puede reducir la resolución.
  • Para cambiar la organización de la imagen entre la frecuencia y el orden espacial, establezca la propiedad FrequencyOrdering .

Para deshabilitar la transcodificación de dominio comprimido y forzar al codificador a volver a codificar la imagen, establezca UseCodecOptions en VARIANT_TRUE y establezca CompressedDomainTranscodeen VARIANT_FALSE.

Opciones del codificador

Para establecer las propiedades de codificación, use la interfaz IPropertyBag2 . Para obtener más información, consulte Introducción a la codificación.

En la lista siguiente se especifican las opciones del codificador.

AlphaDataDiscard

Establece la cantidad de datos de frecuencia alfa que se van a descartar durante una transcodificación de dominio comprimido.

Tipo de datos VARTYPE Intervalo Valor predeterminado
UCHAR VT_UI1 0–4 None

 

Esta propiedad solo se aplica si la propiedad CompressedDomainTranscode está establecida en VARIANT_TRUE y la imagen contiene un canal alfa plano o un canal alfa intercalado; de lo contrario, se omite.

En el caso de las imágenes que contienen un canal alfa planar, los valores siguientes son válidos.

Valor Descripción
0 No se descartan datos de frecuencia de la imagen.
1 Los flexbits se descartan. Esto reduce arbitrariamente la calidad del canal alfa planar para la imagen transcodificada. , sin un cambio en la resolución efectiva. La reducción exacta del tamaño y la calidad del archivo depende de numerosos factores y no se puede especificar exactamente.
2 La banda de datos de frecuencia de paso alto se descarta, incluidos los flexbits. Esto reduce eficazmente la resolución del canal alfa plano por un factor de 4 en ambas dimensiones. Las dimensiones reales de la imagen transcodificada siguen siendo las mismas, pero la imagen pierde todos los detalles en cada bloque 4x4 de píxeles de canal alfa. Normalmente, debe establecer este valor solo cuando la propiedad ImageDataDiscard tenga el mismo valor.
3 Se descartan las bandas de datos de frecuencia de paso alto y bajo paso, incluidos los flexbits. Esto reduce de forma ffectiva la resolución del canal alfa plano por un factor de 16 en ambas dimensiones. Las dimensiones reales de la imagen transcodificada siguen siendo las mismas, pero la imagen pierde todos los detalles en cada macrobloque de 16x16 de píxeles de canal alfa. Normalmente, debe establecer este valor solo cuando la propiedad ImageDataDiscard tenga el mismo valor.
4 Se descarta totalmente el canal alfa. El formato de píxel de la imagen transcodificada se cambia para reflejar la eliminación del canal alfa.

 

En el caso de las imágenes que contienen un canal alfa intercalado, el siguiente valor es válido.

Valor Descripción
4 Se descarta totalmente el canal alfa. El formato de píxel de la imagen transcodificada se cambia para reflejar la eliminación del canal alfa.

 

Para alfa intercalado, a menos que esta propiedad se establezca en 4, el canal alfa se procesa igual que los datos de imagen, según el valor de la propiedad ImageDataDiscard .

AlphaQuality

Establece la calidad de compresión de la imagen del canal alfa planar.

Tipo de datos VARTYPE Intervalo Valor predeterminado
UCHAR VT_UI1 1–255 1

 

Esta propiedad se aplica cuando la imagen tiene un canal alfa y la propiedad InterleavedAlpha está VARIANT_FALSE. El valor 1 indica el modo sin pérdida. El aumento de los valores da como resultado una mayor relación de compresión y una menor calidad de imagen.

BitmapTransform

Especifica si la imagen se gira o se voltea cuando se descodifica.

Tipo de datos VARTYPE Intervalo Valor predeterminado
UCHAR VT_UI1 WICBitmapTransformOptions WICBitmapTransformRotate0

 

CompressedDomainTranscode

Habilita o deshabilita la transcodificación de dominios comprimidos.

Tipo de datos VARTYPE Valor predeterminado
VARIANT_BOOL VT_BOOL VARIANT_TRUE

 

Para deshabilitar las operaciones de dominio comprimidos, establezca esta propiedad en VARIANT_FALSE.

FrequencyOrder

Habilita la codificación en orden de frecuencia. Las implementaciones de dispositivos de codificadores JPEG XR pueden organizar un archivo con el fin de reducir la memoria necesaria durante la codificación.

Tipo de datos VARTYPE Valor predeterminado
VARIANT_BOOL VT_BOOL VARIANT_TRUE

 

  • VARIANT_TRUE: orden de frecuencia. Los datos de frecuencia más bajos aparecen primero en el archivo y el contenido de la imagen se agrupa por su frecuencia en lugar de por su orientación espacial. La organización de un archivo por orden de frecuencia proporciona el mejor rendimiento para cualquier descodificación basada en frecuencia.
  • VARIANT_FALSE: orden espacial. El orden espacial reduce la memoria necesaria durante la codificación.

Se recomienda el orden de frecuencia a menos que tenga motivos específicos del rendimiento o de la aplicación para usar el orden espacial.

HorizontalTileSlices

Establece el número de mosaicos horizontales.

Tipo de datos VARTYPE Intervalo Valor predeterminado
USHORT VT_UI2 0–4095 (ancho de imagen – 1) >> 8

 

El valor es el número de subdivisiones horizontales; es decir, el número de mosaicos horizontales : 1.

IgnoreOverlap

Especifica cómo el codificador controla los límites del icono durante una transcodificación de dominio comprimido.

Tipo de datos VARTYPE Valor predeterminado
VARIANT_BOOL VT_BOOL VARIANT_FALSE

 

Esta propiedad solo se aplica si la propiedad CompressedDomainTranscode se establece en VARIANT_TRUE y se realiza una transcodificación de subregión de exactamente uno o más iconos.

La operación predeterminada para una transcodificación de región es expandir la región solicitada para incluir los píxeles circundantes necesarios para la descodificación de superposición de los bordes de la región. Si esta propiedad se establece en VARIANT_TRUE, el códec omite los píxeles circundantes y solo se extraen los iconos o iconos seleccionados. Si la imagen de origen no está en mosaico o si la región solicitada incluye iconos parciales, este parámetro se omite.

ImageDataDiscard

Establece la cantidad de datos de frecuencia de imagen que se van a descartar durante una transcodificación de dominio comprimido.

Tipo de datos VARTYPE Intervalo Valor predeterminado
UCHAR VT_UI1 0–3 0

 

Esta propiedad solo se aplica si la propiedad CompressedDomainTranscode está establecida en VARIANT_TRUE; de lo contrario, se omite.

Valor Descripción
0 No se descartan datos de frecuencia de la imagen.
1 Los flexbits se descartan. Esto reduce arbitrariamente la calidad de la imagen transcodificada sin cambiar la resolución efectiva de la imagen. La reducción exacta del tamaño y la calidad del archivo depende de numerosos factores y no se puede especificar exactamente. Este valor devuelve un error especificado para un canal alfa intercalado.
2 La banda de datos de frecuencia de paso alto se descarta, incluidos los flexbits. Esto reduce la resolución de la imagen transcodificada por un factor de 4 en ambas dimensiones. Las dimensiones reales de la imagen transcodificada siguen siendo las mismas, pero la imagen pierde todos los detalles en cada bloque de 4x4 píxeles. Por lo tanto, la imagen transcodificada debe reducirse en consecuencia cada vez que se descodifica.
3 Se descartan las bandas de datos de frecuencia de paso alto y bajo paso, incluidos los flexbits. Esto reduce la resolución de la imagen transcodificada por un factor de 16 en ambas dimensiones. Las dimensiones reales de la imagen transcodificada siguen siendo las mismas, pero la imagen pierde todos los detalles en cada macrobloque de 16 x 16 píxeles. Por lo tanto, la imagen transcodificada debe reducirse en consecuencia cada vez que se descodifica.

 

Si la imagen contiene un canal alfa intercalado, el valor de ImageDataDiscard se aplica al canal alfa a menos que la propiedad AlphaDataDiscard se establezca en 4, en cuyo caso se descarta el canal alfa.

Para el alfa planar, los datos de frecuencia descartados se controlan mediante la propiedad AlphaDataDiscard .

ImageQuality

Establece la calidad de la imagen.

Tipo de datos VARTYPE Intervalo Valor predeterminado
FLOAT VT_R4 0–1.0 0.9

 

El nivel 1.0 proporciona una compresión matemáticamente sin pérdida.

El nivel 0,0 es la configuración de calidad más baja.

InterleavedAlpha

Especifica si se va a codificar alfa intercalado o alfa planar.

Tipo de datos VARTYPE Valor predeterminado
VARIANT_BOOL VT_BOOL VARIANT_FALSE

 

  • VARIANT_TRUE: alfa intercalado. La información del canal alfa se codifica como un canal intercalado adicional, sin correlación con los canales de contenido de la imagen. Este modo es útil para descodificar alfa simultáneamente con la imagen cuando se transmite la imagen.
  • VARIANT_FALSE: alfa planar. Un canal alfa planar se codifica como una imagen independiente. Los datos de imagen y el canal alfa se descodifican de forma independiente. Opcionalmente, puede establecer el nivel de calidad del canal alfa estableciendo la propiedad AlphaQuality .

El alfa intercalado solo se admite para determinados formatos de píxelES RGB. El alfa planar es compatible con cualquier formato de imagen que defina un canal alfa.

Lossless

Habilita la compresión de pérdidas.

Tipo de datos VARTYPE Valor predeterminado
VARIANT_BOOL VT_BOOL VARIANT_FALSE

 

Si el valor es VARIANT_TRUE, el codificador usa la compresión sin pérdida. Cuando se establece en VARIANT_TRUE, esta propiedad invalida la propiedad ImageQuality .

Superposición

Establece el nivel de filtrado de superposición. Con el filtrado de superposición, los coeficientes de transformación se aplican a través de los límites de bloque y de macrobloqueo. Esto puede reducir los artefactos de bloqueo.

Tipo de datos VARTYPE Intervalo Valor predeterminado
UCHAR VT_UI1 0–4 1

 

Valor Descripción
0 Sin superposición.
1 Un nivel de superposición, mosaico suave. (Valor predeterminado).
2 Dos niveles de superposición, mosaico suave.
3 Un nivel de superposición, mosaicos duros
4 Dos niveles de superposición, mosaicos duros.

 

Definiciones:

  • Un nivel de superposición: los valores codificados de bloques 4x4 se modifican en función de los bloques vecinos.
  • Dos niveles de superposición: se aplica el primer nivel de superposición. Además, los valores codificados de 16x16 macroblocks se modifican en función de los bloques de macros vecinos.
  • Mosaico flexible: el filtrado de superposición se aplica a través de los límites del icono.
  • Mosaicos duros: el filtrado de superposición no se aplica a través de los límites del icono. Los iconos duros pueden introducir algunos artefactos visuales a lo largo de los límites del icono.

Si establece esta propiedad, establezca también UseCodecOptions en VARIANT_TRUE.

ProgressiveMode

Habilita o deshabilita la codificación progresiva.

Tipo de datos VARTYPE Valor predeterminado
VARIANT_BOOL VT_BOOL VARIANT_FALSE

 

Valor Descripción
VARIANT_TRUE Modo secuencial (valor predeterminado).
VARIANT_FALSE Modo progresivo.

 

Calidad

Establece la calidad de compresión.

Tipo de datos VARTYPE Intervalo Valor predeterminado
UCHAR VT_UI1 1–255 1

 

El valor 1 indica el modo sin pérdida. El aumento de los valores da como resultado una mayor relación de compresión y una menor calidad de imagen.

Si establece esta propiedad, establezca también UseCodecOptions en VARIANT_TRUE.

StreamOnly

Habilita o deshabilita el modo de solo transmisión.

Tipo de datos VARTYPE Valor predeterminado
VARIANT_BOOL VT_BOOL VARIANT_FALSE

 

Valor Descripción
VARIANT_TRUE El codificador genera la secuencia de imagen sin procesar sin metadatos.
VARIANT_FALSE El codificador genera el formato de contenedor (flujo de imagen más metadatos).

 

Submuestreo

Establece el submuestreo cromático. Esta propiedad solo se aplica a imágenes RGB.

Tipo de datos VARTYPE Intervalo Valor predeterminado
UCHAR VT_UI1 0–3 3 si ImageQuality> 0.8; en caso contrario, 1

 

Valor Descripción
3 Codificación 4:4:4. Conserva la resolución cromática completa.
2 Codificación 4:2:2. La resolución cromática es 1/2 de resolución de luminancia.
1 Codificación 4:2:0. La resolución cromática es 1/4 de resolución de luminancia.
0 Codificación 4:0:0. Descarta todos los valores cromáticos y conserva solo la luminancia. Nota: Este modo no se recomienda, ya que el códec usa una definición ligeramente modificada de luminancia para mejorar el rendimiento. En su lugar, es mejor convertir la imagen en monocromo antes de codificar.

 

4:2:2 y 4:2:0 conservan los detalles de la luminancia a costa de los detalles del color.

Si establece esta propiedad, establezca también UseCodecOptionsen VARIANT_TRUE.

UseCodecOptions

Especifica si se deben usar las propiedades Quality, Overlap y Subsampling en lugar de la propiedad ImageQuality genérica.

Tipo de datos VARTYPE Valor predeterminado
VARIANT_BOOL VT_BOOL VARIANT_FALSE

 

VerticalTileSlices

Establece el número de iconos horizontales.

Tipo de datos VARTYPE Intervalo Valor predeterminado
USHORT VT_UI2 0–4095 (alto de imagen – 1) >> 8

 

El valor es el número de subdivisiones verticales; es decir, el número de mosaicos verticales – 1.

Formatos de color admitidos

Para obtener más información sobre estos formatos, vea Formatos de píxeles nativos.

  • Formatos RGB enteros
    • GUID_WICPixelFormat24bppRGB
    • GUID_WICPixelFormat24bppBGR
    • GUID_WICPixelFormat32bppBGR
    • GUID_WICPixelFormat48bppRGB
    • GUID_WICPixelFormat32bppBGRA
    • GUID_WICPixelFormat64bppRGBA
    • GUID_WICPixelFormat32bppPBGRA
    • GUID_WICPixelFormat64bppPRGBA
  • Formatos RGB de punto fijo
    • GUID_WICPixelFormat48bppRGBFixedPoint
    • GUID_WICPixelFormat64bppRGBFixedPoint
    • GUID_WICPixelFormat96bppRGBFixedPoint
    • GUID_WICPixelFormat128bppRGBFixedPoint
    • GUID_WICPixelFormat128bppRGBAFixedPoint
  • Formatos RGB de punto flotante
    • GUID_WICPixelFormat48bppRGBHalf
    • GUID_WICPixelFormat64bppRGBHalf
    • GUID_WICPixelFormat128bppRGBFloat
    • GUID_WICPixelFormat64bppRGBAFixedPoint
    • GUID_WICPixelFormat64bppRGBAHalf
    • GUID_WICPixelFormat128bppRGBAFloat
    • GUID_WICPixelFormat128bppPRGBAFloat
  • Formatos de escala de grises
    • GUID_WICPixelFormat8bppGray
    • GUID_WICPixelFormat16bppGray
    • GUID_WICPixelFormat16bppGrayFixedPoint
    • GUID_WICPixelFormat16bppGrayHalf
    • GUID_WICPixelFormat32bppGrayFixedPoint
    • GUID_WICPixelFormat32bppGrayFloat
  • Formatos empaquetados
    • GUID_WICPixelFormat16bppBGR555
    • GUID_WICPixelFormat16bppBGR565
    • GUID_WICPixelFormat32bppBGR101010
    • GUID_WICPixelFormat32bppRGBE
  • Formatos CMYK
    • GUID_WICPixelFormat40bppCMYKAlpha
    • GUID_WICPixelFormat64bppCMYK
    • GUID_WICPixelFormat80bppCMYKAlpha
  • Formatos de canal N
    • GUID_WICPixelFormat32bpp4Channels
    • GUID_WICPixelFormat40bpp5Channels
    • GUID_WICPixelFormat48bpp6Channels
    • GUID_WICPixelFormat56bpp7Channels
    • GUID_WICPixelFormat64bpp8Channels
    • GUID_WICPixelFormat32bpp3ChannelsAlpha
    • GUID_WICPixelFormat40bpp4ChannelsAlpha
    • GUID_WICPixelFormat48bpp5ChannelsAlpha
    • GUID_WICPixelFormat56bpp6ChannelsAlpha
    • GUID_WICPixelFormat64bpp7ChannelsAlpha
    • GUID_WICPixelFormat72bpp8ChannelsAlpha
    • GUID_WICPixelFormat48bpp3Channels
    • GUID_WICPixelFormat64bpp4Channels
    • GUID_WICPixelFormat80bpp5Channels
    • GUID_WICPixelFormat96bpp6Channels
    • GUID_WICPixelFormat128bpp8Channels
    • GUID_WICPixelFormat64bpp3ChannelsAlpha
    • GUID_WICPixelFormat80bpp4ChannelsAlpha
    • GUID_WICPixelFormat96bpp5ChannelsAlpha
    • GUID_WICPixelFormat112bpp6ChannelsAlpha
    • GUID_WICPixelFormat128bpp7ChannelsAlpha
    • GUID_WICPixelFormat144bpp8ChannelsAlpha