xref: /freebsd-src/sys/dev/sound/pcm/g711.h (revision 88eaa1504d12c82a36d83c16e9fd6c41175d2e0a)
190da2b28SAriff Abdullah /*-
2*4d846d26SWarner Losh  * SPDX-License-Identifier: BSD-2-Clause
3718cf2ccSPedro F. Giffuni  *
490da2b28SAriff Abdullah  * Copyright (c) 2008-2009 Ariff Abdullah <ariff@FreeBSD.org>
590da2b28SAriff Abdullah  * All rights reserved.
690da2b28SAriff Abdullah  *
790da2b28SAriff Abdullah  * Redistribution and use in source and binary forms, with or without
890da2b28SAriff Abdullah  * modification, are permitted provided that the following conditions
990da2b28SAriff Abdullah  * are met:
1090da2b28SAriff Abdullah  * 1. Redistributions of source code must retain the above copyright
1190da2b28SAriff Abdullah  *    notice, this list of conditions and the following disclaimer.
1290da2b28SAriff Abdullah  * 2. Redistributions in binary form must reproduce the above copyright
1390da2b28SAriff Abdullah  *    notice, this list of conditions and the following disclaimer in the
1490da2b28SAriff Abdullah  *    documentation and/or other materials provided with the distribution.
1590da2b28SAriff Abdullah  *
1690da2b28SAriff Abdullah  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1790da2b28SAriff Abdullah  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1890da2b28SAriff Abdullah  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1990da2b28SAriff Abdullah  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
2090da2b28SAriff Abdullah  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2190da2b28SAriff Abdullah  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2290da2b28SAriff Abdullah  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2390da2b28SAriff Abdullah  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2490da2b28SAriff Abdullah  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2590da2b28SAriff Abdullah  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2690da2b28SAriff Abdullah  * SUCH DAMAGE.
2790da2b28SAriff Abdullah  */
2890da2b28SAriff Abdullah 
2990da2b28SAriff Abdullah #ifndef _SND_G711_H_
3090da2b28SAriff Abdullah #define _SND_G711_H_
3190da2b28SAriff Abdullah 
3290da2b28SAriff Abdullah #define G711_TABLE_SIZE		256
3390da2b28SAriff Abdullah 
3490da2b28SAriff Abdullah #define ULAW_TO_U8	{						\
3590da2b28SAriff Abdullah 	    3,    7,   11,   15,   19,   23,   27,   31,		\
3690da2b28SAriff Abdullah 	   35,   39,   43,   47,   51,   55,   59,   63,		\
3790da2b28SAriff Abdullah 	   66,   68,   70,   72,   74,   76,   78,   80,		\
3890da2b28SAriff Abdullah 	   82,   84,   86,   88,   90,   92,   94,   96,		\
3990da2b28SAriff Abdullah 	   98,   99,  100,  101,  102,  103,  104,  105,		\
4090da2b28SAriff Abdullah 	  106,  107,  108,  109,  110,  111,  112,  113,		\
4190da2b28SAriff Abdullah 	  113,  114,  114,  115,  115,  116,  116,  117,		\
4290da2b28SAriff Abdullah 	  117,  118,  118,  119,  119,  120,  120,  121,		\
4390da2b28SAriff Abdullah 	  121,  121,  122,  122,  122,  122,  123,  123,		\
4490da2b28SAriff Abdullah 	  123,  123,  124,  124,  124,  124,  125,  125,		\
4590da2b28SAriff Abdullah 	  125,  125,  125,  125,  126,  126,  126,  126,		\
4690da2b28SAriff Abdullah 	  126,  126,  126,  126,  127,  127,  127,  127,		\
4790da2b28SAriff Abdullah 	  127,  127,  127,  127,  127,  127,  127,  127,		\
4890da2b28SAriff Abdullah 	  128,  128,  128,  128,  128,  128,  128,  128,		\
4990da2b28SAriff Abdullah 	  128,  128,  128,  128,  128,  128,  128,  128,		\
5090da2b28SAriff Abdullah 	  128,  128,  128,  128,  128,  128,  128,  128,		\
5190da2b28SAriff Abdullah 	  253,  249,  245,  241,  237,  233,  229,  225,		\
5290da2b28SAriff Abdullah 	  221,  217,  213,  209,  205,  201,  197,  193,		\
5390da2b28SAriff Abdullah 	  190,  188,  186,  184,  182,  180,  178,  176,		\
5490da2b28SAriff Abdullah 	  174,  172,  170,  168,  166,  164,  162,  160,		\
5590da2b28SAriff Abdullah 	  158,  157,  156,  155,  154,  153,  152,  151,		\
5690da2b28SAriff Abdullah 	  150,  149,  148,  147,  146,  145,  144,  143,		\
5790da2b28SAriff Abdullah 	  143,  142,  142,  141,  141,  140,  140,  139,		\
5890da2b28SAriff Abdullah 	  139,  138,  138,  137,  137,  136,  136,  135,		\
5990da2b28SAriff Abdullah 	  135,  135,  134,  134,  134,  134,  133,  133,		\
6090da2b28SAriff Abdullah 	  133,  133,  132,  132,  132,  132,  131,  131,		\
6190da2b28SAriff Abdullah 	  131,  131,  131,  131,  130,  130,  130,  130,		\
6290da2b28SAriff Abdullah 	  130,  130,  130,  130,  129,  129,  129,  129,		\
6390da2b28SAriff Abdullah 	  129,  129,  129,  129,  129,  129,  129,  129,		\
6490da2b28SAriff Abdullah 	  128,  128,  128,  128,  128,  128,  128,  128,		\
6590da2b28SAriff Abdullah 	  128,  128,  128,  128,  128,  128,  128,  128,		\
6690da2b28SAriff Abdullah 	  128,  128,  128,  128,  128,  128,  128,  128,		\
6790da2b28SAriff Abdullah 	}
6890da2b28SAriff Abdullah 
6990da2b28SAriff Abdullah #define ALAW_TO_U8	{						\
7090da2b28SAriff Abdullah 	  108,  109,  106,  107,  112,  113,  110,  111,		\
7190da2b28SAriff Abdullah 	  100,  101,   98,   99,  104,  105,  102,  103,		\
7290da2b28SAriff Abdullah 	  118,  118,  117,  117,  120,  120,  119,  119,		\
7390da2b28SAriff Abdullah 	  114,  114,  113,  113,  116,  116,  115,  115,		\
7490da2b28SAriff Abdullah 	   43,   47,   35,   39,   59,   63,   51,   55,		\
7590da2b28SAriff Abdullah 	   11,   15,    3,    7,   27,   31,   19,   23,		\
7690da2b28SAriff Abdullah 	   86,   88,   82,   84,   94,   96,   90,   92,		\
7790da2b28SAriff Abdullah 	   70,   72,   66,   68,   78,   80,   74,   76,		\
7890da2b28SAriff Abdullah 	  127,  127,  127,  127,  127,  127,  127,  127,		\
7990da2b28SAriff Abdullah 	  127,  127,  127,  127,  127,  127,  127,  127,		\
8090da2b28SAriff Abdullah 	  128,  128,  128,  128,  128,  128,  128,  128,		\
8190da2b28SAriff Abdullah 	  128,  128,  128,  128,  128,  128,  128,  128,		\
8290da2b28SAriff Abdullah 	  123,  123,  123,  123,  124,  124,  124,  124,		\
8390da2b28SAriff Abdullah 	  121,  121,  121,  121,  122,  122,  122,  122,		\
8490da2b28SAriff Abdullah 	  126,  126,  126,  126,  126,  126,  126,  126,		\
8590da2b28SAriff Abdullah 	  125,  125,  125,  125,  125,  125,  125,  125,		\
8690da2b28SAriff Abdullah 	  148,  147,  150,  149,  144,  143,  146,  145,		\
8790da2b28SAriff Abdullah 	  156,  155,  158,  157,  152,  151,  154,  153,		\
8890da2b28SAriff Abdullah 	  138,  138,  139,  139,  136,  136,  137,  137,		\
8990da2b28SAriff Abdullah 	  142,  142,  143,  143,  140,  140,  141,  141,		\
9090da2b28SAriff Abdullah 	  213,  209,  221,  217,  197,  193,  205,  201,		\
9190da2b28SAriff Abdullah 	  245,  241,  253,  249,  229,  225,  237,  233,		\
9290da2b28SAriff Abdullah 	  170,  168,  174,  172,  162,  160,  166,  164,		\
9390da2b28SAriff Abdullah 	  186,  184,  190,  188,  178,  176,  182,  180,		\
9490da2b28SAriff Abdullah 	  129,  129,  129,  129,  129,  129,  129,  129,		\
9590da2b28SAriff Abdullah 	  129,  129,  129,  129,  129,  129,  129,  129,		\
9690da2b28SAriff Abdullah 	  128,  128,  128,  128,  128,  128,  128,  128,		\
9790da2b28SAriff Abdullah 	  128,  128,  128,  128,  128,  128,  128,  128,		\
9890da2b28SAriff Abdullah 	  133,  133,  133,  133,  132,  132,  132,  132,		\
9990da2b28SAriff Abdullah 	  135,  135,  135,  135,  134,  134,  134,  134,		\
10090da2b28SAriff Abdullah 	  130,  130,  130,  130,  130,  130,  130,  130,		\
10190da2b28SAriff Abdullah 	  131,  131,  131,  131,  131,  131,  131,  131,		\
10290da2b28SAriff Abdullah 	}
10390da2b28SAriff Abdullah 
10490da2b28SAriff Abdullah #define U8_TO_ULAW	{						\
10590da2b28SAriff Abdullah 	     0,    0,    0,    0,    0,    1,    1,    1,		\
10690da2b28SAriff Abdullah 	     1,    2,    2,    2,    2,    3,    3,    3,		\
10790da2b28SAriff Abdullah 	     3,    4,    4,    4,    4,    5,    5,    5,		\
10890da2b28SAriff Abdullah 	     5,    6,    6,    6,    6,    7,    7,    7,		\
10990da2b28SAriff Abdullah 	     7,    8,    8,    8,    8,    9,    9,    9,		\
11090da2b28SAriff Abdullah 	     9,   10,   10,   10,   10,   11,   11,   11,		\
11190da2b28SAriff Abdullah 	    11,   12,   12,   12,   12,   13,   13,   13,		\
11290da2b28SAriff Abdullah 	    13,   14,   14,   14,   14,   15,   15,   15,		\
11390da2b28SAriff Abdullah 	    15,   16,   16,   17,   17,   18,   18,   19,		\
11490da2b28SAriff Abdullah 	    19,   20,   20,   21,   21,   22,   22,   23,		\
11590da2b28SAriff Abdullah 	    23,   24,   24,   25,   25,   26,   26,   27,		\
11690da2b28SAriff Abdullah 	    27,   28,   28,   29,   29,   30,   30,   31,		\
11790da2b28SAriff Abdullah 	    31,   32,   33,   34,   35,   36,   37,   38,		\
11890da2b28SAriff Abdullah 	    39,   40,   41,   42,   43,   44,   45,   46,		\
11990da2b28SAriff Abdullah 	    47,   49,   51,   53,   55,   57,   59,   61,		\
12090da2b28SAriff Abdullah 	    63,   66,   70,   74,   78,   84,   92,  104,		\
12190da2b28SAriff Abdullah 	   254,  231,  219,  211,  205,  201,  197,  193,		\
12290da2b28SAriff Abdullah 	   190,  188,  186,  184,  182,  180,  178,  176,		\
12390da2b28SAriff Abdullah 	   175,  174,  173,  172,  171,  170,  169,  168,		\
12490da2b28SAriff Abdullah 	   167,  166,  165,  164,  163,  162,  161,  160,		\
12590da2b28SAriff Abdullah 	   159,  159,  158,  158,  157,  157,  156,  156,		\
12690da2b28SAriff Abdullah 	   155,  155,  154,  154,  153,  153,  152,  152,		\
12790da2b28SAriff Abdullah 	   151,  151,  150,  150,  149,  149,  148,  148,		\
12890da2b28SAriff Abdullah 	   147,  147,  146,  146,  145,  145,  144,  144,		\
12990da2b28SAriff Abdullah 	   143,  143,  143,  143,  142,  142,  142,  142,		\
13090da2b28SAriff Abdullah 	   141,  141,  141,  141,  140,  140,  140,  140,		\
13190da2b28SAriff Abdullah 	   139,  139,  139,  139,  138,  138,  138,  138,		\
13290da2b28SAriff Abdullah 	   137,  137,  137,  137,  136,  136,  136,  136,		\
13390da2b28SAriff Abdullah 	   135,  135,  135,  135,  134,  134,  134,  134,		\
13490da2b28SAriff Abdullah 	   133,  133,  133,  133,  132,  132,  132,  132,		\
13590da2b28SAriff Abdullah 	   131,  131,  131,  131,  130,  130,  130,  130,		\
13690da2b28SAriff Abdullah 	   129,  129,  129,  129,  128,  128,  128,  128,		\
13790da2b28SAriff Abdullah 	}
13890da2b28SAriff Abdullah 
13990da2b28SAriff Abdullah #define U8_TO_ALAW	{						\
14090da2b28SAriff Abdullah 	   42,   42,   42,   42,   42,   43,   43,   43,		\
14190da2b28SAriff Abdullah 	   43,   40,   40,   40,   40,   41,   41,   41,		\
14290da2b28SAriff Abdullah 	   41,   46,   46,   46,   46,   47,   47,   47,		\
14390da2b28SAriff Abdullah 	   47,   44,   44,   44,   44,   45,   45,   45,		\
14490da2b28SAriff Abdullah 	   45,   34,   34,   34,   34,   35,   35,   35,		\
14590da2b28SAriff Abdullah 	   35,   32,   32,   32,   32,   33,   33,   33,		\
14690da2b28SAriff Abdullah 	   33,   38,   38,   38,   38,   39,   39,   39,		\
14790da2b28SAriff Abdullah 	   39,   36,   36,   36,   36,   37,   37,   37,		\
14890da2b28SAriff Abdullah 	   37,   58,   58,   59,   59,   56,   56,   57,		\
14990da2b28SAriff Abdullah 	   57,   62,   62,   63,   63,   60,   60,   61,		\
15090da2b28SAriff Abdullah 	   61,   50,   50,   51,   51,   48,   48,   49,		\
15190da2b28SAriff Abdullah 	   49,   54,   54,   55,   55,   52,   52,   53,		\
15290da2b28SAriff Abdullah 	   53,   10,   11,    8,    9,   14,   15,   12,		\
15390da2b28SAriff Abdullah 	   13,    2,    3,    0,    1,    6,    7,    4,		\
15490da2b28SAriff Abdullah 	    5,   24,   30,   28,   18,   16,   22,   20,		\
15590da2b28SAriff Abdullah 	  106,  110,   98,  102,  122,  114,   75,   90,		\
15690da2b28SAriff Abdullah 	  213,  197,  245,  253,  229,  225,  237,  233,		\
15790da2b28SAriff Abdullah 	  149,  151,  145,  147,  157,  159,  153,  155,		\
15890da2b28SAriff Abdullah 	  133,  132,  135,  134,  129,  128,  131,  130,		\
15990da2b28SAriff Abdullah 	  141,  140,  143,  142,  137,  136,  139,  138,		\
16090da2b28SAriff Abdullah 	  181,  181,  180,  180,  183,  183,  182,  182,		\
16190da2b28SAriff Abdullah 	  177,  177,  176,  176,  179,  179,  178,  178,		\
16290da2b28SAriff Abdullah 	  189,  189,  188,  188,  191,  191,  190,  190,		\
16390da2b28SAriff Abdullah 	  185,  185,  184,  184,  187,  187,  186,  186,		\
16490da2b28SAriff Abdullah 	  165,  165,  165,  165,  164,  164,  164,  164,		\
16590da2b28SAriff Abdullah 	  167,  167,  167,  167,  166,  166,  166,  166,		\
16690da2b28SAriff Abdullah 	  161,  161,  161,  161,  160,  160,  160,  160,		\
16790da2b28SAriff Abdullah 	  163,  163,  163,  163,  162,  162,  162,  162,		\
16890da2b28SAriff Abdullah 	  173,  173,  173,  173,  172,  172,  172,  172,		\
16990da2b28SAriff Abdullah 	  175,  175,  175,  175,  174,  174,  174,  174,		\
17090da2b28SAriff Abdullah 	  169,  169,  169,  169,  168,  168,  168,  168,		\
17190da2b28SAriff Abdullah 	  171,  171,  171,  171,  170,  170,  170,  170,		\
17290da2b28SAriff Abdullah 	}
17390da2b28SAriff Abdullah 
17490da2b28SAriff Abdullah #define _G711_TO_INTPCM(t, v)	((intpcm_t)				\
17590da2b28SAriff Abdullah 				 ((int8_t)((t)[(uint8_t)(v)] ^ 0x80)))
17690da2b28SAriff Abdullah 
17790da2b28SAriff Abdullah #define _INTPCM_TO_G711(t, v)	((t)[(uint8_t)((v) ^ 0x80)])
17890da2b28SAriff Abdullah 
17990da2b28SAriff Abdullah #endif	/* !_SND_G711_H_ */
180