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