ffmpeg / libavutil / lzo.h @ d71ad089
History | View | Annotate | Download (2.38 KB)
1 | 04d7f601 | Diego Biurrun | /*
|
---|---|---|---|
2 | * LZO 1x decompression
|
||
3 | * copyright (c) 2006 Reimar Doeffinger
|
||
4 | *
|
||
5 | b78e7197 | Diego Biurrun | * This file is part of FFmpeg.
|
6 | *
|
||
7 | * FFmpeg is free software; you can redistribute it and/or
|
||
8 | 04d7f601 | Diego Biurrun | * modify it under the terms of the GNU Lesser General Public
|
9 | * License as published by the Free Software Foundation; either
|
||
10 | b78e7197 | Diego Biurrun | * version 2.1 of the License, or (at your option) any later version.
|
11 | 04d7f601 | Diego Biurrun | *
|
12 | b78e7197 | Diego Biurrun | * FFmpeg is distributed in the hope that it will be useful,
|
13 | 04d7f601 | Diego Biurrun | * 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 | b78e7197 | Diego Biurrun | * License along with FFmpeg; if not, write to the Free Software
|
19 | 04d7f601 | Diego Biurrun | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
20 | */
|
||
21 | |||
22 | 98790382 | Stefano Sabatini | #ifndef AVUTIL_LZO_H
|
23 | #define AVUTIL_LZO_H
|
||
24 | 517840c6 | Reimar Döffinger | |
25 | 82ed0b76 | Diego Biurrun | #include <stdint.h> |
26 | |||
27 | 679f5c25 | Reimar Döffinger | /** \defgroup errflags Error flags returned by av_lzo1x_decode
|
28 | * \{ */
|
||
29 | //! end of the input buffer reached before decoding finished
|
||
30 | 0b178e56 | Reimar Döffinger | #define AV_LZO_INPUT_DEPLETED 1 |
31 | 679f5c25 | Reimar Döffinger | //! decoded data did not fit into output buffer
|
32 | 0b178e56 | Reimar Döffinger | #define AV_LZO_OUTPUT_FULL 2 |
33 | 679f5c25 | Reimar Döffinger | //! a reference to previously decoded data was wrong
|
34 | 0b178e56 | Reimar Döffinger | #define AV_LZO_INVALID_BACKPTR 4 |
35 | 679f5c25 | Reimar Döffinger | //! a non-specific error in the compressed bitstream
|
36 | 0b178e56 | Reimar Döffinger | #define AV_LZO_ERROR 8 |
37 | 679f5c25 | Reimar Döffinger | /** \} */
|
38 | 517840c6 | Reimar Döffinger | |
39 | 0b178e56 | Reimar Döffinger | #define AV_LZO_INPUT_PADDING 8 |
40 | #define AV_LZO_OUTPUT_PADDING 12 |
||
41 | f53a2931 | Reimar Döffinger | |
42 | a545f067 | Reimar Döffinger | /**
|
43 | * \brief Decodes LZO 1x compressed data.
|
||
44 | * \param out output buffer
|
||
45 | * \param outlen size of output buffer, number of bytes left are returned here
|
||
46 | * \param in input buffer
|
||
47 | * \param inlen size of input buffer, number of bytes left are returned here
|
||
48 | 679f5c25 | Reimar Döffinger | * \return 0 on success, otherwise a combination of the error flags above
|
49 | a545f067 | Reimar Döffinger | *
|
50 | * Make sure all buffers are appropriately padded, in must provide
|
||
51 | * AV_LZO_INPUT_PADDING, out must provide AV_LZO_OUTPUT_PADDING additional bytes.
|
||
52 | */
|
||
53 | 0b178e56 | Reimar Döffinger | int av_lzo1x_decode(void *out, int *outlen, const void *in, int *inlen); |
54 | 517840c6 | Reimar Döffinger | |
55 | a545f067 | Reimar Döffinger | /**
|
56 | * \brief deliberately overlapping memcpy implementation
|
||
57 | * \param dst destination buffer; must be padded with 12 additional bytes
|
||
58 | * \param back how many bytes back we start (the initial size of the overlapping window)
|
||
59 | * \param cnt number of bytes to copy, must be >= 0
|
||
60 | *
|
||
61 | * cnt > back is valid, this will copy the bytes we just copied,
|
||
62 | * thus creating a repeating pattern with a period length of back.
|
||
63 | */
|
||
64 | 6ba10f33 | Peter Ross | void av_memcpy_backptr(uint8_t *dst, int back, int cnt); |
65 | |||
66 | 98790382 | Stefano Sabatini | #endif /* AVUTIL_LZO_H */ |