~ubuntu-branches/ubuntu/wily/sflphone/wily

« back to all changes in this revision

Viewing changes to daemon/libs/pjproject-2.2.1/third_party/gsm/src/code.c

  • Committer: Package Import Robot
  • Author(s): Francois Marier, Francois Marier, Mark Purcell
  • Date: 2014-10-18 15:08:50 UTC
  • mfrom: (1.1.12)
  • mto: This revision was merged to the branch mainline in revision 29.
  • Revision ID: package-import@ubuntu.com-20141018150850-2exfk34ckb15pcwi
Tags: 1.4.1-0.1
[ Francois Marier ]
* Non-maintainer upload
* New upstream release (closes: #759576, #741130)
  - debian/rules +PJPROJECT_VERSION := 2.2.1
  - add upstream patch to fix broken TLS support
  - add patch to fix pjproject regression

[ Mark Purcell ]
* Build-Depends:
  - sflphone-daemon + libavformat-dev, libavcodec-dev, libswscale-dev,
  libavdevice-dev, libavutil-dev
  - sflphone-gnome + libclutter-gtk-1.0-dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
 
3
 * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for
 
4
 * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
 
5
 */
 
6
 
 
7
/* $Header: /tmp_amd/presto/export/kbs/jutta/src/gsm/RCS/code.c,v 1.3 1996/07/02 09:59:05 jutta Exp $ */
 
8
 
 
9
#include        "config.h"
 
10
 
 
11
 
 
12
#ifdef  HAS_STDLIB_H
 
13
#include        <stdlib.h>
 
14
#else
 
15
#       include "proto.h"
 
16
        extern char     * memcpy P((char *, char *, int));
 
17
#endif
 
18
 
 
19
#include        "private.h"
 
20
#include        "gsm.h"
 
21
#include        "proto.h"
 
22
 
 
23
/* 
 
24
 *  4.2 FIXED POINT IMPLEMENTATION OF THE RPE-LTP CODER 
 
25
 */
 
26
 
 
27
void Gsm_Coder P8((S,s,LARc,Nc,bc,Mc,xmaxc,xMc),
 
28
 
 
29
        struct gsm_state        * S,
 
30
 
 
31
        word    * s,    /* [0..159] samples                     IN      */
 
32
 
 
33
/*
 
34
 * The RPE-LTD coder works on a frame by frame basis.  The length of
 
35
 * the frame is equal to 160 samples.  Some computations are done
 
36
 * once per frame to produce at the output of the coder the
 
37
 * LARc[1..8] parameters which are the coded LAR coefficients and 
 
38
 * also to realize the inverse filtering operation for the entire
 
39
 * frame (160 samples of signal d[0..159]).  These parts produce at
 
40
 * the output of the coder:
 
41
 */
 
42
 
 
43
        word    * LARc, /* [0..7] LAR coefficients              OUT     */
 
44
 
 
45
/*
 
46
 * Procedure 4.2.11 to 4.2.18 are to be executed four times per
 
47
 * frame.  That means once for each sub-segment RPE-LTP analysis of
 
48
 * 40 samples.  These parts produce at the output of the coder:
 
49
 */
 
50
 
 
51
        word    * Nc,   /* [0..3] LTP lag                       OUT     */
 
52
        word    * bc,   /* [0..3] coded LTP gain                OUT     */
 
53
        word    * Mc,   /* [0..3] RPE grid selection            OUT     */
 
54
        word    * xmaxc,/* [0..3] Coded maximum amplitude       OUT     */
 
55
        word    * xMc   /* [13*4] normalized RPE samples        OUT     */
 
56
)
 
57
{
 
58
        int     k;
 
59
        word    * dp  = S->dp0 + 120;   /* [ -120...-1 ] */
 
60
        word    * dpp = dp;             /* [ 0...39 ]    */
 
61
 
 
62
        word    so[160];
 
63
 
 
64
        Gsm_Preprocess                  (S, s, so);
 
65
        Gsm_LPC_Analysis                (S, so, LARc);
 
66
        Gsm_Short_Term_Analysis_Filter  (S, LARc, so);
 
67
 
 
68
        for (k = 0; k <= 3; k++, xMc += 13) {
 
69
 
 
70
                Gsm_Long_Term_Predictor ( S,
 
71
                                         so+k*40, /* d      [0..39] IN  */
 
72
                                         dp,      /* dp  [-120..-1] IN  */
 
73
                                        S->e + 5, /* e      [0..39] OUT */
 
74
                                        dpp,      /* dpp    [0..39] OUT */
 
75
                                         Nc++,
 
76
                                         bc++);
 
77
 
 
78
                Gsm_RPE_Encoding        ( S,
 
79
                                        S->e + 5,/* e     ][0..39][ IN/OUT */
 
80
                                          xmaxc++, Mc++, xMc );
 
81
                /*
 
82
                 * Gsm_Update_of_reconstructed_short_time_residual_signal
 
83
                 *                      ( dpp, S->e + 5, dp );
 
84
                 */
 
85
 
 
86
                { register int i;
 
87
                  register longword ltmp;
 
88
                  for (i = 0; i <= 39; i++)
 
89
                        dp[ i ] = GSM_ADD( S->e[5 + i], dpp[i] );
 
90
                }
 
91
                dp  += 40;
 
92
                dpp += 40;
 
93
 
 
94
        }
 
95
        (void)memcpy( (char *)S->dp0, (char *)(S->dp0 + 160),
 
96
                120 * sizeof(*S->dp0) );
 
97
}