| Index: services/media/framework/lpcm_util.h
|
| diff --git a/services/media/framework/lpcm_util.h b/services/media/framework/lpcm_util.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1770c58bc04e3bbbeba604ddbae1978a24b1cb30
|
| --- /dev/null
|
| +++ b/services/media/framework/lpcm_util.h
|
| @@ -0,0 +1,62 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef SERVICES_MEDIA_FRAMEWORK_LPCM_UTIL_H_
|
| +#define SERVICES_MEDIA_FRAMEWORK_LPCM_UTIL_H_
|
| +
|
| +#include "services/media/framework/stream_type.h"
|
| +
|
| +namespace mojo {
|
| +namespace media {
|
| +
|
| +// Helper class that performs various LPCM processing functions.
|
| +class LpcmUtil {
|
| + public:
|
| + static LpcmUtil* Create(const LpcmStreamType& stream_type);
|
| +
|
| + // Fills the buffer with silence.
|
| + virtual void Silence(void* buffer, uint64_t frame_count) const = 0;
|
| +
|
| + // Copies samples.
|
| + virtual void Copy(void* in, void* out, uint64_t frame_count) const = 0;
|
| +
|
| + // Mixes samples.
|
| + virtual void Mix(void* in, void* out, uint64_t frame_count) const = 0;
|
| +
|
| + // Interleaves non-interleaved samples.
|
| + virtual void Interleave(
|
| + void* in,
|
| + uint64_t in_byte_count,
|
| + void* out,
|
| + uint64_t frame_count) const = 0;
|
| +};
|
| +
|
| +// LpcmUtil implementation that processes samples of type T.
|
| +template<typename T>
|
| +class LpcmUtilImpl : public LpcmUtil {
|
| + public:
|
| + LpcmUtilImpl(const LpcmStreamType& stream_type);
|
| +
|
| + ~LpcmUtilImpl();
|
| +
|
| + void Silence(void* buffer, uint64_t frame_count) const override;
|
| +
|
| + void Copy(void* in, void* out, uint64_t frame_count) const override;
|
| +
|
| + void Mix(void* in, void* out, uint64_t frame_count) const override;
|
| +
|
| + void Interleave(
|
| + void* in,
|
| + uint64_t in_byte_count,
|
| + void* out,
|
| + uint64_t frame_count) const override;
|
| +
|
| + private:
|
| + LpcmStreamType stream_type_;
|
| +};
|
| +
|
| +} // namespace media
|
| +} // namespace mojo
|
| +
|
| +#endif // SERVICES_MEDIA_FRAMEWORK_LPCM_UTIL_H_
|
|
|