/alps/ufodecode

To get this branch, use:
bzr branch http://darksoft.org/webbzr/alps/ufodecode
9 by Matthias Vogelgesang
Rename to `ufodecode`
1
#ifndef LIB_UFODECODE_H
2
#define LIB_UFODECODE_H
4 by Matthias Vogelgesang
Make ipedec a lib and executable
3
4
#include <inttypes.h>
5
32 by Matthias Vogelgesang
Commit version 0.2 of libufodecode
6
typedef struct _UfoDecoder UfoDecoder;
7
8
typedef struct {
33 by Matthias Vogelgesang
Fix bit order
9
    unsigned    data_lock:16;
10
    unsigned    control_lock:1;
11
    unsigned    pixel_full:1;
12
    unsigned    fsm_daq:4;
13
    unsigned    dummy2:4;
14
    unsigned    fsm_master_readout:4;
32 by Matthias Vogelgesang
Commit version 0.2 of libufodecode
15
    unsigned    dummy1:2;
16
} UfoDecoderStatus1;
17
18
typedef struct {
33 by Matthias Vogelgesang
Fix bit order
19
    unsigned    ddr_fifo_empty:1;
20
    unsigned    ddr_fifo_full:1;
21
    unsigned    ddr_fifo_write_count:8;
22
    unsigned    dummy:2;
23
    unsigned    data_fifo_empty:1;
24
    unsigned    data_fifo_full:1;
25
    unsigned    data_fifo_read_count:10;
26
    unsigned    error_status:4;   /* What the heck? */
27
    unsigned    busy_interl:1;
28
    unsigned    busy_ddr:1;
29
    unsigned    busy_or:1;
32 by Matthias Vogelgesang
Commit version 0.2 of libufodecode
30
    unsigned    end_of_frames:1;
31
} UfoDecoderStatus2;
32
33
typedef struct {
33 by Matthias Vogelgesang
Fix bit order
34
    unsigned    ddr_arbiter:4;
35
    unsigned    ddr_write:4;
32 by Matthias Vogelgesang
Commit version 0.2 of libufodecode
36
    unsigned    ddr_read:4;
33 by Matthias Vogelgesang
Fix bit order
37
    unsigned    pixel_counter:7;
38
    unsigned    row_counter:11;
39
    unsigned    dummy:2;
32 by Matthias Vogelgesang
Commit version 0.2 of libufodecode
40
} UfoDecoderStatus3;
41
42
typedef struct {
43
    uint32_t        frame_number;
44
    uint32_t        time_stamp;
45
    uint32_t        n_rows;
46
    uint8_t         n_skipped_rows;
47
    uint16_t        cmosis_start_address;
40 by Suren A. Chilingaryan
Read output_mode and adc_resolution from frame header
48
    uint8_t         output_mode;
49
    uint8_t         adc_resolution;
50
32 by Matthias Vogelgesang
Commit version 0.2 of libufodecode
51
    union {
52
        uint32_t            bits;
53
        UfoDecoderStatus1   desc;
54
    }                       status1;
55
    union {
56
        uint32_t            bits; 
57
        UfoDecoderStatus2   desc;
58
    }                       status2;
59
    union {
60
        uint32_t            bits; 
61
        UfoDecoderStatus3   desc;
62
    }                       status3;
63
} UfoDecoderMeta;
4 by Matthias Vogelgesang
Make ipedec a lib and executable
64
65
#ifdef __cplusplus
66
extern "C" {
67
#endif
68
32 by Matthias Vogelgesang
Commit version 0.2 of libufodecode
69
UfoDecoder *ufo_decoder_new             (int32_t         height, 
28 by Matthias Vogelgesang
Add verbosity flag to output frequency and frame
70
                                         uint32_t        width, 
71
                                         uint32_t       *raw, 
72
                                         size_t          num_bytes);
32 by Matthias Vogelgesang
Commit version 0.2 of libufodecode
73
void        ufo_decoder_free            (UfoDecoder     *decoder);
74
size_t      ufo_decoder_decode_frame    (UfoDecoder     *decoder, 
28 by Matthias Vogelgesang
Add verbosity flag to output frequency and frame
75
                                         uint32_t       *raw, 
76
                                         size_t          num_bytes, 
77
                                         uint16_t       *pixels, 
32 by Matthias Vogelgesang
Commit version 0.2 of libufodecode
78
                                         UfoDecoderMeta *meta);
79
void        ufo_decoder_set_raw_data    (UfoDecoder     *decoder,
28 by Matthias Vogelgesang
Add verbosity flag to output frequency and frame
80
                                         uint32_t       *raw,
81
                                         size_t          num_bytes);
32 by Matthias Vogelgesang
Commit version 0.2 of libufodecode
82
int         ufo_decoder_get_next_frame  (UfoDecoder     *decoder, 
28 by Matthias Vogelgesang
Add verbosity flag to output frequency and frame
83
                                         uint16_t      **pixels, 
32 by Matthias Vogelgesang
Commit version 0.2 of libufodecode
84
                                         UfoDecoderMeta *meta_data);
28 by Matthias Vogelgesang
Add verbosity flag to output frequency and frame
85
void        ufo_deinterlace_interpolate (const uint16_t *frame_in, 
86
                                         uint16_t       *frame_out, 
87
                                         int             width, 
88
                                         int             height);
89
void        ufo_deinterlace_weave       (const uint16_t *in1,
90
                                         const uint16_t *in2,
91
                                         uint16_t       *out, 
92
                                         int             width, 
93
                                         int             height);
4 by Matthias Vogelgesang
Make ipedec a lib and executable
94
95
#ifdef __cplusplus
96
}
97
#endif
98
99
#endif
100