The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/sound/pcm/g711.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * Copyright (c) 2008-2009 Ariff Abdullah <ariff@FreeBSD.org>
    3  * All rights reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  * 1. Redistributions of source code must retain the above copyright
    9  *    notice, this list of conditions and the following disclaimer.
   10  * 2. Redistributions in binary form must reproduce the above copyright
   11  *    notice, this list of conditions and the following disclaimer in the
   12  *    documentation and/or other materials provided with the distribution.
   13  *
   14  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   15  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   17  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   18  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   19  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   20  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   21  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   22  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   23  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   24  * SUCH DAMAGE.
   25  *
   26  * $FreeBSD: releng/8.0/sys/dev/sound/pcm/g711.h 193640 2009-06-07 19:12:08Z ariff $
   27  */
   28 
   29 #ifndef _SND_G711_H_
   30 #define _SND_G711_H_
   31 
   32 #define G711_TABLE_SIZE         256
   33 
   34 #define ULAW_TO_U8      {                                               \
   35             3,    7,   11,   15,   19,   23,   27,   31,                \
   36            35,   39,   43,   47,   51,   55,   59,   63,                \
   37            66,   68,   70,   72,   74,   76,   78,   80,                \
   38            82,   84,   86,   88,   90,   92,   94,   96,                \
   39            98,   99,  100,  101,  102,  103,  104,  105,                \
   40           106,  107,  108,  109,  110,  111,  112,  113,                \
   41           113,  114,  114,  115,  115,  116,  116,  117,                \
   42           117,  118,  118,  119,  119,  120,  120,  121,                \
   43           121,  121,  122,  122,  122,  122,  123,  123,                \
   44           123,  123,  124,  124,  124,  124,  125,  125,                \
   45           125,  125,  125,  125,  126,  126,  126,  126,                \
   46           126,  126,  126,  126,  127,  127,  127,  127,                \
   47           127,  127,  127,  127,  127,  127,  127,  127,                \
   48           128,  128,  128,  128,  128,  128,  128,  128,                \
   49           128,  128,  128,  128,  128,  128,  128,  128,                \
   50           128,  128,  128,  128,  128,  128,  128,  128,                \
   51           253,  249,  245,  241,  237,  233,  229,  225,                \
   52           221,  217,  213,  209,  205,  201,  197,  193,                \
   53           190,  188,  186,  184,  182,  180,  178,  176,                \
   54           174,  172,  170,  168,  166,  164,  162,  160,                \
   55           158,  157,  156,  155,  154,  153,  152,  151,                \
   56           150,  149,  148,  147,  146,  145,  144,  143,                \
   57           143,  142,  142,  141,  141,  140,  140,  139,                \
   58           139,  138,  138,  137,  137,  136,  136,  135,                \
   59           135,  135,  134,  134,  134,  134,  133,  133,                \
   60           133,  133,  132,  132,  132,  132,  131,  131,                \
   61           131,  131,  131,  131,  130,  130,  130,  130,                \
   62           130,  130,  130,  130,  129,  129,  129,  129,                \
   63           129,  129,  129,  129,  129,  129,  129,  129,                \
   64           128,  128,  128,  128,  128,  128,  128,  128,                \
   65           128,  128,  128,  128,  128,  128,  128,  128,                \
   66           128,  128,  128,  128,  128,  128,  128,  128,                \
   67         }
   68 
   69 #define ALAW_TO_U8      {                                               \
   70           108,  109,  106,  107,  112,  113,  110,  111,                \
   71           100,  101,   98,   99,  104,  105,  102,  103,                \
   72           118,  118,  117,  117,  120,  120,  119,  119,                \
   73           114,  114,  113,  113,  116,  116,  115,  115,                \
   74            43,   47,   35,   39,   59,   63,   51,   55,                \
   75            11,   15,    3,    7,   27,   31,   19,   23,                \
   76            86,   88,   82,   84,   94,   96,   90,   92,                \
   77            70,   72,   66,   68,   78,   80,   74,   76,                \
   78           127,  127,  127,  127,  127,  127,  127,  127,                \
   79           127,  127,  127,  127,  127,  127,  127,  127,                \
   80           128,  128,  128,  128,  128,  128,  128,  128,                \
   81           128,  128,  128,  128,  128,  128,  128,  128,                \
   82           123,  123,  123,  123,  124,  124,  124,  124,                \
   83           121,  121,  121,  121,  122,  122,  122,  122,                \
   84           126,  126,  126,  126,  126,  126,  126,  126,                \
   85           125,  125,  125,  125,  125,  125,  125,  125,                \
   86           148,  147,  150,  149,  144,  143,  146,  145,                \
   87           156,  155,  158,  157,  152,  151,  154,  153,                \
   88           138,  138,  139,  139,  136,  136,  137,  137,                \
   89           142,  142,  143,  143,  140,  140,  141,  141,                \
   90           213,  209,  221,  217,  197,  193,  205,  201,                \
   91           245,  241,  253,  249,  229,  225,  237,  233,                \
   92           170,  168,  174,  172,  162,  160,  166,  164,                \
   93           186,  184,  190,  188,  178,  176,  182,  180,                \
   94           129,  129,  129,  129,  129,  129,  129,  129,                \
   95           129,  129,  129,  129,  129,  129,  129,  129,                \
   96           128,  128,  128,  128,  128,  128,  128,  128,                \
   97           128,  128,  128,  128,  128,  128,  128,  128,                \
   98           133,  133,  133,  133,  132,  132,  132,  132,                \
   99           135,  135,  135,  135,  134,  134,  134,  134,                \
  100           130,  130,  130,  130,  130,  130,  130,  130,                \
  101           131,  131,  131,  131,  131,  131,  131,  131,                \
  102         }
  103 
  104 #define U8_TO_ULAW      {                                               \
  105              0,    0,    0,    0,    0,    1,    1,    1,               \
  106              1,    2,    2,    2,    2,    3,    3,    3,               \
  107              3,    4,    4,    4,    4,    5,    5,    5,               \
  108              5,    6,    6,    6,    6,    7,    7,    7,               \
  109              7,    8,    8,    8,    8,    9,    9,    9,               \
  110              9,   10,   10,   10,   10,   11,   11,   11,               \
  111             11,   12,   12,   12,   12,   13,   13,   13,               \
  112             13,   14,   14,   14,   14,   15,   15,   15,               \
  113             15,   16,   16,   17,   17,   18,   18,   19,               \
  114             19,   20,   20,   21,   21,   22,   22,   23,               \
  115             23,   24,   24,   25,   25,   26,   26,   27,               \
  116             27,   28,   28,   29,   29,   30,   30,   31,               \
  117             31,   32,   33,   34,   35,   36,   37,   38,               \
  118             39,   40,   41,   42,   43,   44,   45,   46,               \
  119             47,   49,   51,   53,   55,   57,   59,   61,               \
  120             63,   66,   70,   74,   78,   84,   92,  104,               \
  121            254,  231,  219,  211,  205,  201,  197,  193,               \
  122            190,  188,  186,  184,  182,  180,  178,  176,               \
  123            175,  174,  173,  172,  171,  170,  169,  168,               \
  124            167,  166,  165,  164,  163,  162,  161,  160,               \
  125            159,  159,  158,  158,  157,  157,  156,  156,               \
  126            155,  155,  154,  154,  153,  153,  152,  152,               \
  127            151,  151,  150,  150,  149,  149,  148,  148,               \
  128            147,  147,  146,  146,  145,  145,  144,  144,               \
  129            143,  143,  143,  143,  142,  142,  142,  142,               \
  130            141,  141,  141,  141,  140,  140,  140,  140,               \
  131            139,  139,  139,  139,  138,  138,  138,  138,               \
  132            137,  137,  137,  137,  136,  136,  136,  136,               \
  133            135,  135,  135,  135,  134,  134,  134,  134,               \
  134            133,  133,  133,  133,  132,  132,  132,  132,               \
  135            131,  131,  131,  131,  130,  130,  130,  130,               \
  136            129,  129,  129,  129,  128,  128,  128,  128,               \
  137         }
  138 
  139 #define U8_TO_ALAW      {                                               \
  140            42,   42,   42,   42,   42,   43,   43,   43,                \
  141            43,   40,   40,   40,   40,   41,   41,   41,                \
  142            41,   46,   46,   46,   46,   47,   47,   47,                \
  143            47,   44,   44,   44,   44,   45,   45,   45,                \
  144            45,   34,   34,   34,   34,   35,   35,   35,                \
  145            35,   32,   32,   32,   32,   33,   33,   33,                \
  146            33,   38,   38,   38,   38,   39,   39,   39,                \
  147            39,   36,   36,   36,   36,   37,   37,   37,                \
  148            37,   58,   58,   59,   59,   56,   56,   57,                \
  149            57,   62,   62,   63,   63,   60,   60,   61,                \
  150            61,   50,   50,   51,   51,   48,   48,   49,                \
  151            49,   54,   54,   55,   55,   52,   52,   53,                \
  152            53,   10,   11,    8,    9,   14,   15,   12,                \
  153            13,    2,    3,    0,    1,    6,    7,    4,                \
  154             5,   24,   30,   28,   18,   16,   22,   20,                \
  155           106,  110,   98,  102,  122,  114,   75,   90,                \
  156           213,  197,  245,  253,  229,  225,  237,  233,                \
  157           149,  151,  145,  147,  157,  159,  153,  155,                \
  158           133,  132,  135,  134,  129,  128,  131,  130,                \
  159           141,  140,  143,  142,  137,  136,  139,  138,                \
  160           181,  181,  180,  180,  183,  183,  182,  182,                \
  161           177,  177,  176,  176,  179,  179,  178,  178,                \
  162           189,  189,  188,  188,  191,  191,  190,  190,                \
  163           185,  185,  184,  184,  187,  187,  186,  186,                \
  164           165,  165,  165,  165,  164,  164,  164,  164,                \
  165           167,  167,  167,  167,  166,  166,  166,  166,                \
  166           161,  161,  161,  161,  160,  160,  160,  160,                \
  167           163,  163,  163,  163,  162,  162,  162,  162,                \
  168           173,  173,  173,  173,  172,  172,  172,  172,                \
  169           175,  175,  175,  175,  174,  174,  174,  174,                \
  170           169,  169,  169,  169,  168,  168,  168,  168,                \
  171           171,  171,  171,  171,  170,  170,  170,  170,                \
  172         }
  173 
  174 
  175 #define _G711_TO_INTPCM(t, v)   ((intpcm_t)                             \
  176                                  ((int8_t)((t)[(uint8_t)(v)] ^ 0x80)))
  177 
  178 #define _INTPCM_TO_G711(t, v)   ((t)[(uint8_t)((v) ^ 0x80)])
  179 
  180 
  181 #define G711_DECLARE_TABLE(t)                                           \
  182 static const struct {                                                   \
  183         const uint8_t ulaw_to_u8[G711_TABLE_SIZE];                      \
  184         const uint8_t alaw_to_u8[G711_TABLE_SIZE];                      \
  185         const uint8_t u8_to_ulaw[G711_TABLE_SIZE];                      \
  186         const uint8_t u8_to_alaw[G711_TABLE_SIZE];                      \
  187 } t = {                                                                 \
  188         ULAW_TO_U8, ALAW_TO_U8,                                         \
  189         U8_TO_ULAW, U8_TO_ALAW                                          \
  190 }
  191 
  192 #define G711_DECLARE_OP(t)                                              \
  193 static __inline intpcm_t                                                \
  194 pcm_read_ulaw(uint8_t v)                                                \
  195 {                                                                       \
  196                                                                         \
  197         return (_G711_TO_INTPCM((t).ulaw_to_u8, v));                    \
  198 }                                                                       \
  199                                                                         \
  200 static __inline intpcm_t                                                \
  201 pcm_read_alaw(uint8_t v)                                                \
  202 {                                                                       \
  203                                                                         \
  204         return (_G711_TO_INTPCM((t).alaw_to_u8, v));                    \
  205 }                                                                       \
  206                                                                         \
  207 static __inline void                                                    \
  208 pcm_write_ulaw(uint8_t *dst, intpcm_t v)                                \
  209 {                                                                       \
  210                                                                         \
  211         *dst = _INTPCM_TO_G711((t).u8_to_ulaw, v);                      \
  212 }                                                                       \
  213                                                                         \
  214 static __inline void                                                    \
  215 pcm_write_alaw(uint8_t *dst, intpcm_t v)                                \
  216 {                                                                       \
  217                                                                         \
  218         *dst = _INTPCM_TO_G711((t).u8_to_alaw, v);                      \
  219 }
  220 
  221 #define G711_DECLARE(t)                                                 \
  222         G711_DECLARE_TABLE(t);                                          \
  223         G711_DECLARE_OP(t)
  224 
  225 #endif  /* !_SND_G711_H_ */

Cache object: 465d1b9c8147aa829c6ec1c6383f7f1b


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.