X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=libavutil%2Flzo.h;h=6788054bffb71a84e59dc96f54bd7ab78a7d0c98;hb=75a37b57a59f6701d9443c5f7a0ceec108b27a18;hp=5b3d98f40875b73b4187e1c6ac5f0d1d722381ff;hpb=4302963daa0912e35c7d7f53a1d9d34099f7a749;p=coroid%2Fffmpeg_saccubus.git diff --git a/libavutil/lzo.h b/libavutil/lzo.h index 5b3d98f40..6788054bf 100644 --- a/libavutil/lzo.h +++ b/libavutil/lzo.h @@ -19,17 +19,48 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef LZO_H -#define LZO_H +#ifndef AVUTIL_LZO_H +#define AVUTIL_LZO_H -#define LZO_INPUT_DEPLETED 1 -#define LZO_OUTPUT_FULL 2 -#define LZO_INVALID_BACKPTR 4 -#define LZO_ERROR 8 +#include -#define LZO_INPUT_PADDING 8 -#define LZO_OUTPUT_PADDING 12 +/** \defgroup errflags Error flags returned by av_lzo1x_decode + * \{ */ +//! end of the input buffer reached before decoding finished +#define AV_LZO_INPUT_DEPLETED 1 +//! decoded data did not fit into output buffer +#define AV_LZO_OUTPUT_FULL 2 +//! a reference to previously decoded data was wrong +#define AV_LZO_INVALID_BACKPTR 4 +//! a non-specific error in the compressed bitstream +#define AV_LZO_ERROR 8 +/** \} */ -int lzo1x_decode(void *out, int *outlen, void *in, int *inlen); +#define AV_LZO_INPUT_PADDING 8 +#define AV_LZO_OUTPUT_PADDING 12 -#endif +/** + * \brief Decodes LZO 1x compressed data. + * \param out output buffer + * \param outlen size of output buffer, number of bytes left are returned here + * \param in input buffer + * \param inlen size of input buffer, number of bytes left are returned here + * \return 0 on success, otherwise a combination of the error flags above + * + * Make sure all buffers are appropriately padded, in must provide + * AV_LZO_INPUT_PADDING, out must provide AV_LZO_OUTPUT_PADDING additional bytes. + */ +int av_lzo1x_decode(void *out, int *outlen, const void *in, int *inlen); + +/** + * \brief deliberately overlapping memcpy implementation + * \param dst destination buffer; must be padded with 12 additional bytes + * \param back how many bytes back we start (the initial size of the overlapping window) + * \param cnt number of bytes to copy, must be >= 0 + * + * cnt > back is valid, this will copy the bytes we just copied, + * thus creating a repeating pattern with a period length of back. + */ +void av_memcpy_backptr(uint8_t *dst, int back, int cnt); + +#endif /* AVUTIL_LZO_H */