Measures the duration of each packet loss concealment (a.k.a. expand) event that is not followed by a merge operation. Having decoded and played packet m−1, the next expected packet is m. If packet m arrives after some time of packet loss concealment, we have a delayed packet outage event. However, if instead packet n>m arrives, we have a lost packet outage event. In NetEq, the two outage types results in different operations. Both types start with expand operations to generate audio to play while the buffer is empty. When a lost packet outage happens, the expand operation(s) are followed by one merge operation. For delayed packet outages, merge is not done, and the expand operations are immediately followed by normal operations. This change also includes unit tests for the new statistics. BUG=webrtc:4915, chromium:488124 R=minyue@webrtc.org Review URL: https://codereview.webrtc.org/1290113002 . Cr-Commit-Position: refs/heads/master@{#9725}
65 lines
2.0 KiB
C++
65 lines
2.0 KiB
C++
/*
|
|
* Copyright (c) 2014 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.
|
|
*/
|
|
|
|
#ifndef WEBRTC_MODULES_AUDIO_CODING_NETEQ_MOCK_MOCK_EXPAND_H_
|
|
#define WEBRTC_MODULES_AUDIO_CODING_NETEQ_MOCK_MOCK_EXPAND_H_
|
|
|
|
#include "webrtc/modules/audio_coding/neteq/expand.h"
|
|
|
|
#include "testing/gmock/include/gmock/gmock.h"
|
|
|
|
namespace webrtc {
|
|
|
|
class MockExpand : public Expand {
|
|
public:
|
|
MockExpand(BackgroundNoise* background_noise,
|
|
SyncBuffer* sync_buffer,
|
|
RandomVector* random_vector,
|
|
StatisticsCalculator* statistics,
|
|
int fs,
|
|
size_t num_channels)
|
|
: Expand(background_noise,
|
|
sync_buffer,
|
|
random_vector,
|
|
statistics,
|
|
fs,
|
|
num_channels) {}
|
|
virtual ~MockExpand() { Die(); }
|
|
MOCK_METHOD0(Die, void());
|
|
MOCK_METHOD0(Reset,
|
|
void());
|
|
MOCK_METHOD1(Process,
|
|
int(AudioMultiVector* output));
|
|
MOCK_METHOD0(SetParametersForNormalAfterExpand,
|
|
void());
|
|
MOCK_METHOD0(SetParametersForMergeAfterExpand,
|
|
void());
|
|
MOCK_CONST_METHOD0(overlap_length,
|
|
size_t());
|
|
};
|
|
|
|
} // namespace webrtc
|
|
|
|
namespace webrtc {
|
|
|
|
class MockExpandFactory : public ExpandFactory {
|
|
public:
|
|
MOCK_CONST_METHOD6(Create,
|
|
Expand*(BackgroundNoise* background_noise,
|
|
SyncBuffer* sync_buffer,
|
|
RandomVector* random_vector,
|
|
StatisticsCalculator* statistics,
|
|
int fs,
|
|
size_t num_channels));
|
|
};
|
|
|
|
} // namespace webrtc
|
|
#endif // WEBRTC_MODULES_AUDIO_CODING_NETEQ_MOCK_MOCK_EXPAND_H_
|