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