Exportado desde http://code.google.com/p/picojpeg. El autor original es Rich Geldreich en richgel99 en gmail.com .
picojpeg es un descompresor JPEG de dominio público escrito en C simple en un único archivo fuente picojpeg.c y un único encabezado picojpeg.h. Tiene varias propiedades bastante únicas que lo hacen útil en pequeños dispositivos integrados de 8/16 bits o en entornos con mucha memoria limitada:
picojpeg tiene varios inconvenientes y problemas conocidos en comparación con otras implementaciones:
Se ha compilado y ejecutado con éxito una variante cercana de picojpeg en el microcontrolador PIC18F4610 de Microchip utilizando el compilador integrado BoostC de SourceBoost Technologies. (Envíe un correo electrónico si desea ver esta variante). picojpeg.c también se ha utilizado en las CPU MSP430 y ARM Cortex-M4. (Para ver un ejemplo de uso, consulte Uso de la biblioteca picojpeg en un PIC con módulo LCD ILI9341 320x240).
La distribución fuente incluye un proyecto VS2005 de muestra y ejecutables de línea de comandos Win32/Win64 precompilados que convierten archivos JPG a TGA usando picojpeg para la descompresión. El módulo stb_image.c de dominio público de Sean Barrett se utiliza para escribir archivos TGA.
picojpeg se basó originalmente en mi clase C++ descompresor jpgd, que (en las CPU modernas) es más rápido y más capaz que picojpeg.c pero usa mucha más memoria y asume que los int son de 32 bits.
Aquí está picojpeg funcionando en una CPU 6809 (una Tandy Color Computer 3), compilado usando gcc6809: picojpeg: Decodificando Lena en una Tandy Color Computer 3.
v1.1 - 23/03/2020: Se solucionó un problema sin firmar/firmado en la macro, se solucionó un problema de desbordamiento en el decodificador que impedía la decodificación de archivos JPEG muy grandes
v1.1 - 19 de febrero de 2013: licencia doble como dominio público y (donde el dominio público no es aceptable) la licencia MIT. Por favor, póngase en contacto conmigo para obtener la fuente.
v1.1 - 9 de febrero de 2013: Se optimizaron los bucles de fila/col de IDCT para evitar la transformación inversa completa cuando solo el componente de CC es distinto de cero, se agregó el modo "reducir" para una decodificación rápida de 1/8 de resolución, mejor manejo de errores. Se agregó soporte para factores de submuestreo de croma H2V1/H1V2, se transfirió jpg2tga.cpp a jpg2jpg.c (por lo que ahora todos los módulos están escritos en C simple), se agregó código para compare la salida decodificada de picojpeg con stb_image'c para prueba/verificación.
v1.0 - 10 de noviembre de 2010: lanzamiento inicial. Derivado de la versión original que se probó en una CPU de la serie PIC18F.
Gracias a Daniel Swenson [email protected] por contribuir al desarrollo de picojpeg y a Chris Phoenix [email protected] por sus parches para MSP430.
Si tiene alguna pregunta o problema con este módulo, comuníquese con Rich Geldreich en richgel99 en gmail.com . Aquí está mi página de Twitter.