libjpeg-turbo pada awalnya didasarkan pada libjpeg/SIMD , turunan yang dipercepat MMX dari libjpeg v6b
Di Linux, jika menyangkut codec, sebagian besar pengguna biasanya tidak mengkhawatirkannya, karena di banyak distribusi masalah ini biasanya sudah diselesaikan dengan memasukkannya ke dalam target secara default, selain melihat atau mengedit aplikasi, Mereka juga menyumbangkan biji-bijian mereka. pasir termasuk beberapa tambahan.
Tetapi apa yang terjadi ketika pengguna ingin meningkatkan kinerja dalam aspek-aspek tertentu, katakanlah untuk tugas pengeditan atau untuk hiburan sederhana. Pada bagian ini, tidak semua pengguna terlibat, tetapi bagi mereka yang tertarik, mereka cenderung menyelidiki kelebihan dan kekurangan yang ditawarkan setiap format.
Dan di sinilah codec yang akan kita bicarakan hari ini masuk dan karena itu format gambar JPEG adalah salah satu yang paling populer, tetapi ini tidak berarti itu yang terbaik, karena ada format lain yang menawarkan banyak keuntungan lebih dari ini.
libjpeg-turbo adalah solusi untuk beberapa kekurangan JPEG dibandingkan dengan format lain, seperti yang disebutkan di repositori GitHub-nya:
libjpeg-turbo adalah codec gambar JPEG yang menggunakan instruksi SIMD untuk mempercepat kompresi dan dekompresi JPEG benchmark pada sistem x86, x86-64, Arm, PowerPC, dan MIPS, serta kompresi JPEG progresif pada x86, x86-64, dan arm . Pada sistem seperti itu, libjpeg-turbo umumnya 2-6 kali lebih cepat daripada libjpeg, semuanya sama. Pada jenis sistem lain, libjpeg-turbo masih dapat mengungguli libjpeg dengan jumlah yang signifikan, berdasarkan rutinitas pengkodean Huffman yang sangat optimal. Dalam banyak kasus, kinerja libjpeg-turbo menyaingi codec JPEG berkecepatan tinggi milik sendiri.
libjpeg-turbo mengimplementasikan API libjpeg tradisional dan API TurboJPEG yang kurang bertenaga namun lebih sederhana. libjpeg-turbo juga menampilkan ekstensi ruang warna yang memungkinkannya untuk mengompres/mendekompresi buffer piksel 32-bit dan big-endian (RGBX, XBGR, dll.), serta antarmuka Java berfitur lengkap.
Libjpeg-turbo adalah fork yang sesuai dengan API/ABI dari pustaka libjpeg klasik , yang dirancang untuk memberikan kecepatan encoding dan decoding tercepat. Selain API libjpeg standar, pustaka ini menyediakan API TurboJPEG sendiri dan sejumlah ekstensi dengan model rendering warna yang memungkinkan gambar dikompresi ke dalam buffer piksel 32-bit (RGBX, XBGR) atau didekode.
Pada arsitektur lain, akselerasinya tidak begitu signifikan, tetapi karena penggunaan fungsi pengkodean Huffman yang dioptimalkan, pustaka ini masih jauh lebih cepat daripada libjpeg dan mendekati codec JPEG berpemilik berkualitas tinggi dalam hal kinerja.
Perlu disebutkan bahwa ibjpeg-turbo baru-baru ini menerima cabang 3.0 terbarunya , dan inovasi utama yang disorot dalam versi baru ini adalah sebagai berikut:
- Dukungan tambahan untuk subsampling warna 4:1:1, memungkinkan Anda mengonversi, memotong, dan memutar gambar JPEG subsampling 4:1:1 tanpa kehilangan kualitas, serta mendekompresi dan mengonversinya menjadi model warna YUV.
- Perhitungan yang dipercepat secara signifikan dari tabel Huffman yang optimal. Untuk gambar kecil (256×256), perubahan memungkinkan waktu kompresi dikurangi hingga dua kali.
- Menambahkan kemampuan untuk menerapkan pengkodean entropi aritmatika untuk gambar JPEG dengan representasi warna 12-bit-per-saluran.
- API TurboJPEG telah didesain ulang secara signifikan untuk menghapus batasan yang ada dan meningkatkan ekstensibilitas. Misalnya, semua fungsi C sekarang diawali dengan "tj3".
- Banyak flag dan mode telah dikonversi dari argumen fungsi ke parameter API umum.
- Dukungan untuk gambar dengan 12 dan 16 bit warna per saluran dalam mode lossy dan lossless.
- Mode file JPEG lossless telah ditambahkan, yang tersedia untuk gambar dengan 8, 12, dan 16 bit warna per saluran. Menambahkan fungsi baru jpeg_enable_lossless() dan opsi baris perintah “-lossless”.
- Menghapus kolom, konstruktor, dan metode yang tidak digunakan lagi di Java TurboJPEG API.
Terakhir, harus disebutkan bahwa di masa mendatang, penulis libjpeg-turbo bermaksud untuk membatasi pengerjaan proyek hanya untuk merilis pembaruan dengan perbaikan bug. Pengembangan versi baru 3.1 tidak akan dimulai sampai dana untuk proyek diperoleh.
Bagi yang tertarik dengan kode sumbernya , kode tersebut didistribusikan di bawah tiga lisensi mirip BSD: IJG, yang dimodifikasi oleh BSD, dan zlib. File biner tersedia untuk Linux, macOS, dan Windows. Anda dapat menemukan detail lebih lanjut dan mengunduh file biner dari tautan berikut.