X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavutil%2Flzo.c;h=ef01653aa89c174b3ad88280ceaaa8fb5bbf115c;hb=e25c67108a77b2dbf13de1339b5314d07e3ffa02;hp=83fa9bfbaf40167db783e54f0d6595f55c75f4f0;hpb=0d08e27015fc33b974d1c62626a4415d4de0872b;p=ffmpeg diff --git a/libavutil/lzo.c b/libavutil/lzo.c index 83fa9bfbaf4..ef01653aa89 100644 --- a/libavutil/lzo.c +++ b/libavutil/lzo.c @@ -2,20 +2,20 @@ * LZO 1x decompression * Copyright (c) 2006 Reimar Doeffinger * - * This file is part of FFmpeg. + * This file is part of Libav. * - * FFmpeg is free software; you can redistribute it and/or + * Libav is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * - * FFmpeg is distributed in the hope that it will be useful, + * Libav is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software + * License along with Libav; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ @@ -175,6 +175,14 @@ int av_lzo1x_decode(void *out, int *outlen, const void *in, int *inlen) { int state= 0; int x; LZOContext c; + if (!*outlen || !*inlen) { + int res = 0; + if (!*outlen) + res |= AV_LZO_OUTPUT_FULL; + if (!*inlen) + res |= AV_LZO_INPUT_DEPLETED; + return res; + } c.in = in; c.in_end = (const uint8_t *)in + *inlen; c.out = c.out_start = out; @@ -234,17 +242,17 @@ int av_lzo1x_decode(void *out, int *outlen, const void *in, int *inlen) { return c.error; } -#if LIBAVUTIL_VERSION_MAJOR < 50 -int lzo1x_decode(void *out, int *outlen, const void *in, int *inlen) { - return av_lzo1x_decode(out, outlen, in, inlen); -} -#endif - #ifdef TEST #include #include #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"); uint8_t *orig = av_malloc(MAXSZ + 16); @@ -255,14 +263,14 @@ int main(int argc, char *argv[]) { long tmp[LZO1X_MEM_COMPRESS]; int inlen, outlen; int i; - av_log_level = AV_LOG_DEBUG; + av_log_set_level(AV_LOG_DEBUG); lzo1x_999_compress(orig, s, comp, &clen, tmp); for (i = 0; i < 300; i++) { START_TIMER inlen = clen; outlen = MAXSZ; -#ifdef LIBLZO +#if BENCHMARK_LIBLZO_SAFE if (lzo1x_decompress_safe(comp, inlen, decomp, &outlen, NULL)) -#elif defined(LIBLZO_UNSAFE) +#elif BENCHMARK_LIBLZO_UNSAFE if (lzo1x_decompress(comp, inlen, decomp, &outlen, NULL)) #else if (av_lzo1x_decode(decomp, &outlen, comp, &inlen))