Zstd: blok yang dapat dilewati untuk kompresi streaming

Dibuat pada 1 Okt 2020  ·  3Komentar  ·  Sumber: facebook/zstd

Saya memiliki skenario di mana saya terus menerima data yang dialirkan dan saya ingin mengompres data ini dalam beberapa bingkai dengan FrameSize yang telah diberikan sebelumnya. Saya menggunakan fungsi C-API ZSTD_CCtx_setPledgedSrcSize () untuk tujuan ini. Masalah muncul ketika aliran data berhenti atau permintaan untuk menutup file dan memulai file baru di titik waktu ketika ukuran frame saat ini belum tercapai. Saya tidak bisa menutup bingkai dalam kasus ini. Saya pikir saya bisa melakukan padding dengan data yang tidak berarti sampai akhir frame. Namun, ini tidak akan bersih saat mendekompresi file. Jika seseorang dapat menggunakan sesuatu seperti blok yang dapat dilewati, maka saya dapat mengisi sisa bingkai dengan ini dan dekompresor akan melewatinya secara otomatis. Ini bisa menyelesaikan masalah saya. Jika tidak, saya akan sangat menghargai bantuan apa pun untuk mengatasi masalah ini.

Terima kasih

question

Semua 3 komentar

Saya menggunakan fungsi C-API ZSTD_CCtx_setPledgedSrcSize () untuk tujuan ini

Mengapa Anda menyetel ukuran sumber yang dijaminkan padahal mungkin tidak akurat? Bukankah solusi yang lebih baik adalah tidak menyetel ukuran sumber yang dijaminkan, lalu Anda dapat memiliki bingkai dengan ukuran apa pun yang Anda inginkan?

Jika Anda perlu mengetahui ukuran sumber di sisi dekompresi, Anda dapat mengkomunikasikannya di luar jalur. Itu akan memungkinkan Anda untuk over / under-estimasi karena Anda dapat memiliki protokol yang menyesuaikannya.

setelah penyelidikan lebih lanjut kami menemukan analisis kami tidak benar. kita akan melihat ukuran yang dijanjikan lebih lanjut untuk melihat apakah mereka dapat bekerja.

Saya lupa melaporkan. Menyetel ukuran yang dijanjikan benar-benar berfungsi seperti yang diharapkan, jika Anda menggunakannya dengan benar. Memiliki blok dengan ukuran yang dijanjikan lebih besar dari konten sebenarnya mendekompresi dengan benar sampai akhir dan kemudian menimbulkan kesalahan input akhir yang tidak terduga (yang dapat ditangkap dan ditangani). Jadi ini bisa ditutup.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat