Zstd: blocs désactivables pour la compression en streaming

Créé le 1 oct. 2020  ·  3Commentaires  ·  Source: facebook/zstd

J'ai un scénario dans lequel je reçois en continu des données diffusées et je souhaite compresser ces données dans plusieurs images avec un FrameSize prédéfini. J'utilise la fonction C-API ZSTD_CCtx_setPledgedSrcSize () à cet effet. Le problème survient lorsque le flux de données s'arrête ou demande la fermeture du fichier et le démarrage d'un nouveau fichier à un moment où la taille de trame actuelle n'est pas encore atteinte. Je ne peux pas fermer le cadre dans ce cas. Je pensais que je pourrais faire du remplissage avec des données sans signification jusqu'à la fin de l'image. Cependant, cela ne serait pas propre lors de la décompression du fichier. Si l'on pouvait utiliser quelque chose comme des blocs désactivables, alors je pourrais remplir le reste du cadre avec ceux-ci et le décompresseur les ignorerait automatiquement. Cela pourrait résoudre mon problème. Sinon, j'apprécierais toute aide pour surmonter ce problème.

Merci

question

Tous les 3 commentaires

J'utilise la fonction C-API ZSTD_CCtx_setPledgedSrcSize () à cet effet

Pourquoi définissez-vous une taille de source promise alors qu'elle n'est peut-être pas exacte? Une meilleure solution ne serait-elle pas de ne pas définir la taille de la source promise, alors vous pouvez avoir un cadre de la taille de votre choix?

Si vous avez besoin de connaître la taille de la source côté décompression, vous pouvez la communiquer hors bande. Cela vous permettrait de sur / sous-estimer parce que vous pouvez avoir un protocole qui l'ajuste.

après une enquête plus approfondie, nous avons constaté que notre analyse était incorrecte. nous examinerons plus en détail la taille promise pour voir si elles peuvent fonctionner.

J'ai oublié de signaler. La définition de la taille promise fonctionne réellement comme prévu, si vous l'utilisez correctement. Avoir des blocs avec une taille promise plus grande que le contenu réel décompresse correctement jusqu'à la fin, puis génère une erreur de fin d'entrée inattendue (qui peut être interceptée et gérée). Donc, cela peut être fermé.

Cette page vous a été utile?
0 / 5 - 0 notes