1 /*
2  * tivodecode, (c) 2006, Jeremy Drake
3  * See COPYING file for license terms
4  */
5 
6 #ifndef TIVO_DECODER_H_
7 #define TIVO_DECODER_H_
8 
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12 
13 #include "tdconfig.h"
14 #include <stddef.h>
15 #ifdef HAVE_SYS_TYPES_H
16 # include <sys/types.h>
17 #endif
18 #ifdef HAVE_UNISTD_H
19 # include <unistd.h>
20 #endif
21 #include "turing_stream.h"
22 
23 #if SIZEOF_OFF_T == 8
24 # define OFF_T_TYPE off_t
25 # define OFF_T_FORMAT  "llu"
26 #elif defined(WIN32)
27 # define OFF_T_TYPE __int64
28 # define OFF_T_FORMAT  "llu"
29 #else
30 # warning "Not compiling for large file (>2G) support!"
31 # define OFF_T_TYPE off_t
32 # define OFF_T_FORMAT  "lu"
33 #endif
34 
35 typedef int (*write_func_t) (void * mem, int size, void * fh);
36 
37 /*
38  * called for each frame
39  */
40 int process_frame(unsigned char code, turing_state * turing, OFF_T_TYPE packet_start, void * packet_stream, read_func_t read_handler, void * ofh, write_func_t write_handler);
41 
42 #ifdef __cplusplus
43 }
44 #endif
45 #endif
46