libjpeg-turbo, codec untuk pengekodan dan penyahkodan imej JPEG

libjpeg-turbo

libjpeg-turbo pada asalnya berdasarkan libjpeg/SIMD , terbitan dipercepatkan MMX bagi libjpeg v6b

Di Linux, apabila ia berkaitan dengan codec, kebanyakan pengguna biasanya tidak bimbang mengenainya, kerana dalam banyak pengedaran, isu ini biasanya sudah diselesaikan dengan dimasukkan ke dalam sasaran secara lalai, sebagai tambahan kepada melihat atau mengedit aplikasi, Mereka juga menyumbang butiran mereka pasir termasuk beberapa tambahan.

Tetapi apa yang berlaku apabila pengguna ingin meningkatkan prestasi dalam aspek tertentu, katakan untuk tugasan penyuntingan atau untuk masa lapang yang ringkas. Dalam bahagian ini, tidak semua pengguna terlibat, tetapi bagi mereka yang berminat, mereka cenderung untuk menyiasat kelebihan dan kekurangan yang ditawarkan oleh setiap format.

Dan di sinilah codec yang akan kita bincangkan hari ini masuk dan oleh itu format imej JPEG adalah salah satu yang paling popular, tetapi ini tidak bermakna ia adalah yang terbaik, kerana terdapat format lain yang menawarkan banyak kelebihan berbanding ini.

libjpeg-turbo ialah penyelesaian kepada beberapa kekurangan JPEG berbanding format lain, seperti yang dinyatakan dalam repositori GitHubnya:

libjpeg-turbo ialah codec imej JPEG yang menggunakan arahan SIMD untuk mempercepatkan pemampatan dan penyahmampatan JPEG penanda aras pada sistem x86, x86-64, Arm, PowerPC dan MIPS, serta pemampatan JPEG progresif pada x86, x86-64 dan lengan . Pada sistem sedemikian, libjpeg-turbo biasanya 2-6 kali lebih cepat daripada libjpeg, semuanya sama. Pada jenis sistem lain, libjpeg-turbo masih boleh mengatasi libjpeg dengan jumlah yang besar, berdasarkan rutin pengekodan Huffman yang sangat dioptimumkan. Dalam banyak kes, prestasi libjpeg-turbo menyaingi codec JPEG berkelajuan tinggi proprietari.

libjpeg-turbo melaksanakan kedua-dua API libjpeg tradisional dan API TurboJPEG yang kurang berkuasa tetapi lebih ringkas. libjpeg-turbo juga menampilkan sambungan ruang warna yang membolehkannya memampatkan/menyahmampat kepada penampan piksel 32-bit dan big-endian (RGBX, XBGR, dll.), serta antara muka Java berciri penuh.

Libjpeg-turbo ialah cabang yang mematuhi API/ABI bagi pustaka libjpeg klasik , yang direka untuk menyediakan kelajuan pengekodan dan penyahkodan terpantas. Selain API libjpeg standard, pustaka ini menyediakan API TurboJPEGnya sendiri dan beberapa sambungan dengan model pemaparan warna yang membolehkan imej dimampatkan menjadi penimbal piksel 32-bit (RGBX, XBGR) atau dinyahkod.

Pada seni bina lain, pecutan tidak begitu ketara, tetapi disebabkan oleh penggunaan fungsi pengekodan Huffman yang dioptimumkan, pustaka ini masih ketara lebih pantas daripada libjpeg dan menghampiri codec JPEG proprietari berkualiti tinggi dari segi prestasi.

Perlu dinyatakan bahawa ibjpeg-turbo baru-baru ini menerima cawangan 3.0 baharunya , dan inovasi utama yang diserlahkan dalam versi baharu ini adalah seperti berikut:

  • Sokongan tambahan untuk subsampel warna 4:1:1, membolehkan anda menukar, memangkas dan memutar imej JPEG subsampel 4:1:1 tanpa kehilangan kualiti, serta nyahmampat dan menukarnya kepada model warna YUV.
  • Pengiraan yang dipercepatkan dengan ketara bagi jadual Huffman optimum. Untuk imej kecil (256×256), perubahan itu membolehkan masa mampatan dikurangkan sehingga dua kali.
  • Menambahkan keupayaan untuk menggunakan pengekodan entropi aritmetik untuk imej JPEG dengan perwakilan warna 12-bit setiap saluran.
  • API TurboJPEG telah direka bentuk semula dengan ketara untuk menghapuskan had sedia ada dan meningkatkan kebolehlanjutan. Sebagai contoh, semua fungsi C kini diawali dengan "tj3".
  • Banyak bendera dan mod telah ditukar daripada argumen fungsi kepada parameter API umum.
  • Sokongan untuk imej dengan 12 dan 16 bit warna setiap saluran dalam mod lossy dan lossless.
  • Mod fail JPEG tanpa rugi telah ditambah, yang tersedia untuk imej dengan 8, 12 dan 16 bit warna setiap saluran. Menambah fungsi baharu jpeg_enable_lossless() dan pilihan baris arahan "-lossless".
  • Mengalih keluar medan, pembina dan kaedah yang tidak digunakan dalam API TurboJPEG Java.

Akhir sekali, perlu dinyatakan bahawa pada masa hadapan, pengarang libjpeg-turbo berhasrat untuk menyekat kerja pada projek untuk hanya mengeluarkan kemas kini dengan pembetulan pepijat. Pembangunan versi baharu 3.1 tidak akan bermula sehingga pembiayaan untuk projek itu diperoleh.

Bagi mereka yang berminat dengan kod ini , ia diedarkan di bawah tiga lesen seperti BSD: IJG, diubah suai oleh BSD dan zlib. Binari tersedia untuk Linux, macOS dan Windows. Anda boleh mendapatkan maklumat lanjut dan memuat turun binari daripada pautan berikut.


Tambahkan sebagai sumber pilihan dalam Google