Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(110)

Side by Side Diff: webrtc/modules/audio_coding/neteq/tools/audio_loop.h

Issue 1418423010: Pass audio to AudioEncoder::Encode() in an ArrayView (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 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 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 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #ifndef WEBRTC_MODULES_AUDIO_CODING_NETEQ_TOOLS_AUDIO_LOOP_H_ 11 #ifndef WEBRTC_MODULES_AUDIO_CODING_NETEQ_TOOLS_AUDIO_LOOP_H_
12 #define WEBRTC_MODULES_AUDIO_CODING_NETEQ_TOOLS_AUDIO_LOOP_H_ 12 #define WEBRTC_MODULES_AUDIO_CODING_NETEQ_TOOLS_AUDIO_LOOP_H_
13 13
14 #include <string> 14 #include <string>
15 15
16 #include "webrtc/base/array_view.h"
16 #include "webrtc/base/constructormagic.h" 17 #include "webrtc/base/constructormagic.h"
17 #include "webrtc/base/scoped_ptr.h" 18 #include "webrtc/base/scoped_ptr.h"
18 #include "webrtc/typedefs.h" 19 #include "webrtc/typedefs.h"
19 20
20 namespace webrtc { 21 namespace webrtc {
21 namespace test { 22 namespace test {
22 23
23 // Class serving as an infinite source of audio, realized by looping an audio 24 // Class serving as an infinite source of audio, realized by looping an audio
24 // clip. 25 // clip.
25 class AudioLoop { 26 class AudioLoop {
26 public: 27 public:
27 AudioLoop() 28 AudioLoop()
28 : next_index_(0), 29 : next_index_(0),
29 loop_length_samples_(0), 30 loop_length_samples_(0),
30 block_length_samples_(0) { 31 block_length_samples_(0) {
31 } 32 }
32 33
33 virtual ~AudioLoop() {} 34 virtual ~AudioLoop() {}
34 35
35 // Initializes the AudioLoop by reading from |file_name|. The loop will be no 36 // Initializes the AudioLoop by reading from |file_name|. The loop will be no
36 // longer than |max_loop_length_samples|, if the length of the file is 37 // longer than |max_loop_length_samples|, if the length of the file is
37 // greater. Otherwise, the loop length is the same as the file length. 38 // greater. Otherwise, the loop length is the same as the file length.
38 // The audio will be delivered in blocks of |block_length_samples|. 39 // The audio will be delivered in blocks of |block_length_samples|.
39 // Returns false if the initialization failed, otherwise true. 40 // Returns false if the initialization failed, otherwise true.
40 bool Init(const std::string file_name, size_t max_loop_length_samples, 41 bool Init(const std::string file_name, size_t max_loop_length_samples,
41 size_t block_length_samples); 42 size_t block_length_samples);
42 43
43 // Returns a pointer to the next block of audio. The number given as 44 // Returns a (pointer,size) pair for the next block of audio. The size is
44 // |block_length_samples| to the Init() function determines how many samples 45 // equal to the |block_length_samples| Init() argument.
45 // that can be safely read from the pointer. 46 rtc::ArrayView<const int16_t> GetNextBlock();
46 const int16_t* GetNextBlock();
47 47
48 private: 48 private:
49 size_t next_index_; 49 size_t next_index_;
50 size_t loop_length_samples_; 50 size_t loop_length_samples_;
51 size_t block_length_samples_; 51 size_t block_length_samples_;
52 rtc::scoped_ptr<int16_t[]> audio_array_; 52 rtc::scoped_ptr<int16_t[]> audio_array_;
53 53
54 RTC_DISALLOW_COPY_AND_ASSIGN(AudioLoop); 54 RTC_DISALLOW_COPY_AND_ASSIGN(AudioLoop);
55 }; 55 };
56 56
57 } // namespace test 57 } // namespace test
58 } // namespace webrtc 58 } // namespace webrtc
59 #endif // WEBRTC_MODULES_AUDIO_CODING_NETEQ_TOOLS_AUDIO_LOOP_H_ 59 #endif // WEBRTC_MODULES_AUDIO_CODING_NETEQ_TOOLS_AUDIO_LOOP_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698