15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Bcj2.h -- Converter for x86 code (BCJ2)
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)2009-02-07 : Igor Pavlov : Public domain */
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef __BCJ2_H
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define __BCJ2_H
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "Types.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Conditions:
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  outSize <= FullOutputSize,
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  where FullOutputSize is full size of output stream of x86_2 filter.
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If buf0 overlaps outBuf, there are two required conditions:
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  1) (buf0 >= outBuf)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  2) (buf0 + size0 >= outBuf + FullOutputSize).
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Returns:
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SZ_OK
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SZ_ERROR_DATA - Data error
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int Bcj2_Decode(
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const Byte *buf0, SizeT size0,
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const Byte *buf1, SizeT size1,
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const Byte *buf2, SizeT size2,
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const Byte *buf3, SizeT size3,
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    Byte *outBuf, SizeT outSize);
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
39