libjpeg-turbo

Screenshot Software:
libjpeg-turbo
Szczegóły programowe:
Wersja: 1.4.90 Aktualizowane
Filmu: 10 Mar 16
Wywoływacz: D. R. Commander
Licencja: Wolny
Popularność: 68

Rating: nan/5 (Total Votes: 0)

libjpeg-turbo jest open source, wieloplatformowy i całkowicie wolne oprogramowanie zaprojektowane tak, aby zapewnić szybki wersję oryginalnego oprogramowania biblioteki libjpeg, specjalnie spreparowany dla procesorów x86 i x86-64, które wykorzystują SIMD ( Pojedyncze Instruction, Multiple Data), takie jak instrukcje SSE2, MMX i neon, aby przyspieszyć bazowego dekompresji i kompresji JPEG.


Niezwykle szybki kodek JPEG

Oprogramowanie jest niezwykle szybki kodek obrazu JPEG, który jest zwykle 2-4x szybsze niż niezmodyfikowanej wersji libjpeg. Projekt został oparty na libjpeg / SIMD projektu stworzonego przez Miyasaka Masaru.


Implementuje API tradycyjnego libjpeg

Ta wersja turbo biblioteki libjpeg realizuje również tradycyjne API libjpeg, jak również proste TurboJPEG API. Oferuje on rozszerzenia przestrzeni kolorów, co pozwala na kompresję z lub rozpakować grubokońcej i 32-bitowe bufory pikseli (XBGR, RGBX, etc.), a także w pełni funkcjonalny interfejs Java.


Ukazuje się jako natywne dla instalatorów DEB i RPM systemów operacyjnych opartych na

Dla wygody użytkownika, program jest rozprowadzany jako rodzimych instalatorów dla systemów operacyjnych DEB i RPM oparte, takich jak Debian, Ubuntu, Linux Mint, Fedora, CentOS, Red Hat Enterprise Linux, openSUSE, Mageia itp, wspierając zarówno 64 i 32-bitowe platformy sprzętowe.


Pierwsze kroki z libjpeg-turbo

Projekt libjpeg-turbo można łatwo zainstalować z głównych repozytoriów oprogramowania o dystrybucji GNU / Linux. To będzie również instalowany automatycznie wraz z oprogramowaniem, które są niezbędne.

Aby zainstalować go ręcznie przy użyciu pakietu źródłowego, w przypadku, gdy chcesz zoptymalizować go dla architektury sprzętu / systemu operacyjnego, należy pobrać i zapisać najnowszą archiwum z Softoware, rozpakować jego zawartość za pomocą narzędzia Menedżer archiwum, otwórz aplikację Terminal i przejdź do lokalizacji wyodrębnionego pliku archiwum (np cd / home / softoware / libjpeg-turbo).

Następnie uruchom & lsquo; ./ configure && make & rsquo; polecenie, aby skonfigurować i skompilować program, a następnie & lsquo; sudo make install & rsquo; commad go zainstalować systemu szeroki i udostępnić go dla wszystkich aplikacji

Co nowego w tej wersji.

    < li> Poprawiono Problem kompilacji na platformach OS X PowerPC (md5cmp nie udało się zbudować, ponieważ OS X nie zapewnia le32toh () i htole32 () funkcji.).
  • non-SIMD RGB565 kolorowy kod konwersji nie działa poprawnie na dużych maszynach endian. Błąd ten został usunięty.
  • Naprawiono problem, w tjPlaneSizeYUV (), zgodnie z którą to błędnie powrotu 1 zamiast -1 jeśli ComponentId było & gt; 0 i subsamp był TJSAMP_GRAY.
  • Naprawiono problem, w tjBufSizeYUV2 () wherby byłoby błędnie return 0 zamiast -1 jeśli szerokość była & lt; 1.
  • Huffman koder używa teraz CLZ i BSR instrukcje nieco licząc na platformach ARM64.
  • Metoda close () w klasach TJCompressor i TJDecompressor Java jest teraz idempotent. Wcześniej ta metoda będzie wywołać funkcję natywną tjDestroy (), nawet jeśli instancja TurboJPEG zostały już zniszczone. To spowodowało wyjątek zostać wyrzucony podczas finalizacji, jeśli metoda close () została już wywołana. Wyjątek został złapany, ale to wciąż było to kosztowna operacja.
  • TurboJPEG API wcześniej wygenerowany błąd (& quot; Nie można określić typ subsampling dla JPEG & quot;) podczas próby dekompresji obrazów w skali szarości w formacie JPEG, które zostały skompresowane przy współczynniku próbkowania innej niż 1 (na przykład z 'cjpeg -grayscale - próbka 2x2 "). Subsampling technicznie nie ma sensu ze skali szarości JPEG, a więc czynniki, poziome i pionowe próbkowania dla takich obrazów są ignorowane przez dekompresor. Jednak TurboJPEG API był ewidentnie zbyt sztywne i spodziewałem współczynniki próbkowania jest równa 1, zanim będzie traktowana jako obraz w skali szarości JPEG.
  • cjpeg, djpeg i jpegtran przyjmują argument -version, który będzie wydrukować wersję biblioteki i kończy działanie.
  • W nawiązaniu do 1.4 beta1 [15], kolejny niezwykle rzadka okoliczność została odkryta pod którym lokalny bufor Huffman kodera może być przekroczony, gdy buforowane menedżer docelowy jest używany, a blok bardzo wysokiej częstotliwości (w zasadzie dane śmieci obrazu) jest są kodowane. Nawet jeśli bufor lokalny Huffman została zwiększona z 128 bajtów do 136 bajtów, aby zająć się poprzedniego wydania, nowa emisja spowodowana nawet większy bufor zostać przekroczony. Dalsza analiza wykazuje, że w najgorszym przypadku bezwzględnej (takie jak ustawienie na przemian współczynników AC do 32767 i -32768 w kolejności skanowania JPEG), koder Huffmana może produkować bloki zakodowane, że podejście podwójnej wielkości niekodowanej bloków. W ten sposób, bufor lokalny Huffmana zwiększono do 256 bajtów, które powinny zapobiegać ponownemu taki problem występujący w przyszłości.
  • Nowa tjPlaneSizeYUV (), tjPlaneWidth () i funkcje tjPlaneHeight () nie były faktycznie użyteczny na każdej platformie z wyjątkiem OS X i Windows, ponieważ te funkcje nie zostały uwzględnione w libturbojpeg mapFile. Błąd ten został usunięty.
  • Przywrócono JPP () JMETHOD () i daleko makr w plikach nagłówkowych libjpeg-turbo. W JPP () i JMETHOD () makra zostały pierwotnie wprowadzone w libjpeg jako sposób wspierania kompilatory non-ANSI, że brakowało wsparcia dla parametrów prototypowych. libjpeg-turbo nie wspiera takich kompilatorów, ale niektóre pakiety oprogramowania nadal korzystać z makr, aby zdefiniować własne prototypy. Podobnie libjpeg-turbo nie wspiera MS-DOS i innych platform, które mają dużo symboli, ale niektóre pakiety oprogramowania nadal używać makra daleko. Całkiem dobry argument można przyjąć, że jest to złe praktyki w ramach programu, o którym mowa, ale ponieważ to wpływa na więcej niż jeden pakiet, to po prostu łatwiej go naprawić tutaj.
  • Naprawiono problemy, które zostały uniemożliwiające ARM 64-bitowego kodu SIMD z kompilacji dla iOS i obejmowała ARMv8 architekturę we wszystkich plików binarnych zainstalowanych przez & quot; oficjalna & quot; libjpeg-turbo SDK dla OS X.

Co nowego w wersji 1.4.2:

  • Poprawiono Problem kompilacji na platformach OS X PowerPC ( md5cmp nie udało się zbudować, ponieważ OS X nie zapewnia le32toh () i htole32 () funkcji.).
  • non-SIMD RGB565 kolorowy kod konwersji nie działa poprawnie na dużych maszynach endian. Błąd ten został usunięty.
  • Naprawiono problem, w tjPlaneSizeYUV (), zgodnie z którą to błędnie powrotu 1 zamiast -1 jeśli ComponentId było & gt; 0 i subsamp był TJSAMP_GRAY.
  • Naprawiono problem, w tjBufSizeYUV2 () wherby byłoby błędnie return 0 zamiast -1 jeśli szerokość była & lt; 1.
  • Huffman koder używa teraz CLZ i BSR instrukcje nieco licząc na platformach ARM64.
  • Metoda close () w klasach TJCompressor i TJDecompressor Java jest teraz idempotent. Wcześniej ta metoda będzie wywołać funkcję natywną tjDestroy (), nawet jeśli instancja TurboJPEG zostały już zniszczone. To spowodowało wyjątek zostać wyrzucony podczas finalizacji, jeśli metoda close () została już wywołana. Wyjątek został złapany, ale to wciąż było to kosztowna operacja.
  • TurboJPEG API wcześniej wygenerowany błąd (& quot; Nie można określić typ subsampling dla JPEG & quot;) podczas próby dekompresji obrazów w skali szarości w formacie JPEG, które zostały skompresowane przy współczynniku próbkowania innej niż 1 (na przykład z 'cjpeg -grayscale - próbka 2x2 "). Subsampling technicznie nie ma sensu ze skali szarości JPEG, a więc czynniki, poziome i pionowe próbkowania dla takich obrazów są ignorowane przez dekompresor. Jednak TurboJPEG API był ewidentnie zbyt sztywne i spodziewałem współczynniki próbkowania jest równa 1, zanim będzie traktowana jako obraz w skali szarości JPEG.
  • cjpeg, djpeg i jpegtran przyjmują argument -version, który będzie wydrukować wersję biblioteki i kończy działanie.
  • W nawiązaniu do 1.4 beta1 [15], kolejny niezwykle rzadka okoliczność została odkryta pod którym lokalny bufor Huffman kodera może być przekroczony, gdy buforowane menedżer docelowy jest używany, a blok bardzo wysokiej częstotliwości (w zasadzie dane śmieci obrazu) jest są kodowane. Nawet jeśli bufor lokalny Huffman została zwiększona z 128 bajtów do 136 bajtów, aby zająć się poprzedniego wydania, nowa emisja spowodowana nawet większy bufor zostać przekroczony. Dalsza analiza wykazuje, że w najgorszym przypadku bezwzględnej (takie jak ustawienie na przemian współczynników AC do 32767 i -32768 w kolejności skanowania JPEG), koder Huffmana może produkować bloki zakodowane, że podejście podwójnej wielkości niekodowanej bloków. W ten sposób, bufor lokalny Huffmana zwiększono do 256 bajtów, które powinny zapobiegać ponownemu taki problem występujący w przyszłości.
  • Nowa tjPlaneSizeYUV (), tjPlaneWidth () i funkcje tjPlaneHeight () nie były faktycznie użyteczny na każdej platformie z wyjątkiem OS X i Windows, ponieważ te funkcje nie zostały uwzględnione w libturbojpeg mapFile. Błąd ten został usunięty.
  • Przywrócono JPP () JMETHOD () i daleko makr w plikach nagłówkowych libjpeg-turbo. W JPP () i JMETHOD () makra zostały pierwotnie wprowadzone w libjpeg jako sposób wspierania kompilatory non-ANSI, że brakowało wsparcia dla parametrów prototypowych. libjpeg-turbo nie wspiera takich kompilatorów, ale niektóre pakiety oprogramowania nadal korzystać z makr, aby zdefiniować własne prototypy. Podobnie libjpeg-turbo nie wspiera MS-DOS i innych platform, które mają dużo symboli, ale niektóre pakiety oprogramowania nadal używać makra daleko. Całkiem dobry argument można przyjąć, że jest to złe praktyki w ramach programu, o którym mowa, ale ponieważ to wpływa na więcej niż jeden pakiet, to po prostu łatwiej go naprawić tutaj.
  • Naprawiono problemy, które zostały uniemożliwiające ARM 64-bitowego kodu SIMD z kompilacji dla iOS i obejmowała ARMv8 architekturę we wszystkich plików binarnych zainstalowanych przez & quot; oficjalna & quot; libjpeg-turbo SDK dla OS X.

Co nowego w wersji 1.4.0:

  • Poprawiono Problem kompilacji na platformach OS X PowerPC ( md5cmp nie udało się zbudować, ponieważ OS X nie zapewnia le32toh () i htole32 () funkcji.).
  • non-SIMD RGB565 kolorowy kod konwersji nie działa poprawnie na dużych maszynach endian. Błąd ten został usunięty.
  • Naprawiono problem, w tjPlaneSizeYUV (), zgodnie z którą to błędnie powrotu 1 zamiast -1 jeśli ComponentId było & gt; 0 i subsamp był TJSAMP_GRAY.
  • Naprawiono problem, w tjBufSizeYUV2 () wherby byłoby błędnie return 0 zamiast -1 jeśli szerokość była & lt; 1.
  • Huffman koder używa teraz CLZ i BSR instrukcje nieco licząc na platformach ARM64.
  • Metoda close () w klasach TJCompressor i TJDecompressor Java jest teraz idempotent. Wcześniej ta metoda będzie wywołać funkcję natywną tjDestroy (), nawet jeśli instancja TurboJPEG zostały już zniszczone. To spowodowało wyjątek zostać wyrzucony podczas finalizacji, jeśli metoda close () została już wywołana. Wyjątek został złapany, ale to wciąż było to kosztowna operacja.
  • TurboJPEG API wcześniej wygenerowany błąd (& quot; Nie można określić typ subsampling dla JPEG & quot;) podczas próby dekompresji obrazów w skali szarości w formacie JPEG, które zostały skompresowane przy współczynniku próbkowania innej niż 1 (na przykład z 'cjpeg -grayscale - próbka 2x2 "). Subsampling technicznie nie ma sensu ze skali szarości JPEG, a więc czynniki, poziome i pionowe próbkowania dla takich obrazów są ignorowane przez dekompresor. Jednak TurboJPEG API był ewidentnie zbyt sztywne i spodziewałem współczynniki próbkowania jest równa 1, zanim będzie traktowana jako obraz w skali szarości JPEG.
  • cjpeg, djpeg i jpegtran przyjmują argument -version, który będzie wydrukować wersję biblioteki i kończy działanie.
  • W nawiązaniu do 1.4 beta1 [15], kolejny niezwykle rzadka okoliczność została odkryta pod którym lokalny bufor Huffman kodera może być przekroczony, gdy buforowane menedżer docelowy jest używany, a blok bardzo wysokiej częstotliwości (w zasadzie dane śmieci obrazu) jest są kodowane. Nawet jeśli bufor lokalny Huffman została zwiększona z 128 bajtów do 136 bajtów, aby zająć się poprzedniego wydania, nowa emisja spowodowana nawet większy bufor zostać przekroczony. Dalsza analiza wykazuje, że w najgorszym przypadku bezwzględnej (takie jak ustawienie na przemian współczynników AC do 32767 i -32768 w kolejności skanowania JPEG), koder Huffmana może produkować bloki zakodowane, że podejście podwójnej wielkości niekodowanej bloków. W ten sposób, bufor lokalny Huffmana zwiększono do 256 bajtów, które powinny zapobiegać ponownemu taki problem występujący w przyszłości.
  • Nowa tjPlaneSizeYUV (), tjPlaneWidth () i funkcje tjPlaneHeight () nie były faktycznie użyteczny na każdej platformie z wyjątkiem OS X i Windows, ponieważ te funkcje nie zostały uwzględnione w libturbojpeg mapFile. Błąd ten został usunięty.
  • Przywrócono JPP () JMETHOD () i daleko makr w plikach nagłówkowych libjpeg-turbo. W JPP () i JMETHOD () makra zostały pierwotnie wprowadzone w libjpeg jako sposób wspierania kompilatory non-ANSI, że brakowało wsparcia dla parametrów prototypowych. libjpeg-turbo nie wspiera takich kompilatorów, ale niektóre pakiety oprogramowania nadal korzystać z makr, aby zdefiniować własne prototypy. Podobnie libjpeg-turbo nie wspiera MS-DOS i innych platform, które mają dużo symboli, ale niektóre pakiety oprogramowania nadal używać makra daleko. Całkiem dobry argument można przyjąć, że jest to złe praktyki w ramach programu, o którym mowa, ale ponieważ to wpływa na więcej niż jeden pakiet, to po prostu łatwiej go naprawić tutaj.
  • Naprawiono problemy, które zostały uniemożliwiające ARM 64-bitowego kodu SIMD z kompilacji dla iOS i obejmowała ARMv8 architekturę we wszystkich plików binarnych zainstalowanych przez & quot; oficjalna & quot; libjpeg-turbo SDK dla OS X.

Co nowego w wersji 1.3.0:

  • [1] 'make test "działa teraz poprawnie na FreeBSD, a to nie wymaga już wykonywalny md5sum być obecny na innych platformach UN * x.
  • [2] Regenerowane system opakowań: - Aby uniknąć konfliktu z pakietów libjpeg-turbo dostawcy dostarczone oficjalne RPM i DEB dla libjpeg-turbo zostały przemianowane na & quot; libjpeg-turbo-oficjalna & quot ;. - Biblioteki TurboJPEG znajdują się teraz w katalogu / opt / libjpeg-turbo w oficjalnych pakietów Linux i Mac, aby uniknąć konfliktu z pakietów dostarczanych przez dostawców, a także usprawnić system pakowania. - Pakiety wydania są teraz tworzone w strukturze katalogów zdefiniowane przez zmienne Konfiguracja: & quot; prefix & quot ;, & quot; bindir & quot ;, & quot; LIBDIR & quot ;, itd. (Un * x) lub przez zmienną CMAKE_INSTALL_PREFIX (Windows). Wyjątkiem jest że dokumentacja są zawsze umieszczone pod domyślnym katalogu z dokumentacją systemu na UN * x i systemów Mac i Windows, The TurboJPEG DLL znajduje się zawsze w katalogu systemowym Windows. - Aby uniknąć nieporozumień, oficjalne pakiety libjpeg-turbo na platformach Linux / Unix (oprócz Mac) zawsze zainstalować biblioteki 32-bitowe w / opt / libjpeg-turbo / lib32 i biblioteki 64-bitowe w / opt / libjpeg- turbo / lib64. - Naprawiono błąd, przy czym w niektórych przypadkach, pliki wykonywalne libjpeg-turbo na systemach UN * X nie były prawidłowo łącząc ze współużytkowanych bibliotek zainstalowanych w tym samym opakowaniu. - Naprawiono błąd, w którym budowanie & quot; instalator & quot; kierować na Windows przy WITH_JAVA = 1 nie powiedzie się, jeśli JAR TurboJPEG nie zostało wcześniej zbudowany. - Budowa & quot; zainstalować & quot; target na Windows teraz instaluje pliki w tych samych miejscach, że instalator nie.
  • [3] Poprawiono Huffman enkodera błąd, który uniemożliwiał I / O zawieszenie nie będzie działał prawidłowo.

Co nowego w wersji 1.2.0:

  • budowa Wydanie napotkanych podczas korzystania yasm na systemach Unix została ustalona.
  • out-of-granice przeczytać w kodzie SSE2 SIMD została ustalona.
  • Nowe przedłużacze stałe, kolory, które pozwalają aplikacjom określić, że niewykorzystane bajtów w buforze RGB 4-bajtowego należy traktować jako kanał alfa podczas dekompresji dodano.
  • problem regresji napotkał przy budowie Diabeł z libjpeg-turbo została ustalona.
  • Wsparcie iOS została dodana do SDK libjpeg-turbo for Mac.

Co nowego w wersji 1.1 Beta 1:

  • libjpeg-turbo może być zbudowany naśladować libjpeg v7 lub V8B ​​API / ABI.
  • System kompilacji systemu Windows używa teraz CUpewnij.
  • TurboJPEG / OSS mogą teraz kompresji z / dekompresji do skali szarości i konwertowania bitmap RGB lub YUV obrazów JPEG płaskiej wyjście.
  • jpgtest może być użyty do testowania wydajności dekompresję z istniejących obrazów JPEG.
  • dodano Opcjonalnie arytmetyczna kodowania i dekodowania wsparcia.
  • Dodatkowe zabezpieczenia dodano wobec nieprawidłowych kodów Huffmana.

Co nowego w wersji 1.0.0.

  • Dalsza budowa ulepszeń na FreeBSD
  • Pakiety Unix / Linux to teraz libjpeg czasu wykonywania programów (cjpeg, etc.) i strony podręcznika.
  • Nie jest to pakiet dodatkowego 32-bitowy dla amd64 Debianie.
  • Wsparcie Cygwin.
  • Pełne wsparcie dla budynku / testów na architekturach innych niż x86.
  • 64-bitowy OS X binarne są obecnie wstecznie kompatybilny z OS X 10.4.
  • Istnieją różne Linux szczypie opakowania.

Co nowego w wersji 0.0.91:

  • Dodano dokumentację pakietów .deb

  • kwestie korupcyjne
  • Poprawiono danych podczas dekompresji dużych obrazów JPEG i / lub za pomocą buforowanego I / O z dekompresor libjpeg-turbo

Inne programy z deweloperem D. R. Commander

VirtualGL
VirtualGL

7 Mar 16

TurboVNC
TurboVNC

3 Jun 15

Komentarze do libjpeg-turbo

Komentarze nie znaleziono
Dodaj komentarz
Włącz zdjęć!