1e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent/*
2e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *
4e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *  Use of this source code is governed by a BSD-style license
5e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *  that can be found in the LICENSE file in the root of the source
6e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *  tree. An additional intellectual property rights grant can be found
7e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *  in the file PATENTS.  All contributing project authors may
8e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *  be found in the AUTHORS file in the root of the source tree.
9e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent */
10e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent
11e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#ifndef WEBRTC_MODULES_AUDIO_PROCESSING_MAIN_SOURCE_SPLITTING_FILTER_H_
12e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#define WEBRTC_MODULES_AUDIO_PROCESSING_MAIN_SOURCE_SPLITTING_FILTER_H_
13e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent
14e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#include "typedefs.h"
15e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#include "signal_processing_library.h"
16e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent
17e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentnamespace webrtc {
18e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent/*
19e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * SplittingFilterbank_analysisQMF(...)
20e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *
21e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * Splits a super-wb signal into two subbands: 0-8 kHz and 8-16 kHz.
22e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *
23e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * Input:
24e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *    - in_data  : super-wb audio signal
25e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *
26e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * Input & Output:
27e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *    - filt_state1: Filter state for first all-pass filter
28e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *    - filt_state2: Filter state for second all-pass filter
29e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *
30e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * Output:
31e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *    - low_band : The signal from the 0-4 kHz band
32e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *    - high_band  : The signal from the 4-8 kHz band
33e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent */
34e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentvoid SplittingFilterAnalysis(const WebRtc_Word16* in_data,
35e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent                             WebRtc_Word16* low_band,
36e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent                             WebRtc_Word16* high_band,
37e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent                             WebRtc_Word32* filt_state1,
38e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent                             WebRtc_Word32* filt_state2);
39e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent
40e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent/*
41e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * SplittingFilterbank_synthesisQMF(...)
42e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *
43e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * Combines the two subbands (0-8 and 8-16 kHz) into a super-wb signal.
44e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *
45e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * Input:
46e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *    - low_band : The signal with the 0-8 kHz band
47e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *    - high_band  : The signal with the 8-16 kHz band
48e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *
49e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * Input & Output:
50e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *    - filt_state1: Filter state for first all-pass filter
51e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *    - filt_state2: Filter state for second all-pass filter
52e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *
53e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * Output:
54e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent *    - out_data : super-wb speech signal
55e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent */
56e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentvoid SplittingFilterSynthesis(const WebRtc_Word16* low_band,
57e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent                              const WebRtc_Word16* high_band,
58e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent                              WebRtc_Word16* out_data,
59e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent                              WebRtc_Word32* filt_state1,
60e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent                              WebRtc_Word32* filt_state2);
61e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent}  // namespace webrtc
62e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent
63e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#endif  // WEBRTC_MODULES_AUDIO_PROCESSING_MAIN_SOURCE_SPLITTING_FILTER_H_
64