Roc Toolkit internal modules
Roc Toolkit: real-time audio streaming
sox_backend.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2015 Roc Streaming authors
3
*
4
* This Source Code Form is subject to the terms of the Mozilla Public
5
* License, v. 2.0. If a copy of the MPL was not distributed with this
6
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
*/
8
9
//! @file roc_sndio/target_sox/roc_sndio/sox_backend.h
10
//! @brief SoX backend.
11
12
#ifndef ROC_SNDIO_SOX_BACKEND_H_
13
#define ROC_SNDIO_SOX_BACKEND_H_
14
15
#include <sox.h>
16
17
#include "
roc_audio/sample_spec.h
"
18
#include "
roc_core/noncopyable.h
"
19
#include "
roc_sndio/ibackend.h
"
20
21
namespace
roc
{
22
namespace
sndio {
23
24
//! SoX backend.
25
class
SoxBackend
:
public
IBackend
,
core::NonCopyable
<> {
26
public
:
27
SoxBackend
();
28
29
//! Set internal SoX frame size.
30
//! @remarks
31
//! Number of samples for all channels.
32
void
set_frame_size
(
core::nanoseconds_t
frame_length,
33
const
audio::SampleSpec
& sample_spec);
34
35
//! Append supported drivers to the list.
36
virtual
void
discover_drivers
(
core::Array<DriverInfo, MaxDrivers>
& driver_list);
37
38
//! Create and open a sink or source.
39
virtual
IDevice
*
open_device
(
DeviceType
device_type,
40
DriverType
driver_type,
41
const
char
* driver,
42
const
char
* path,
43
const
Config
& config,
44
core::IArena
& arena);
45
46
private
:
47
bool
first_created_;
48
};
49
50
}
// namespace sndio
51
}
// namespace roc
52
53
#endif
// ROC_SNDIO_SOX_BACKEND_H_
roc::audio::SampleSpec
Sample specification. Describes sample rate and channels.
Definition:
sample_spec.h:26
roc::core::Array
Dynamic array.
Definition:
array.h:39
roc::core::IArena
Memory arena interface.
Definition:
iarena.h:23
roc::core::NonCopyable
Base class for non-copyable objects.
Definition:
noncopyable.h:23
roc::sndio::IBackend
Backend interface.
Definition:
ibackend.h:29
roc::sndio::IDevice
Base interface for sinks and sources.
Definition:
idevice.h:25
roc::sndio::SoxBackend
SoX backend.
Definition:
sox_backend.h:25
roc::sndio::SoxBackend::open_device
virtual IDevice * open_device(DeviceType device_type, DriverType driver_type, const char *driver, const char *path, const Config &config, core::IArena &arena)
Create and open a sink or source.
roc::sndio::SoxBackend::set_frame_size
void set_frame_size(core::nanoseconds_t frame_length, const audio::SampleSpec &sample_spec)
Set internal SoX frame size.
roc::sndio::SoxBackend::discover_drivers
virtual void discover_drivers(core::Array< DriverInfo, MaxDrivers > &driver_list)
Append supported drivers to the list.
ibackend.h
Backend interface.
roc::core::nanoseconds_t
int64_t nanoseconds_t
Nanoseconds.
Definition:
time.h:58
roc::sndio::DeviceType
DeviceType
Device type.
Definition:
device_type.h:19
roc::sndio::DriverType
DriverType
Driver type.
Definition:
driver.h:27
roc
Root namespace.
noncopyable.h
Non-copyable object.
sample_spec.h
Sample specifications.
roc::sndio::Config
Sink and source config.
Definition:
config.h:29
roc_sndio
target_sox
roc_sndio
sox_backend.h
Generated by
1.9.1