aPlib的使用

 

壓縮過程:
1.調用aP_max_packed_size得到存放壓縮文件的空間大小
2.調用aP_workmem_size得到工作空間大小 
3.調用aPsafe_pack
5.WirteFile寫入文件

解壓過程:
1.調用aPsafe_get_orig_size得到解壓後文件大小 
2.調用aPsafe_depack解壓
3.WirteFile寫入解壓後的文件 
——————————————————————————————————
常用函數解析:
size_t aP_max_packed_size( size_t input_size )
參數:未壓縮的數據大小
返回值:壓縮後的數據可能的所需要的最大值
Computes the maximum possible compressed size possible when 

compressing input_size bytes of incompressible data.

size_t aP_workmem_size( size_t input_size )
計算aP_pack函數所需要的workmem[] buffer的大小 
參數:未壓縮的數據的字節數
返回值: work buffer所需要的空間長度,總是返回 640k (640*1024).


size_t aPsafe_pack( const void *source,
                    void *destination,
                    size_t length,
                    void *workmem,
                    int (*callback)(size_t, size_t, size_t, void *),
                    void *cbparam )
函數aP_pack的封裝函數,添加了一個頭部,頭部包含了原始數據的大小

和原始數據的CRC檢驗值
參數: 
source - 指向被壓縮數據的指針
destination - 存儲壓縮數據的指針.
length - 原始數據(未壓縮數據)的字節數.
workmem - 壓縮時指向工作空間的指針
callback - 回調函數的指針,也可以爲NULL
cbparam - 回調函數的參數

返回值: 
成功返回壓縮後數據的字節數,失敗返回APLIB_ERROR
size_t aPsafe_get_orig_size( const void *source )
返回解壓後數據的長度
參數:
source -被壓縮的數據的指針

返回值: 
成功解壓後的數據長度,失敗APLIB_ERROR

size_t aPsafe_depack( const void *source,
                      size_t srclen,
                      void *destination,
                      size_t dstlen )
 函數aP_depack_asm_safe的封裝函數,函數檢查壓縮數據的CRC32校驗值
參數: 
source - 指向壓縮後數據的指針
srclen - 壓縮後的數據的字節數
destination - 解壓後的數據存放空間的指針
dstlen - 解壓後數據的字節數

返回值: 
成功返回解壓後的數據大小 ,錯誤返回APLIB_ERROR

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章