Skip to content

Commit

Permalink
Merge branch 'lzo' of gitlab.com:DimitriPapadopoulos/openconnect
Browse files Browse the repository at this point in the history
  • Loading branch information
dwmw2 committed Jun 28, 2021
2 parents 05b1aca + df0b825 commit cf91afa
Showing 1 changed file with 4 additions and 57 deletions.
61 changes: 4 additions & 57 deletions lzo.c
Expand Up @@ -20,6 +20,7 @@
*/

#include <string.h>
#include <limits.h>

//#include "avutil.h"
//#include "avassert.h"
Expand Down Expand Up @@ -67,7 +68,7 @@ static inline int get_len(LZOContext *c, int x, int mask)
int cnt = x & mask;
if (!cnt) {
while (!(x = get_byte(c))) {
if (cnt >= 65535) {
if (cnt >= INT_MAX - 1000) {
c->error |= AV_LZO_ERROR;
break;
}
Expand Down Expand Up @@ -122,6 +123,7 @@ static inline void copy(LZOContext *c, int cnt)
static inline void copy_backptr(LZOContext *c, int back, int cnt)
{
register uint8_t *dst = c->out;
/* Should never happen */
if (cnt <= 0) {
c->error |= AV_LZO_ERROR;
return;
Expand Down Expand Up @@ -168,7 +170,7 @@ int av_lzo1x_decode(void *out, int *outlen, const void *in, int *inlen)
while (!c.error) {
int cnt, back;
if (x > 15) {
if (x > 63) { /* cccbbbnn BBBBBBBB */
if (x > 63) { /* cccbbbnn BBBBBBBB */
cnt = (x >> 5) - 1;
back = (GETB(c) << 3) + ((x >> 2) & 7) + 1;
} else if (x > 31) { /* 001ccccc (cccccccc...) bbbbbbnn BBBBBBBB */
Expand Down Expand Up @@ -210,58 +212,3 @@ int av_lzo1x_decode(void *out, int *outlen, const void *in, int *inlen)
*outlen = c.out_end - c.out;
return c.error;
}

#ifdef TEST
#include <stdio.h>
#include <lzo/lzo1x.h>
#include "log.h"
#define MAXSZ (10*1024*1024)

/* Define one of these to 1 if you wish to benchmark liblzo
* instead of our native implementation. */
#define BENCHMARK_LIBLZO_SAFE 0
#define BENCHMARK_LIBLZO_UNSAFE 0

int main(int argc, char *argv[]) {
FILE *in = fopen(argv[1], "rb");
int comp_level = argc > 2 ? atoi(argv[2]) : 0;
uint8_t *orig = av_malloc(MAXSZ + 16);
uint8_t *comp = av_malloc(2*MAXSZ + 16);
uint8_t *decomp = av_malloc(MAXSZ + 16);
size_t s = fread(orig, 1, MAXSZ, in);
lzo_uint clen = 0;
long tmp[LZO1X_MEM_COMPRESS];
int inlen, outlen;
int i;
av_log_set_level(AV_LOG_DEBUG);
if (comp_level == 0) {
lzo1x_1_compress(orig, s, comp, &clen, tmp);
} else if (comp_level == 11) {
lzo1x_1_11_compress(orig, s, comp, &clen, tmp);
} else if (comp_level == 12) {
lzo1x_1_12_compress(orig, s, comp, &clen, tmp);
} else if (comp_level == 15) {
lzo1x_1_15_compress(orig, s, comp, &clen, tmp);
} else
lzo1x_999_compress(orig, s, comp, &clen, tmp);
for (i = 0; i < 300; i++) {
START_TIMER
inlen = clen; outlen = MAXSZ;
#if BENCHMARK_LIBLZO_SAFE
if (lzo1x_decompress_safe(comp, inlen, decomp, &outlen, NULL))
#elif BENCHMARK_LIBLZO_UNSAFE
if (lzo1x_decompress(comp, inlen, decomp, &outlen, NULL))
#else
if (av_lzo1x_decode(decomp, &outlen, comp, &inlen))
#endif
av_log(NULL, AV_LOG_ERROR, "decompression error\n");
STOP_TIMER("lzod")
}
if (memcmp(orig, decomp, s))
av_log(NULL, AV_LOG_ERROR, "decompression incorrect\n");
else
av_log(NULL, AV_LOG_ERROR, "decompression OK\n");
fclose(in);
return 0;
}
#endif

0 comments on commit cf91afa

Please sign in to comment.