libjpeg-turbo, JPEG görüntülerin kodlanması ve kodunun çözülmesi için bir codec bileşeni

libjpeg turbo

libjpeg-turbo başlangıçta libjpeg v6b'nin MMX hızlandırmalı bir türevi olan libjpeg/SIMD'ye dayanıyordu.

Linux'ta, codec'ler söz konusu olduğunda, çoğu kullanıcı genellikle bu konuda endişelenmez, çünkü birçok dağıtımda bu sorun genellikle varsayılan olarak hedefe dahil edilerek çözülür, uygulamaları görüntülemeye veya düzenlemeye ek olarak, Ayrıca tahıllarına da katkıda bulunurlar. bazı ekstralar dahil olmak üzere kum.

Ancak bir kullanıcı, örneğin düzenleme görevleri veya basit eğlence için belirli yönlerde performansı artırmak istediğinde ne olur? Bu bölümde, tüm kullanıcılar yer almıyor, ancak ilgilenenler için her formatın sunduğu avantaj ve dezavantajları araştırmaya yöneliyorlar.

Ve bugün bahsedeceğimiz codec'in devreye girdiği yer burasıdır ve bu, JPEG resim formatının en popüler formatlardan biri olduğudur, ancak bu onun en iyisi olduğu anlamına gelmez, çünkü başka formatlar da vardır. buna göre birçok avantaj sunuyor.

libjpeg-turbo, JPEG'in bazı eksikliklerine bir çözümdür GitHub depolarında belirtildiği gibi diğer formatlara karşı:

libjpeg-turbo, x86, x86-64, Arm, PowerPC ve MIPS sistemlerinde karşılaştırmalı JPEG sıkıştırma ve sıkıştırmayı açmanın yanı sıra x86, x86-64 ve arm üzerinde aşamalı JPEG sıkıştırmayı hızlandırmak için SIMD yönergelerini kullanan bir JPEG görüntü codec bileşenidir. Bu tür sistemlerde, libjpeg-turbo genellikle libjpeg'den 2-6 kat daha hızlıdır, diğer her şey eşittir. Diğer sistem türlerinde libjpeg-turbo, yüksek düzeyde optimize edilmiş Huffman kodlama yordamları sayesinde libjpeg'den önemli ölçüde daha iyi performans gösterebilir. Birçok durumda, libjpeg-turbo'nun performansı tescilli yüksek hızlı JPEG codec'lerinin performansına rakip olur.

libjpeg-turbo, hem geleneksel libjpeg API'sini hem de daha az güçlü ancak daha basit TurboJPEG API'sini uygular. libjpeg-turbo ayrıca 32-bit ve big-endian piksel arabelleklerine (RGBX, XBGR, vb.) sıkıştırmasına/açmasına izin veren renk alanı uzantılarının yanı sıra tam özellikli bir Java arabirimine de sahiptir.

libjpeg-turbo klasik libjpeg kitaplığının API/ABI uyumlu bir çatalıdır, amacı en hızlı kodlama ve kod çözme hızını sağlamaktır. Standart libjpeg API'ye ek olarak, kitaplık kendi TurboJPEG API'sini ve görüntülerin 32 bit piksel arabelleklerine (RGBX, XBGR) sıkıştırılmasına veya bunlardan çözülmesine olanak tanıyan renkli işleme modellerine sahip bir dizi uzantı sağlar.

Diğer mimarilerde, hızlanma o kadar önemli değil, ancak optimize edilmiş Huffman kodlama fonksiyonlarının kullanımı sayesinde, kütüphane hala fark edilir derecede daha hızlı libjpeg'den daha iyidir ve performans açısından yüksek kaliteli tescilli JPEG codec bileşenlerine yaklaşır.

Şunu belirtmekte fayda var ki son zamanlardaibjpeg-turbo yeni şubesi 3.0'ı aldı ve başlıca yenilikler bu yeni sürümden sıyrılın, şunlardan bahsedilir:

  • 4:1:1 renk alt örnekleme desteği eklendi, 4:1:1 alt örneklenmiş JPEG görüntülerini kalite kaybı olmadan dönüştürmenize, kırpmanıza ve döndürmenize, aynı zamanda bunları açıp YUV renk modeline dönüştürmenize olanak tanıyor.
  • Optimal Huffman tablolarının önemli ölçüde hızlandırılmış hesaplaması. Küçük resimler (256×256) için, değişiklik sıkıştırma süresinin iki kata kadar azaltılmasına izin verdi.
  • Kanal başına 12 bit renk gösterimi ile JPEG görüntüler için aritmetik entropi kodlaması uygulama yeteneği eklendi.
  • TurboJPEG API, mevcut sınırlamaları kaldırmak ve genişletilebilirliği artırmak için önemli ölçüde yeniden tasarlandı. Örneğin, tüm C işlevlerinin önüne artık "tj3" eki eklenmiştir.
  • Birçok bayrak ve mod, işlev bağımsız değişkenlerinden genel API parametrelerine dönüştürülmüştür.
  • Kayıplı ve kayıpsız modlarda kanal başına 12 ve 16 bit renkli görüntüler için destek.
  • Kanal başına 8, 12 ve 16 bit renkli görüntüler için kullanılabilen kayıpsız JPEG dosya modu eklendi. Yeni jpeg_enable_lossless() işlevi ve "-lossless" komut satırı seçeneği eklendi.
  • Java TurboJPEG API'sinde kullanımdan kaldırılan alanlar, oluşturucular ve yöntemler kaldırıldı.

Son olarak, libjpeg-turbo'nun yazarının gelecekte proje üzerindeki çalışmayı yalnızca hata düzeltmeleri içeren güncellemeler yayınlamakla sınırlamayı planladığı belirtilmelidir. Yeni sürüm 3.1'in geliştirilmesi, proje için finansman sağlanana kadar başlamayacaktır.

Için kodla ilgileniyor BSD ve zlib tarafından değiştirilmiş üç BSD IJG tipi lisans altında dağıtıldığını ve Linux, macOS ve Windows için hazırlanmış ikili dosyaların sunulduğunu bilmelisiniz. Ayrıntıları kontrol etmenin yanı sıra ikili dosyaları şuradan alabilirsiniz: aşağıdaki bağlantı.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.