blob: a64f01b2565bc0e53a5f78439205a08ee853a19c [file] [log] [blame]
henrik.lundin@webrtc.orgd94659d2013-01-29 12:09:21 +00001/*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#include "webrtc/modules/audio_coding/neteq4/interface/neteq.h"
12
henrik.lundin@webrtc.orgd9faa462014-01-14 10:18:45 +000013#include "webrtc/modules/audio_coding/neteq4/accelerate.h"
henrik.lundin@webrtc.orgd94659d2013-01-29 12:09:21 +000014#include "webrtc/modules/audio_coding/neteq4/buffer_level_filter.h"
15#include "webrtc/modules/audio_coding/neteq4/decoder_database.h"
16#include "webrtc/modules/audio_coding/neteq4/delay_manager.h"
17#include "webrtc/modules/audio_coding/neteq4/delay_peak_detector.h"
18#include "webrtc/modules/audio_coding/neteq4/dtmf_buffer.h"
19#include "webrtc/modules/audio_coding/neteq4/dtmf_tone_generator.h"
henrik.lundin@webrtc.orgd9faa462014-01-14 10:18:45 +000020#include "webrtc/modules/audio_coding/neteq4/expand.h"
henrik.lundin@webrtc.orgd94659d2013-01-29 12:09:21 +000021#include "webrtc/modules/audio_coding/neteq4/neteq_impl.h"
22#include "webrtc/modules/audio_coding/neteq4/packet_buffer.h"
23#include "webrtc/modules/audio_coding/neteq4/payload_splitter.h"
henrik.lundin@webrtc.orgd9faa462014-01-14 10:18:45 +000024#include "webrtc/modules/audio_coding/neteq4/preemptive_expand.h"
henrik.lundin@webrtc.orgd94659d2013-01-29 12:09:21 +000025#include "webrtc/modules/audio_coding/neteq4/timestamp_scaler.h"
26
27namespace webrtc {
28
29// Creates all classes needed and inject them into a new NetEqImpl object.
30// Return the new object.
31NetEq* NetEq::Create(int sample_rate_hz) {
32 BufferLevelFilter* buffer_level_filter = new BufferLevelFilter;
33 DecoderDatabase* decoder_database = new DecoderDatabase;
34 DelayPeakDetector* delay_peak_detector = new DelayPeakDetector;
35 DelayManager* delay_manager = new DelayManager(kMaxNumPacketsInBuffer,
36 delay_peak_detector);
37 DtmfBuffer* dtmf_buffer = new DtmfBuffer(sample_rate_hz);
38 DtmfToneGenerator* dtmf_tone_generator = new DtmfToneGenerator;
39 PacketBuffer* packet_buffer = new PacketBuffer(kMaxNumPacketsInBuffer,
40 kMaxBytesInBuffer);
41 PayloadSplitter* payload_splitter = new PayloadSplitter;
42 TimestampScaler* timestamp_scaler = new TimestampScaler(*decoder_database);
henrik.lundin@webrtc.orgd9faa462014-01-14 10:18:45 +000043 AccelerateFactory* accelerate_factory = new AccelerateFactory;
44 ExpandFactory* expand_factory = new ExpandFactory;
45 PreemptiveExpandFactory* preemptive_expand_factory =
46 new PreemptiveExpandFactory;
henrik.lundin@webrtc.orgd94659d2013-01-29 12:09:21 +000047 return new NetEqImpl(sample_rate_hz,
48 buffer_level_filter,
49 decoder_database,
50 delay_manager,
51 delay_peak_detector,
52 dtmf_buffer,
53 dtmf_tone_generator,
54 packet_buffer,
55 payload_splitter,
henrik.lundin@webrtc.orgd9faa462014-01-14 10:18:45 +000056 timestamp_scaler,
57 accelerate_factory,
58 expand_factory,
59 preemptive_expand_factory);
henrik.lundin@webrtc.orgd94659d2013-01-29 12:09:21 +000060}
61
62} // namespace webrtc