summaryrefslogtreecommitdiffstats
path: root/libSBRenc/src/tran_det.h
blob: 3430b4478d9c4f285bf1e23dedcc802ef9fde8c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/****************************************************************************

                     (C) Copyright Fraunhofer IIS (2004)
                               All Rights Reserved

    Please be advised that this software and/or program delivery is
    Confidential Information of Fraunhofer and subject to and covered by the

    Fraunhofer IIS Software Evaluation Agreement
    between Google Inc. and  Fraunhofer
    effective and in full force since March 1, 2012.

    You may use this software and/or program only under the terms and
    conditions described in the above mentioned Fraunhofer IIS Software
    Evaluation Agreement. Any other and/or further use requires a separate agreement.


   This software and/or program is protected by copyright law and international
   treaties. Any reproduction or distribution of this software and/or program,
   or any portion of it, may result in severe civil and criminal penalties, and
   will be prosecuted to the maximum extent possible under law.

 $Id$

*******************************************************************************/
/*!
  \file
  \brief  Transient detector prototypes $Revision: 36847 $
*/
#ifndef __TRAN_DET_H
#define __TRAN_DET_H

#include "sbr_encoder.h"
#include "sbr_def.h"

typedef struct
{
  FIXP_DBL  transients[QMF_MAX_TIME_SLOTS+(QMF_MAX_TIME_SLOTS/2)];
  FIXP_DBL  thresholds[QMF_CHANNELS];
  FIXP_DBL  tran_thr;              /* Master threshold for transient signals */
  FIXP_DBL  split_thr;             /* Threshold for splitting FIXFIX-frames into 2 env */
  FIXP_DBL  prevLowBandEnergy;     /* Energy of low band */
  FIXP_DBL  prevHighBandEnergy;    /* Energy of high band */
  INT    tran_fc;                  /* Number of lowband subbands to discard  */
  INT    no_cols;
  INT    no_rows;
  INT    mode;

  int    frameShift;
  int    tran_off;                 /* Offset for reading energy values. */
}
SBR_TRANSIENT_DETECTOR;


typedef SBR_TRANSIENT_DETECTOR *HANDLE_SBR_TRANSIENT_DETECTOR;

void
FDKsbrEnc_transientDetect(HANDLE_SBR_TRANSIENT_DETECTOR h_sbrTransientDetector,
                          FIXP_DBL **Energies,
                          INT *scaleEnergies,
                          UCHAR *tran_vector,
                          int YBufferWriteOffset,
                          int YBufferSzShift,
                          int timeStep,
                          int frameMiddleBorder);

int
FDKsbrEnc_InitSbrTransientDetector (HANDLE_SBR_TRANSIENT_DETECTOR h_sbrTransientDetector,
                            INT   frameSize,
                            INT   sampleFreq,
                            sbrConfigurationPtr params,
                            int   tran_fc,
                            int   no_cols,
                            int   no_rows,
                            int   YBufferWriteOffset,
                            int   YBufferSzShift,
                            int   frameShift,
                            int   tran_off);

void
FDKsbrEnc_frameSplitter(FIXP_DBL **Energies,
                        INT *scaleEnergies,
                        HANDLE_SBR_TRANSIENT_DETECTOR h_sbrTransientDetector,
                        UCHAR *freqBandTable,
                        UCHAR *tran_vector,
                        int YBufferWriteOffset,
                        int YBufferSzShift,
                        int nSfb,
                        int timeStep,
                        int no_cols);

#endif