fc03deaab3283f8019aaf9fa6ca300ca51a51641
[asterisk/asterisk.git] / include / asterisk / slin.h
1 /*
2  * Asterisk -- An open source telephony toolkit.
3  *
4  * Copyright (C) 2007, Digium, Inc.
5  *
6  * Russell Bryant <russell@digium.com>
7  *
8  * See http://www.asterisk.org for more information about
9  * the Asterisk project. Please do not directly contact
10  * any of the maintainers of this project for assistance;
11  * the project provides a web site, mailing lists and IRC
12  * channels for your use.
13  *
14  * This program is free software, distributed under the terms of
15  * the GNU General Public License Version 2. See the LICENSE file
16  * at the top of the source tree.
17  */
18
19 /* Source: beep.gsm
20  * Converted to beep.sln via file convert, then converted to hex:
21  * od -An -tx1 beep.sln | awk '{for (i=1; i<NF; i++) printf "0x%s, ", $i} {printf("0x%s,\n", $NF)}'
22  * Samples were truncated at 160 and 320 bytes.
23  */
24
25 static uint8_t ex_slin8[] = {
26         0x00, 0x00, 0x60, 0x00, 0x68, 0x00, 0x48, 0x00, 0xc8, 0xff, 0xa8, 0xff, 0xc8, 0xff, 0x40, 0x00,
27         0x60, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x58, 0x00, 0x00, 0xff, 0x50, 0xfe, 0xa0, 0xfe,
28         0xd8, 0xff, 0xc0, 0x00, 0xe0, 0x00, 0x58, 0x02, 0xa8, 0x02, 0xb0, 0x01, 0xf0, 0xff, 0xf8, 0xfe,
29         0x00, 0xff, 0x00, 0xfd, 0x78, 0xfc, 0x00, 0xfe, 0x48, 0x00, 0x38, 0x02, 0x40, 0x03, 0x20, 0x04,
30         0x78, 0x03, 0x90, 0x01, 0x00, 0xff, 0x38, 0xfd, 0xe8, 0xfc, 0x18, 0xfc, 0x90, 0xfc, 0x48, 0xfe,
31         0xe0, 0x00, 0x50, 0x03, 0x10, 0x05, 0x88, 0x05, 0x58, 0x04, 0x88, 0x01, 0x68, 0xfe, 0xe8, 0xfb,
32         0x80, 0xfa, 0x90, 0xfa, 0x30, 0xfc, 0xb0, 0xff, 0x68, 0x03, 0x18, 0x06, 0x20, 0x07, 0x48, 0x06,
33         0xb0, 0x03, 0x50, 0xff, 0xc0, 0xfa, 0xd0, 0xf7, 0xd8, 0xf6, 0x88, 0xf8, 0x50, 0xfc, 0x48, 0x01,
34         0x48, 0x06, 0x70, 0x09, 0xe0, 0x09, 0x50, 0x07, 0xa8, 0x02, 0xe0, 0xfc, 0x20, 0xf7, 0xf0, 0xf3,
35         0x68, 0xf5, 0xf8, 0xf9, 0x10, 0x00, 0x78, 0x06, 0x70, 0x0b, 0x00, 0x0d, 0xd8, 0x0a, 0xa8, 0x05,
36 } __attribute__ ((aligned (2)));
37
38 static uint8_t ex_slin16[] = {
39         0x00, 0x00, 0x60, 0x00, 0x68, 0x00, 0x48, 0x00, 0xc8, 0xff, 0xa8, 0xff, 0xc8, 0xff, 0x40, 0x00,
40         0x60, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x58, 0x00, 0x00, 0xff, 0x50, 0xfe, 0xa0, 0xfe,
41         0xd8, 0xff, 0xc0, 0x00, 0xe0, 0x00, 0x58, 0x02, 0xa8, 0x02, 0xb0, 0x01, 0xf0, 0xff, 0xf8, 0xfe,
42         0x00, 0xff, 0x00, 0xfd, 0x78, 0xfc, 0x00, 0xfe, 0x48, 0x00, 0x38, 0x02, 0x40, 0x03, 0x20, 0x04,
43         0x78, 0x03, 0x90, 0x01, 0x00, 0xff, 0x38, 0xfd, 0xe8, 0xfc, 0x18, 0xfc, 0x90, 0xfc, 0x48, 0xfe,
44         0xe0, 0x00, 0x50, 0x03, 0x10, 0x05, 0x88, 0x05, 0x58, 0x04, 0x88, 0x01, 0x68, 0xfe, 0xe8, 0xfb,
45         0x80, 0xfa, 0x90, 0xfa, 0x30, 0xfc, 0xb0, 0xff, 0x68, 0x03, 0x18, 0x06, 0x20, 0x07, 0x48, 0x06,
46         0xb0, 0x03, 0x50, 0xff, 0xc0, 0xfa, 0xd0, 0xf7, 0xd8, 0xf6, 0x88, 0xf8, 0x50, 0xfc, 0x48, 0x01,
47         0x48, 0x06, 0x70, 0x09, 0xe0, 0x09, 0x50, 0x07, 0xa8, 0x02, 0xe0, 0xfc, 0x20, 0xf7, 0xf0, 0xf3,
48         0x68, 0xf5, 0xf8, 0xf9, 0x10, 0x00, 0x78, 0x06, 0x70, 0x0b, 0x00, 0x0d, 0xd8, 0x0a, 0xa8, 0x05,
49         0xa8, 0xfe, 0x28, 0xf8, 0x28, 0xf4, 0x90, 0xf3, 0x98, 0xf6, 0x50, 0xfc, 0x78, 0x03, 0x80, 0x09,
50         0x98, 0x0c, 0x70, 0x0b, 0xd8, 0x06, 0x48, 0x00, 0xe0, 0xf8, 0x70, 0xf3, 0xb8, 0xf1, 0xc8, 0xf4,
51         0xf8, 0xfa, 0x68, 0x02, 0x50, 0x0a, 0x40, 0x0f, 0xa8, 0x0f, 0x98, 0x0b, 0x80, 0x04, 0x50, 0xfc,
52         0x88, 0xf4, 0x40, 0xf0, 0xc8, 0xf0, 0x30, 0xf5, 0x78, 0xfc, 0xa8, 0x04, 0x00, 0x0c, 0xa8, 0x0f,
53         0x98, 0x0e, 0xa8, 0x08, 0x30, 0x00, 0xc0, 0xf7, 0x80, 0xf1, 0x80, 0xef, 0x58, 0xf2, 0x20, 0xf9,
54         0xb0, 0x01, 0x90, 0x09, 0x68, 0x0f, 0xc0, 0x10, 0x20, 0x0d, 0x30, 0x05, 0xd8, 0xfb, 0xf0, 0xf3,
55         0x98, 0xef, 0x20, 0xf0, 0x58, 0xf5, 0xb8, 0xfd, 0x90, 0x06, 0x58, 0x0d, 0x58, 0x10, 0x90, 0x0e,
56         0x88, 0x08, 0xe8, 0xff, 0x78, 0xf7, 0xb8, 0xf1, 0xa0, 0xef, 0x40, 0xf2, 0xd8, 0xf8, 0x80, 0x02,
57         0x60, 0x0b, 0xc0, 0x10, 0xa0, 0x11, 0x78, 0x0d, 0x70, 0x05, 0x30, 0xfb, 0x98, 0xf2, 0x20, 0xee,
58         0x28, 0xef, 0x20, 0xf5, 0x48, 0xfe, 0xf8, 0x07, 0x28, 0x0f, 0xd0, 0x11, 0x18, 0x0e, 0x18, 0x06,
59 } __attribute__ ((aligned (2)));
60
61 static inline struct ast_frame *slin8_sample(void)
62 {
63         static struct ast_frame f = {
64                 .frametype = AST_FRAME_VOICE,
65                 .subclass.codec = AST_FORMAT_SLINEAR,
66                 .datalen = sizeof(ex_slin8),
67                 .samples = ARRAY_LEN(ex_slin8) / 2,
68                 .mallocd = 0,
69                 .offset = 0,
70                 .src = __PRETTY_FUNCTION__,
71                 .data.ptr = ex_slin8,
72         };
73
74         return &f;
75 }
76
77 static inline struct ast_frame *slin16_sample(void)
78 {
79         static struct ast_frame f = {
80                 .frametype = AST_FRAME_VOICE,
81                 .subclass.codec = AST_FORMAT_SLINEAR16,
82                 .datalen = sizeof(ex_slin16),
83                 .samples = ARRAY_LEN(ex_slin16) / 2,
84                 .mallocd = 0,
85                 .offset = 0,
86                 .src = __PRETTY_FUNCTION__,
87                 .data.ptr = ex_slin16,
88         };
89
90         return &f;
91 }