misc/winutils/include/libavutil/lzo.h
changeset 7813 7ac83d79b897
equal deleted inserted replaced
7812:00696c1450da 7813:7ac83d79b897
       
     1 /*
       
     2  * LZO 1x decompression
       
     3  * copyright (c) 2006 Reimar Doeffinger
       
     4  *
       
     5  * This file is part of Libav.
       
     6  *
       
     7  * Libav is free software; you can redistribute it and/or
       
     8  * modify it under the terms of the GNU Lesser General Public
       
     9  * License as published by the Free Software Foundation; either
       
    10  * version 2.1 of the License, or (at your option) any later version.
       
    11  *
       
    12  * Libav is distributed in the hope that it will be useful,
       
    13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
       
    14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
       
    15  * Lesser General Public License for more details.
       
    16  *
       
    17  * You should have received a copy of the GNU Lesser General Public
       
    18  * License along with Libav; if not, write to the Free Software
       
    19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
       
    20  */
       
    21 
       
    22 #ifndef AVUTIL_LZO_H
       
    23 #define AVUTIL_LZO_H
       
    24 
       
    25 /**
       
    26  * @defgroup lavu_lzo LZO
       
    27  * @ingroup lavu_crypto
       
    28  *
       
    29  * @{
       
    30  */
       
    31 
       
    32 #include <stdint.h>
       
    33 
       
    34 /** @name Error flags returned by av_lzo1x_decode
       
    35  * @{ */
       
    36 /// end of the input buffer reached before decoding finished
       
    37 #define AV_LZO_INPUT_DEPLETED  1
       
    38 /// decoded data did not fit into output buffer
       
    39 #define AV_LZO_OUTPUT_FULL     2
       
    40 /// a reference to previously decoded data was wrong
       
    41 #define AV_LZO_INVALID_BACKPTR 4
       
    42 /// a non-specific error in the compressed bitstream
       
    43 #define AV_LZO_ERROR           8
       
    44 /** @} */
       
    45 
       
    46 #define AV_LZO_INPUT_PADDING   8
       
    47 #define AV_LZO_OUTPUT_PADDING 12
       
    48 
       
    49 /**
       
    50  * @brief Decodes LZO 1x compressed data.
       
    51  * @param out output buffer
       
    52  * @param outlen size of output buffer, number of bytes left are returned here
       
    53  * @param in input buffer
       
    54  * @param inlen size of input buffer, number of bytes left are returned here
       
    55  * @return 0 on success, otherwise a combination of the error flags above
       
    56  *
       
    57  * Make sure all buffers are appropriately padded, in must provide
       
    58  * AV_LZO_INPUT_PADDING, out must provide AV_LZO_OUTPUT_PADDING additional bytes.
       
    59  */
       
    60 int av_lzo1x_decode(void *out, int *outlen, const void *in, int *inlen);
       
    61 
       
    62 /**
       
    63  * @brief deliberately overlapping memcpy implementation
       
    64  * @param dst destination buffer; must be padded with 12 additional bytes
       
    65  * @param back how many bytes back we start (the initial size of the overlapping window)
       
    66  * @param cnt number of bytes to copy, must be >= 0
       
    67  *
       
    68  * cnt > back is valid, this will copy the bytes we just copied,
       
    69  * thus creating a repeating pattern with a period length of back.
       
    70  */
       
    71 void av_memcpy_backptr(uint8_t *dst, int back, int cnt);
       
    72 
       
    73 /**
       
    74  * @}
       
    75  */
       
    76 
       
    77 #endif /* AVUTIL_LZO_H */