# JPEG 2000

JPEG 2000 es un estándar de compresión y codificación digital de imágenes. Fue creado por el Joint Photographic Experts Group (Grupo Conjunto de Expertos en Fotografía o JPEG), en el año 2000 con la intención de sustituir el formato original creado en 1992. El nuevo formato se basa en la transformada wavelet, en lugar de la transformada de coseno discreta establecida para el estándar original. La extensión de los archivos en formato JPEG 2000 es .jp2.
JPEG 2000 puede trabajar con niveles de compresión mayores que los de JPEG sin incurrir en los principales defectos del formato anterior con altas tasas de compresión: generación de bloques uniformes y aspecto borroso. También se adapta mejor a la carga progresiva de las imágenes. Sus principales desventajas están en que tiende a emborronar más la imagen que JPEG, incluso para un mismo tamaño de archivo (pero sin formar bloques), y que elimina algunos detalles pequeños y texturas, que el formato JPEG normal sí llega a representar.
Una ventaja de JPEG2000 es la posibilidad de poder seleccionar un "área de interés", evitando transmitir detalles de toda la extensión de la imagen. Esto quiere decir que el usuario encuadra la zona que desea visualizar con más detalle, con el consecuente ahorro en el ancho de banda de transmisión, dejando con menos detalles la zona que no interesa. Sin embargo, como consecuencia de esta flexibilidad, JPEG 2000 requiere codificadores / decodificadores más complejos y exigentes computacionalmente.
Parte de JPEG 2000 ha sido publicada como una norma ISO, ISO/IEC 15444-1:2000. Actualmente JPEG 2000 no está ampliamente admitido por los programas de visualización de páginas web. En algunos navegadores, los diseñadores no tienen intención de incluirlo debido a su escaso uso y gran número de patentes que tiene. De todas formas, existen muchas extensiones que dan soporte, que opcionalmente pueden ser instaladas por el usuario. Un navegador con soporte para este formato es Konqueror.

## Características

* Rendimiento superior de compresión: A altas tasas de bits, JPEG-2000 dispone de una pequeña ventaja de fidelidad sobre JPEG. A tasas de bits más bajas (por ejemplo, menos de 0,25 bits/pixel para imágenes en escala de grises), JPEG 2000 tiene una ventaja mucho más significativa que determinados modos de JPEG. Las ganancias de compresión JPEG se atribuyen al uso de la transformada wavelet discreta y a un sistema más sofisticado de codificación de la entropía.
* Representación de resolución múltiple: JPEG 2000 descompone la imagen en una representación de resolución múltiple durante el proceso de compresión. Esta descomposición puede emplearse para otros propósitos más allá de la compresión de la imagen.
* Transmisión progresiva de precisión por píxel y resolución, comúnmente llamada decodificación progresiva: JPEG 2000 proporciona organizaciones de flujos de datos eficientes, que son progresivos por precisión de píxel y resolución de imagen (o por tamaño de imagen). De esta manera, el espectador puede ver una versión de menor calidad de la imagen final, aún antes de que el contenido completo del archivo haya sido recibido. Según progresa la descarga del archivo, la calidad visual va mejorando progresivamente. El estándar JPEG 1992 también tiene una característica de transmisión progresiva pero es raramente utilizada.
* Compresión sin pérdidas y con pérdidas: Al igual que JPEG 1992, el estándar JPEG 2000 dispone de una única arquitectura de compresión que ofrece ambas alternativas. La compresión sin pérdida en JPEG 2000 se basa en el uso de una transformada wavelet entero-a-entero reversible.
* Acceso y procesamiento aleatorio del flujo de código, referido a la región de interés (ROI): Los flujos de código del JPEG 2000 ofrecen diversos mecanismos de acceso espacial aleatorio o a regiones de interés, con varios grados de granularidad. De esta manera es posible almacenar diferentes partes de la misma imagen con diferente calidad.
* Capacidad de recuperación de errores: Al igual que JPEG 1992, JPEG 2000 es robusto a errores, debido a la codificación de datos en bloques independientes relativamente pequeños.
* Formato de archivo flexible: Los formatos de archivo .jp2 y .jpx permiten manipular la información del espacio de color y los metadatos, además de facilitar la interoperabilidad en aplicaciones de red.
* Canal de información espacial adicional: permite almacenar los valores de transparencia o del canal alfa.

## JPEG 2000: sistema de codificación de la imagen – Partes

| Parte | Primera publicación | Última publicación | Última modificación | Estándar ITU-T | Título | Descripción |
| ISO/IEC 15444-1 | 2000 | 2004 | 2006 | T.800 | Sistema de codificación del núcleo | Características básicas de la compresión JPEG 2000 (.jp2) |
| ISO/IEC 15444-2 | 2004 | 2004 | 2006 | T.801 | Extensiones | .jpx, .mcp |
| ISO/IEC 15444-3 | 2002 | 2007 | | T.802 | Motion JPEG 2000 | .mj2 |
| ISO/IEC 15444-4 | 2002 | 2004 | | T.803 | Pruebas de conformidad | |
| ISO/IEC 15444-5 | 2003 | 2003 | 2003 | T.804 | Referencia de software | Implementación (Java y C) |
| ISO/IEC 15444-6 | 2003 | 2003 | 2007 | | Formato de archivo de imagen compuesta | .jpm, por ejemplo, imágenes de documentos para preimpresión |
| ISO/IEC 15444-7 (Abandonado) | | | | | Orientación de la función de apoyo mínimo de la norma ISO/IEC 15444-1 | Informe técnico sobre funciones de apoyo |
| ISO/IEC 15444-8 | 2007 | 2007 | 2008 | T.807 | Seguridad del JPEG 2000 | JPSEC (aspectos de seguridad) |
| ISO/IEC 15444-9 | 2005 | 2005 | 2008 | T.808 | Herramientas de interacción, APIs y protocolos | JPIP (interacción y protocolos API) |
| ISO/IEC 15444-10 | 2008 | 2008 | 2008 | T.809 | Extensiones de los datos en tres dimensiones | JP3D (imágenes volumétricas) |
| ISO/IEC 15444-11 | 2007 | 2007 | | T.810 | Wireless | JPWL (aplicaciones wireless) |
| ISO/IEC 15444-12 | 2004 | 2008 | | | Base del formato de archivo multimedia ISO | |
| ISO/IEC 15444-13 | 2008 | 2008 | | T.812 | Nivel de entrada de codificador JPEG 2000 | |
| ISO/IEC 15444-14 (en desarrollo) | | | | | XML estructurales, representación y referencia | JPXML |

## Las discusiones técnicas

El objetivo de JPEG 2000 es no sólo mejorar el rendimiento de compresión JPEG, sino también añadir (o mejorar) las características tales como la escalabilidad y la capacidad de edición. Tanto las tasas de compresión muy baja y muy alta son compatibles con JPEG 2000. De hecho, la capacidad del diseño para manejar una gama muy grande de las tasas de bits es uno de los puntos fuertes de JPEG 2000. Por ejemplo, para reducir el número de bits para una imagen debajo de cierta cantidad, lo recomendable que ver con el primer estándar JPEG es reducir la resolución de la imagen de entrada antes de codificarlo. Eso es innecesario cuando se utiliza JPEG 2000, porque ya lo hace automáticamente a través de su estructura de descomposición multirresolución. En las secciones siguientes se describe el algoritmo de JPEG 2000.

### Los componentes: Transformación del color

Inicialmente, las imágenes tienen que ser transformadas a partir del RGB del espacio de color a otro espacio de color, dando lugar a tres componentes que se manejan por separado. Hay dos opciones posibles:
* Transformación de color irreversible (TIC): utiliza el conocido espacio de color YCBCR. Se llama "irreversible" porque tiene que ser aplicado sobre valores en coma flotante y provoca errores de redondeo.
* Transformación de color reversible (ECA): utiliza una versión modificada del espacio de color YUV que no introduce errores de cuantificación, por lo que es totalmente reversible. La aplicación adecuada de la ECA requiere que los números se redondeen según se especifica. La transformación es:
$Y_{r}=\left\lfloor {\frac {R+2G+B}{4}}\right\rfloor ;C_{b}=B-G;C_{r}=R-G;$
$G=Y-\left\lfloor {\frac {C_{b}+C_{r}}{4}}\right\rfloor ;R=C_{r}+G;B=C_{b}+G.$
La crominancia de componentes puede estar por debajo de las escalas de resolución, de hecho, ya que la transformación wavelet ya separa las imágenes en las escalas, la disminución de resolución es más efectiva. Este paso se llama la transformación de múltiples componentes en el lenguaje JPEG 2000 (el cual, desde su uso, no se limita a la modelo de color RGB).

### División en bloques (Tiling)

Después de la transformación del color, la imagen se divide en los llamados cuadros, regiones rectangulares de la imagen que se transforman y se codifican por separado. Pueden ser de cualquier tamaño, y también es posible considerar la imagen completa como un solo recuadro. Una vez que se elige un tamaño, todos los recuadros en que se divide la imagen deben tener el mismo tamaño (salvo, opcionalmente, los de las fronteras derecha e inferior). Dividir la imagen en bloques tiene la ventaja de que el decodificador necesitará menos memoria para decodificar la imagen y se puede optar por decodificar sólo cuadros seleccionados para lograr una decodificación parcial de la imagen. La desventaja de este enfoque es que la calidad de la imagen disminuye. El uso de muchos cuadros puede crear un efecto de bloqueo similar al del estándar original JPEG 1992.

### Transformada Wavelet

Luego estos cuadros son transformados a una profundidad arbitraria, a diferencia de JPEG 1992, que utiliza un bloque de tamaño 8 × 8 (transformada discreta del coseno). JPEG 2000 utiliza dos transformaciones wavelet diferentes:
* Irreversible: la transformada wavelet CDF 9/7 . Se dice que es "irreversible" porque introduce ruido de cuantificación que depende de la precisión del decodificador.
* Reversible: una versión redondeada de la transformada wavelet biortogonal CDF 5/3. Utiliza solamente coeficientes enteros, por lo que la salida no requiere redondeo (cuantificación) y no se genera ningún ruido de cuantificación. Se utiliza en la codificación sin pérdidas.
La transformada Wavelet es ejecutada por el régimen de elevación o por convolución.

### Cuantificación

Después de la transformada wavelet, los coeficientes son escalares cuantificados para reducir la cantidad de bits para que los represente, a expensas de una pérdida de calidad. El resultado es un conjunto de números enteros que tienen que ser codificados bit a bit. El parámetro que se puede cambiar para establecer la calidad final es el paso de cuantificación: cuanto mayor es el paso, mayor es la compresión y la pérdida de calidad. Con un paso de cuantificación que es igual a 1, no se realiza la cuantización (se utiliza en la compresión sin pérdida).

### Codificación

El resultado del proceso anterior es una colección de sub-bandas que representan a diversas escalas de aproximación. Una sub-banda es un conjunto de coeficientes - números reales que representan los aspectos de la imagen asociada a un rango de frecuencias determinadas, así como un ámbito espacial de la imagen.
Las sub-bandas cuantizadas se dividen aún más en precintos, regiones rectangulares en el dominio wavelet. A su vez, los precintos se dividen aún más en los bloques de código. Los bloques de código se encuentran en un subgrupo de una sola banda con tamaños iguales - excepto los situados en los bordes de la imagen. El codificador tiene que codificar los bits de todos los coeficientes cuantizados de un bloque de código, empezando por los bits más significativos y progresando a bits menos significativos en un proceso de régimen de EBCOT (codificación en bloque con truncamiento óptimo). En este proceso de codificación, cada plano de bits del bloque de código se codifican en tres pases de codificación llamado-tan, en primer lugar los bits de codificación (y signos) de los coeficientes insignificantes con los vecinos importantes, entonces se pasa al refinamiento de bits con coeficientes significativos y, por último, sin coeficientes de vecinos importantes. Los tres pasos son llamados propagación Importancia, Magnitud y refinamiento pase de limpieza, respectivamente.
Los bits de codificación seleccionados por estos pases, a continuación, se codifican con un codificador aritmético binario, (el codificador binario MQ). El contexto de un coeficiente está formado por el estado de sus nueve vecinos en el bloque de código. El resultado es un flujo de bits que se divide en paquetes. Los que contienen bits menos significativos se pueden descartar para lograr menores tasas de bits y una mayor distorsión.
Los paquetes de todas las sub-bandas se recogen en las llamadas capas de modo. El estándar JPEG 2000 no define cuántos paquetes contendrá una capa, pero en general un codec trata de construir capas de tal forma que la imagen calidad aumente monótonamente con cada capa, y la distorsión de la imagen se reduzca de una capa a otra. Así, las capas definen la progresión de la calidad de imagen dentro de la secuencia de código.
El problema ahora es encontrar la longitud de paquete óptimo para todos los bloques de código que minimicen la distorsión global de tal manera que la tasa de bits de destino generada es igual a la tasa de bits demandada.
Mientras que el estándar no define un procedimiento sobre la forma de optimizar la tasa de distorsión, el esquema general se da en uno de sus apéndices: Por cada bit codificado por el codificador EBCOT, la mejora de la calidad de imagen, definida como error cuadrático medio, puede ser aplicado por un algoritmo de búsqueda fácil de mesa. Esto forma para cada bloque de código un gráfico en el plano, dando una calidad de imagen en toda su longitud de bits. La selección óptima de los puntos de truncamiento, vienen dados por la definición de las pendientes críticas de estas curvas. Este método puede ser visto como una aplicación especial del método de multiplicadores de Lagrange que se utiliza para problemas de optimización con restricciones. Los paquetes pueden ser reordenados casi arbitrariamente en el formato JPEG 2000.
Las imágenes ya codificadas pueden ser enviadas a través de redes con velocidades arbitrarias mediante una orden de codificación de capa progresiva. Por otra parte, los componentes del color se pueden mover de nuevo en el flujo de bits: resoluciones más bajas (correspondientes a los sub-bandas de baja frecuencia) pueden ser enviadas en primer lugar para la imagen de vista previa. Por último, la navegación espacial de las imágenes grandes es posible a través de la teja (tile -> tiling) apropiada y/o selección de la partición. Todas estas operaciones no requieren volver a codificar, excepto las operaciones de copia de bytes.

### Rendimiento

Comparado con el anterior estándar JPEG, JPEG 2000 ofrece una ganancia de compresión típica en el rango de 20%, dependiendo de las características de la imagen. Imágenes de mayor resolución tienden a beneficiarse más de su proceso de compresión. Imágenes buenas para aplicaciones JPEG 2000 son las de gran tamaño y/o con bordes de bajo contraste, por ejemplo, las imágenes médicas.

## Formato de archivo y flujo de código

Al igual que JPEG-1, JPEG 2000 define un formato de archivo y un flujo de código. Si bien este último es el que describe por completo las muestras de la imagen, el primero incluye metainformación adicional como la resolución de la imagen o el espacio de color que se ha utilizado para codificar la imagen. Las imágenes en JPEG 2000 se guardan como archivos de formato JPEG 2000, con la extensión .jp2. La parte 2 de extensión a JPEG 2000, es decir, la norma ISO/IEC15444-2, también enriquece este formato de archivo mediante la inclusión de mecanismos para la animación o la composición de varios flujos de código en una sola imagen. Las imágenes en este formato de archivos extendidos suelen utilizar la extensión .jpx.
No hay extensión estándar para flujo de datos de código debido a que no se ha de considerar que se almacena en archivos en primer lugar, aunque cuando se hace con fines de prueba, la extensión .jpc o .j2k aparecen con frecuencia.

## Aplicaciones de JPEG 2000

Debido al incremento de complejidad de este estándar respecto del anterior, su uso es poco frecuente en aplicaciones en las que el formato JPEG original se desempeña bien. Sin embargo, su uso es adecuado para aplicaciones que requieren mayor calidad de imagen o menor bitrate, o que requieran alguna de sus funcionalidades añadidas. Algunos mercados y aplicaciones destinados a ser servidos por esta norma son los siguientes:
* Aplicaciones de consumo cotidiano tales como dispositivos multimedia: cámaras digitales, PDAs, teléfonos móviles fax, impresoras, escáner...
* Almacenamiento y distribución de grandes repositorios de imágenes.
* Grabación, edición y almacenamiento de video a partir de imágenes fijas en alta definición / cine digital.
* Imágenes médicas, especialmente las especificaciones DICOM para el intercambio de datos médicos.
* Sistemas de información geográfica mediante imágenes satelitales de alta definición.
* JPEG 2000 tiene un diseño común con el formato de compresión de imágenes ICER, que se utiliza para transmitir las imágenes de la misión Mars Exploration Rover.
* La Organización Meteorológica Mundial ha incluido la compresión JPEG 2000 en el nuevo formato de archivos GRIB2. El formato GRIB está diseñado para la distribución mundial de datos meteorológicos. La aplicación de la compresión JPEG 2000 en GRIB2 ha reducido tamaño de los archivos hasta un 80% respecto de la versión anterior.

## Comparación con PNG

Si bien JPEG 2000 admite compresión sin pérdida, no está diseñado para reemplazar el formato PNG, que es uno de los más utilizados en la actualidad para este fin. PNG soporta algunas características, como la transparencia, que no están disponibles en JPEG 2000. Por las cuestiones inherentes a la compresión sin pérdida, de la cual PNG tiene mejor soporte y funcionalidad, éste resulta como una mejor opción si lo deseado es almacenar fielmente y sin pérdidas la imagen original.

## Cuestiones jurídicas

JPEG 2000 no está ampliamente admitido por los navegadores actuales por el peligro que desempeñan las patentes de software en el método de compresión matemático; esta área de matemáticas está empezando a ser muy patentado en general. JPEG 2000 no es por sí mismo una licencia libre, pero las compañías y organizaciones contribuyentes acordaron que las licencias para la primera parte — el corazón del sistema de codificación — pueden ser obtenidas libres de cargo desde todos los contribuidores.
El comité JPEG ha establecido que siempre ha sido un objetivo importante que sus estándares puedan ser implementados acordes con la línea general de no pagar regalías ni licencias. El próximo estándar JPEG 2000 ha sido preparado acorde con esa idea, y el acuerdo alcanzado con otras 20 grandes organizaciones que mantienen muchas patentes en esta área para permitir el uso de su propiedad intelectual en conexión con el estándar sin pagar licencias o regalías. También dice que es posible que otras compañías o particulares puedan reclamar derechos de propiedad intelectual que afecten a implementaciones del estándar, y muchos desarrolladores tienen que realizar sus propias búsquedas e investigaciones en esta área.
Debido a esta declaración, la controversia se mantiene en la comunidad de software sobre la condición jurídica del estándar JPEG 2000; a diferencia de la mayoría de las distribuciones basadas en GNU/Linux en las cuales la licencia libre está incluida.

## Normas relacionadas

Varias partes adicionales del estándar JPEG 2000 existen; Entre ellos, la norma ISO / IEC 15444-2:2000, que define extensiones de JPEG 2000 como el formato de archivo .JPX, un formato de archivo extendido y más espacios de color, ISO / IEC 15444-4:2000, las pruebas de referencia y la norma ISO / IEC 15444-6:2000, con el formato de archivo de imagen compuesto (.JPM), lo que permite la compresión de texto compuesto/gráficos de la imagen.
Extensiones para la transferencia de la imagen segura, JPSEC (ISO / IEC 15444-8), sistemas de corrección de errores mejorada para las aplicaciones inalámbricas, JPWL (ISO / IEC 15444-11) y extensiones para la codificación de las imágenes volumétricas, JP3D (ISO / IEC 15444-10) también están ya disponibles en la ISO.

### Protocolo JPIP

Se publicó en 2005, como ISO / IEC 15444-9 y es un protocolo de navegación en imágenes basadas en JPEG 2000. En este contexto, sólo determinadas regiones con gran potencial de imágenes han de ser transmitidas desde un servidor de imágenes en la solicitud de un cliente, reduciendo así el ancho de banda requerido.

### Motion JPEG 2000

Motion JPEG 2000 se define en la norma ISO / IEC 15444-3 y en la UIT-T T.802. En él se especifica el uso del codec JPEG 2000 para las secuencias de imágenes programadas (secuencias de movimiento), combinado con audio, y compuesto en una presentación global. También se define un formato de archivo, basado en los medios de comunicación de base de archivos ISO, formato (ISO 15444-12). Extensiones de archivos para archivos de vídeo Motion JPEG 2000 son .mj2 y .mjp2 de acuerdo con la norma RFC 3745.
Motion JPEG 2000 (a menudo denominada MJ2 o MJP2) es el principal soporte de cine digital estándar en la actualidad con el apoyo de las Iniciativas de Cine Digital (Digital Cinema Initiatives), un consorcio de la mayoría de los principales estudios y proveedores, para el almacenamiento, distribución y exhibición de películas cinematográficas También se está considerando como un archivo formato digital por la Biblioteca del Congreso. Es un proceso abierto ISO estándar y avanzadas para una actualización MJPEG (o MJ), que se basa en el legado del formato JPEG. A diferencia de los codecs de video comunes, como MPEG-4 , WMV y DivX , MJ2 no emplea la compresión de estructura temporal. En su lugar, cada fotograma es una entidad independiente codificada por una variante con o sin pérdidas de JPEG 2000. Su estructura física no depende del tiempo pedido, pero sí utilizan un perfil independiente para complementar los datos. Para el audio, soporta codificación LPCM, así como diversas variantes de MPEG-4.

### Base para formatos de archivo multimedia ISO

ISO / IEC 15444-12 es una norma idéntica a la ISO / IEC 14496-12 (MPEG-4 Parte 12) y define la base multimedia de formato de archivo .ISO. Por ejemplo, archivos de formato Motion JPEG 2000, MP4 o 3GP también se basan en ella.

### GML JP2: Georreferenciación

El Open Geospatial Consortium (OGC) ha definido una “metadata” (datos sobre datos) para la georreferenciación de las imágenes JPEG 2000 que incorporan XML utilizando el Geography Markup Language (GML). Formato: GML en formato JPEG 2000 para codificación geográfica Imágenes (GMLJP2).
JP2 y JPX son archivos que contienen GMLJP2 por lo que se pueden localizar y mostrar en la posición correcta de la superficie de la tierra con un adecuado Sistema de Información Geográfica (SIG).

## Compatibilidad de aplicaciones
### Aplicaciones

| Programa | Básico | Básico | Avanzado | Avanzado | Licencia |
| Programa | Lectura | Escritura | Lectura | Escritura | Licencia |
| ACDSee | Sí | Sí | | | Privativa |
| Acusoft Pegasus | Sí | Sí | | | Privativa |
| Adobe Photoshop | Sí | Sí | Sí | Sí | Privativa |
| Apple iPhoto | Sí | No | Sí | No | Privativa |
| Apple Preview | Sí | Sí | Sí | | Privativa |
| Blender | Sí | Sí | | | GPL |
| Corel PhotoPaint | Sí | Sí | Sí | Sí | Privativa |
| DBGallery | Sí | No | | No | Privativa |
| DigiKam | Sí | Sí | | | GPL |
| FastStone Image Viewer | Sí | Sí | Sí | Sí | Privativo |
| FastStone MaxView | Sí | No | Sí | No | Privativa |
| Mozilla Firefox | Vía extensión | | | | LGPL |
| GIMP | Sí | No | | No | GPL |
| Gwenview | Sí | Sí | | | GPL |
| ImageMagick | Sí | Sí | No | No | ImageMagick |
| IrfanView | Sí | Parcial | No | No | Privativo |
| KolourPaint | Sí | Sí | | | GPL |
| Mathematica | Sí | Sí | | | Privativa |
| Matlab | Vía Toolbox | Vía Toolbox | Vía Toolbox | Vía Toolbox | Privativa |
| Opera | Via QuickTime | | | | Privativa |
| Paint Shop Pro | Sí | Sí | Sí | Sí | Privativa |
| Pixel Image Editor | Sí | Sí | | | Privativa |
| Safari | Sí | | | | Privativa |
| SilverFast | Sí | Sí | Sí | Sí | Privativa |
| SView 5 | Sí | Sí | | | Privativa |
| XnView | Sí | Sí | Sí | Sí | Privativa |
| Ziproxy | Sí | Sí | No | No | GPL |

### Bibliotecas

| Programa | Básico | Básico | Avanzado | Avanzado | Lenguajes | Licencia |
| Programa | Lectura | Escritura | Lectura | Escritura | Lenguajes | Licencia |
| AccuRad J2K Suite | Sí | Sí | Sí | Sí | C++ | Privativa |
| ffmpeg | En proceso | En proceso | | | C | LGPL |
| GTK (2.14) | Sí | No | | No | C/GTK | LGPL |
| Jasper | Sí | Sí | No | No | C | MIT |
| JJ2000 | Sí | Sí | No | No | Java | Similar a BSD |
| Kakadu | Sí | Sí | Sí | Sí | C++ | Privativa |
| LEADTOOLS | Sí | Sí | Sí | Sí | C, C++, .NET | Privativa |
| OpenJPEG | Sí | Sí | | | C | BSD |