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