Initial commit - from Precise source
[freerdp-ubuntu-pcb-backport.git] / libfreerdp-core / mppc.h
1 /**
2  * FreeRDP: A Remote Desktop Protocol Client
3  * Implements Microsoft Point to Point Compression (MPPC) protocol
4  *
5  * Copyright 2011 Laxmikant Rashinkar <LK.Rashinkar@gmail.com>
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *     http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19
20 #ifndef __MPPC_H
21 #define __MPPC_H
22
23 #include <stdint.h>
24
25 #define RDP6_HISTORY_BUF_SIZE     65536
26 #define RDP6_OFFSET_CACHE_SIZE     4
27
28 struct rdp_mppc
29 {
30         uint8 *history_buf;
31         uint16 *offset_cache;
32         uint8 *history_buf_end;
33         uint8 *history_ptr;
34 };
35
36 // forward declarations
37 int decompress_rdp(rdpRdp *, uint8 *, int, int, uint32 *, uint32 *);
38 int decompress_rdp_4(rdpRdp *, uint8 *, int, int, uint32 *, uint32 *);
39 int decompress_rdp_5(rdpRdp *, uint8 *, int, int, uint32 *, uint32 *);
40 int decompress_rdp_6(rdpRdp *, uint8 *, int, int, uint32 *, uint32 *);
41 int decompress_rdp_61(rdpRdp *, uint8 *, int, int, uint32 *, uint32 *);
42 struct rdp_mppc *mppc_new(rdpRdp *rdp);
43 void mppc_free(rdpRdp *rdp);
44
45 #endif