Reason for revert: Can reland it if backwards compatible API is kept. Original issue's description: > Revert of Enable cpplint and fix cpplint errors in webrtc/*audio (patchset #4 id:180001 of https://codereview.webrtc.org/2683033004/ ) > > Reason for revert: > The API change in audio/utility/audio_frame_operations.h caused breakage. Need to keep backward-compatible API. > > Original issue's description: > > Enable cpplint and fix cpplint errors in webrtc/*audio > > > > Change usage accordingly throughout the codebase > > > > BUG=webrtc:5268 > > > > TESTED=Fixed issues reported by: > > find webrtc/*audio -type f -name *.cc -o -name *.h | xargs cpplint.py > > > > Review-Url: https://codereview.webrtc.org/2683033004 > > Cr-Commit-Position: refs/heads/master@{#17133} > > Committed:aebe55ca6c> > TBR=henrika@webrtc.org,henrik.lundin@webrtc.org,kwiberg@webrtc.org > # Skipping CQ checks because original CL landed less than 1 days ago. > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=webrtc:5268 > > Review-Url: https://codereview.webrtc.org/2739143002 > Cr-Commit-Position: refs/heads/master@{#17138} > Committed:e47c1d3ca1TBR=henrika@webrtc.org,henrik.lundin@webrtc.org,kwiberg@webrtc.org # Skipping CQ checks because original CL landed less than 1 days ago. BUG=webrtc:5268 Review-Url: https://codereview.webrtc.org/2739073003 Cr-Commit-Position: refs/heads/master@{#17144}
93 lines
2.3 KiB
C++
93 lines
2.3 KiB
C++
/*
|
|
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
|
|
/*
|
|
* A wrapper for resampling a numerous amount of sampling combinations.
|
|
*/
|
|
|
|
#ifndef WEBRTC_COMMON_AUDIO_RESAMPLER_INCLUDE_RESAMPLER_H_
|
|
#define WEBRTC_COMMON_AUDIO_RESAMPLER_INCLUDE_RESAMPLER_H_
|
|
|
|
#include <stddef.h>
|
|
|
|
#include "webrtc/typedefs.h"
|
|
|
|
namespace webrtc {
|
|
|
|
// All methods return 0 on success and -1 on failure.
|
|
class Resampler {
|
|
public:
|
|
Resampler();
|
|
Resampler(int inFreq, int outFreq, size_t num_channels);
|
|
~Resampler();
|
|
|
|
// Reset all states
|
|
int Reset(int inFreq, int outFreq, size_t num_channels);
|
|
|
|
// Reset all states if any parameter has changed
|
|
int ResetIfNeeded(int inFreq, int outFreq, size_t num_channels);
|
|
|
|
// Resample samplesIn to samplesOut.
|
|
int Push(const int16_t* samplesIn, size_t lengthIn, int16_t* samplesOut,
|
|
size_t maxLen, size_t& outLen); // NOLINT: to avoid changing APIs
|
|
|
|
private:
|
|
enum ResamplerMode {
|
|
kResamplerMode1To1,
|
|
kResamplerMode1To2,
|
|
kResamplerMode1To3,
|
|
kResamplerMode1To4,
|
|
kResamplerMode1To6,
|
|
kResamplerMode1To12,
|
|
kResamplerMode2To3,
|
|
kResamplerMode2To11,
|
|
kResamplerMode4To11,
|
|
kResamplerMode8To11,
|
|
kResamplerMode11To16,
|
|
kResamplerMode11To32,
|
|
kResamplerMode2To1,
|
|
kResamplerMode3To1,
|
|
kResamplerMode4To1,
|
|
kResamplerMode6To1,
|
|
kResamplerMode12To1,
|
|
kResamplerMode3To2,
|
|
kResamplerMode11To2,
|
|
kResamplerMode11To4,
|
|
kResamplerMode11To8
|
|
};
|
|
|
|
// Generic pointers since we don't know what states we'll need
|
|
void* state1_;
|
|
void* state2_;
|
|
void* state3_;
|
|
|
|
// Storage if needed
|
|
int16_t* in_buffer_;
|
|
int16_t* out_buffer_;
|
|
size_t in_buffer_size_;
|
|
size_t out_buffer_size_;
|
|
size_t in_buffer_size_max_;
|
|
size_t out_buffer_size_max_;
|
|
|
|
int my_in_frequency_khz_;
|
|
int my_out_frequency_khz_;
|
|
ResamplerMode my_mode_;
|
|
size_t num_channels_;
|
|
|
|
// Extra instance for stereo
|
|
Resampler* slave_left_;
|
|
Resampler* slave_right_;
|
|
};
|
|
|
|
} // namespace webrtc
|
|
|
|
#endif // WEBRTC_COMMON_AUDIO_RESAMPLER_INCLUDE_RESAMPLER_H_
|