a3a92abf1ca043aaaaaa79381afa316abaa00ace
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

1) /*
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

2)  * EtherPix library
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

3)  *
Stefan Schuermans removed version information...

Stefan Schuermans authored 13 years ago

4)  * Copyright 2010-2011 Stefan Schuermans <stefan schuermans info>
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

5)  *
6)  * This program is free software: you can redistribute it and/or modify
7)  * it under the terms of the GNU General Public License as published by
8)  * the Free Software Foundation, version 3 of the License.
9)  *
10)  *
11)  * This program is distributed in the hope that it will be useful,
12)  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13)  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14)  * GNU General Public License for more details.
15)  *
16)  * You should have received a copy of the GNU Lesser General Public License
17)  * along with this program. If not, see <http://www.gnu.org/licenses/>.
18)  */
19) 
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

20) #ifndef ETP_TYPES_H
21) #define ETP_TYPES_H
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

22) 
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

23) #include <etherpix/types.h>
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

24) #include <intern/constants.h>
25) #include <intern/net.h>
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

26) #include <intern/thread.h>
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

27) 
28) /** mapping information
29)  *
30)  *  values of channels are mapped according to following formula:
31)  *  <display value> := <base> + <factor> * <original value> ^ (1 / <gamma>)
32)  */
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

33) typedef struct etp_mapping_s {
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

34)   double base;         /**< base constant for brightness correction */
35)   double factor;       /**< factor for contrast modification */
36)   double gamma;        /**< gamma correction factor, must be > 0.0 */
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

37)   etp_u8_t table[256]; /**< precalculated mapping table,
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

38)                         *   index: source image value
39)                         *   value: display value */
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

40) } etp_mapping_t;
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

41) 
42) /** information about a pixel */
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

43) typedef struct etp_pixel_s {
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

44)   int x, y; /**< coordinates of pixel in movie (-1 if unknown yet) */
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

45) } etp_pixel_t;
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

46) 
47) /** information about a distributor */
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

48) typedef struct etp_distri_s {
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

49)   unsigned int distri;      /**< number of this distributor */
50)   unsigned int output_cnt;  /**< number of outputs of this distributor */
51)   unsigned int pixel_cnt;   /**< number of pixels connected to every output */
Stefan Schuermans add support for configuring...

Stefan Schuermans authored 7 years ago

52)   struct sockaddr_in addr;  /**< network address of distributor */
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

53)   etp_mapping_t mapping[3]; /**< mapping information for red, green
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

54)                              *   and blue channel */
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

55)   etp_pixel_t *p_pixels;    /**< array with information about pixels
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

56)                              *   of this distributor,
57)                              *   index = output * pixel_cnt + pixel,
58)                              *   malloc-ed */
59)   unsigned int msg_len;     /**< size of a message to send to distributor */
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

60)   etp_u8_t *p_msg_buf;      /**< buffer for current message to send
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

61)                              *   to distributor,
62)                              *   malloc-ed */
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

63) } etp_distri_t;
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

64) 
65) /** information about a display */
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

66) struct etp_display_s {
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

67)   struct sockaddr_in bind_addr;       /**< local network address to bind to */
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

68)   etp_pixel_t size;                   /**< size of display */
69)   etp_distri_t *distri_ptrs
70)                 [ETP_DISTRI_MAX_CNT]; /**< information about distributors,
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

71)                                        *   distributors are malloc-ed */
72)   unsigned int distri_cnt;            /**< total number of distris */
73)   unsigned int output_cnt;            /**< total number of outputs */
74)   unsigned long pixel_cnt;            /**< total number of pixels */
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

75)   etp_sock_t sock;                    /**< socket to send UDP packets */
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

76) };
77) 
78) /** a displayer
79)  *
80)  * sends pictures to a display whenever the maximum interval expired
81)  */
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

82) struct etp_displayer_s {
83)   etp_display_t *p_display; /**< display managed by this displayer */
84)   etp_thread_mutex_t mtx;   /**< mutex to lock msg_buf of distris */
85)   etp_thread_cond_t cond;   /**< condition to wake up thread on new frame */
86)   etp_thread_id_t tid;      /**< id of output thread */
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

87)   volatile int active;      /**< if to output to distris */
88)   volatile int send;        /**< set to force immediate sending to distris */
89)   volatile int end;         /**< set to signal end to thread */
90) };
91) 
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

92) #endif /* #ifndef ETP_TYPES_H */