หลังจากหนึ่งปีครึ่งของการพัฒนา GStreamer 1.20 ได้เปิดตัว ซึ่งเป็นชุดส่วนประกอบข้ามแพลตฟอร์มที่เขียนด้วยภาษา C สำหรับการสร้างแอปพลิเคชันมัลติมีเดียที่หลากหลาย ตั้งแต่เครื่องเล่นมีเดียและตัวแปลงไฟล์เสียง/วิดีโอ ไปจนถึงแอปพลิเคชัน VoIP และระบบสตรีมมิ่ง รหัส GStreamer ได้รับอนุญาตภายใต้ LGPLv2.1 ในเวลาเดียวกัน มีการอัปเดตปลั๊กอิน gst-plugins-base 1.20, gst-plugins-good 1.20, gst-plugins-bad 1.20, gst-plugins-ugly 1.20 รวมถึงการเชื่อมโยง gst-libav 1.20 และ เซิร์ฟเวอร์สตรีมมิ่ง gst-rtsp-server 20 ที่ระดับ API และ ABI รีลีสใหม่สามารถใช้งานร่วมกับสาขา 1.0 แบบย้อนหลังได้ แอสเซมบลีไบนารีจะถูกจัดเตรียมในไม่ช้าสำหรับ Android, iOS, macOS และ Windows (ใน Linux ขอแนะนำให้ใช้แพ็คเกจจากการแจกจ่าย)
การปรับปรุงที่สำคัญใน GStreamer 1.20:
- การพัฒนาบน GitLab ได้รับการเปลี่ยนมาใช้พื้นที่เก็บข้อมูลเดียวซึ่งใช้ได้กับทุกโมดูล
- มีการเพิ่มไลบรารี GstPlay ระดับสูงใหม่ ซึ่งมาแทนที่ GstPlayer API และมีฟังก์ชันการทำงานที่คล้ายกันสำหรับการเล่นเนื้อหา แตกต่างโดยใช้บัสข้อความเพื่อแจ้งเตือนแอปพลิเคชันแทนสัญญาณ GObject
- เพิ่มการรองรับสำหรับการถอดรหัสข้อมูลความโปร่งใสของ WebM ทำให้สามารถเล่นวิดีโอ VP8/VP9 ด้วยพื้นที่โปร่งใสได้
- ขณะนี้โปรไฟล์การเข้ารหัสรองรับการตั้งค่าคุณสมบัติเฉพาะแอปพลิเคชันเพิ่มเติมแล้ว
- Compositor รองรับการแปลงและผสมวิดีโอแบบมัลติเธรด
- คลาส depayloader และ payloader มีการสนับสนุนแบบรวมสำหรับการทำงานกับส่วนหัว RTP เพิ่มเติม (ส่วนขยายส่วนหัว RTP)
- เพิ่มการรองรับกลไก SMPTE 2022-1 2-D (การแก้ไขข้อผิดพลาดการส่งต่อ)
- Encodebin และ Transcodebin สำหรับตัวแปลงสัญญาณ VP8, VP9 และ H.265 ใช้โหมดการเข้ารหัสอัจฉริยะ ซึ่งการแปลงรหัสจะดำเนินการเมื่อจำเป็นเท่านั้น และส่วนที่เหลือของเวลานั้นสตรีมที่มีอยู่จะถูกส่งต่อ
- ปลั๊กอินซุปhttpsrc เข้ากันได้กับ libsoup2 และ libsoup3 แล้ว
- เพิ่มความสามารถในการถอดรหัสข้อมูลอินพุตในระดับเฟรมกลาง (เฟรมย่อย) ซึ่งช่วยให้คุณเริ่มถอดรหัสได้โดยไม่ต้องรอให้ได้รับแบบเต็มเฟรม การสนับสนุนสำหรับการเพิ่มประสิทธิภาพนี้รวมอยู่ในตัวถอดรหัส OpenJPEG JPEG 2000, FFmpeg H.264 และ OpenMAX H.264/H.265
- เมื่อถอดรหัสวิดีโอสำหรับโปรโตคอล RTP, WebRTC และ RTSP จะมีการจัดการการสูญหายของแพ็กเก็ต ข้อมูลเสียหาย และคำขอคีย์เฟรมโดยอัตโนมัติ
- เพิ่มการรองรับการเปลี่ยนแปลงข้อมูลโคเดกได้ทันทีใน mp4 และ Matroska Media Container Packers ซึ่งช่วยให้คุณเปลี่ยนโปรไฟล์ ระดับ และความละเอียดสำหรับสตรีมอินพุต H.264/H.265
- เพิ่มโหมดสำหรับการสร้างคอนเทนเนอร์สื่อ mp4 ที่กระจัดกระจาย
- เพิ่มการรองรับเสียงในพอร์ตที่ใช้ WPE (WebKit Port for Embedded)
- เพิ่มความสามารถในการใช้ CUDA สำหรับการแปลงพื้นที่สี การปรับขนาดองค์ประกอบ และการโหลดองค์ประกอบ
- เพิ่มการรองรับหน่วยความจำ NVMM (NVIDIA Memory Module) สำหรับองค์ประกอบ OpenGL gupload และ gldownload
- ปรับปรุงการรองรับ WebRTC
- มีการเสนอปลั๊กอินใหม่สำหรับ VA-API (Video Acceleration API) ซึ่งรองรับตัวถอดรหัสและองค์ประกอบหลังการประมวลผลเพิ่มเติม
- AppSink API ได้เพิ่มการรองรับเหตุการณ์นอกเหนือจากบัฟเฟอร์และรายการบัฟเฟอร์
- เพิ่มการตั้งค่าเพิ่มเติมสำหรับคิวภายในไปยัง AppSrc แล้ว
- อัปเดตการเชื่อมโยงภาษา Rust และเพิ่มปลั๊กอินใหม่ 26 ปลั๊กอินที่เขียนด้วย Rust (gst-plugins-rs)
- เพิ่มองค์ประกอบ aesdec และ aesenc สำหรับการเข้ารหัสและถอดรหัสโดยใช้อัลกอริทึม AES
- เพิ่มองค์ประกอบ fakeaudiosink และ videocodectestsink สำหรับการทดสอบและการดีบัก
- เครื่องมือที่ได้รับการปรับปรุงสำหรับการสร้าง GStreamer แบบเรียบง่าย
- เพิ่มความสามารถในการสร้างด้วย FFmpeg 5.0
- สำหรับ Linux เวอร์ชันของตัวแปลงสัญญาณ MPEG-2 และ VP9 ได้ถูกนำมาใช้ โดยทำงานโดยไม่บันทึกสถานะ (ไร้สถานะ)
- สำหรับ Windows มีการเพิ่มการรองรับ AV3 และ MPEG-11 ในตัวถอดรหัสที่ใช้ Direct1D2/DXVA
ที่มา: opennet.ru