spandsp  1.99.0
private/g722.h
Go to the documentation of this file.
1 /*
2  * SpanDSP - a series of DSP components for telephony
3  *
4  * private/g722.h - The ITU G.722 codec.
5  *
6  * Written by Steve Underwood <steveu@coppice.org>
7  *
8  * Copyright (C) 2005 Steve Underwood
9  *
10  * All rights reserved.
11  *
12  * This program is free software; you can redistribute it and/or modify
13  * it under the terms of the GNU Lesser General Public License version 2.1,
14  * as published by the Free Software Foundation.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Lesser General Public License for more details.
20  *
21  * You should have received a copy of the GNU Lesser General Public
22  * License along with this program; if not, write to the Free Software
23  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24  */
25 
26 /*! \file */
27 
28 #if !defined(_SPANDSP_PRIVATE_G722_H_)
29 #define _SPANDSP_PRIVATE_G722_H_
30 
31 /*! The per band parameters for both encoding and decoding G.722 */
32 typedef struct
33 {
34  int16_t nb;
35  int16_t det;
36  int16_t s;
37  int16_t sz;
38  int16_t r;
39  int16_t p[2];
40  int16_t a[2];
41  int16_t b[6];
42  int16_t d[7];
43 } g722_band_t;
44 
45 /*!
46  G.722 encode state
47  */
49 {
50  /*! True if operating in the special ITU test mode, with the band split filters
51  disabled. */
53  /*! True if the G.722 data is packed */
54  bool packed;
55  /*! True if encoding from 8k samples/second */
56  bool eight_k;
57  /*! 6 for 48000kbps, 7 for 56000kbps, or 8 for 64000kbps. */
59 
60  /*! Signal history for the QMF */
61  int16_t x[12];
62  int16_t y[12];
63  int ptr;
64 
65  g722_band_t band[2];
66 
67  uint32_t out_buffer;
68  int out_bits;
69 };
70 
71 /*!
72  G.722 decode state
73  */
75 {
76  /*! True if operating in the special ITU test mode, with the band split filters
77  disabled. */
79  /*! True if the G.722 data is packed */
80  bool packed;
81  /*! True if decoding to 8k samples/second */
82  bool eight_k;
83  /*! 6 for 48000kbps, 7 for 56000kbps, or 8 for 64000kbps. */
85 
86  /*! Signal history for the QMF */
87  int16_t x[12];
88  int16_t y[12];
89  int ptr;
90 
91  g722_band_t band[2];
92 
93  uint32_t in_buffer;
94  int in_bits;
95 };
96 
97 #endif
98 /*- End of file ------------------------------------------------------------*/
bool eight_k
Definition: private/g722.h:56
int16_t x[12]
Definition: private/g722.h:61
Definition: private/g722.h:74
Definition: private/g722.h:48
bool packed
Definition: private/g722.h:80
bool packed
Definition: private/g722.h:54
bool eight_k
Definition: private/g722.h:82
Definition: private/g722.h:32
int16_t x[12]
Definition: private/g722.h:87
int bits_per_sample
Definition: private/g722.h:84
int bits_per_sample
Definition: private/g722.h:58
bool itu_test_mode
Definition: private/g722.h:52
bool itu_test_mode
Definition: private/g722.h:78