blob: 97ca9bdc2d75e04b5c80bd9519533903e3870b54 [file] [log] [blame]
// Copyright 2015 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 CHROMECAST_MEDIA_CMA_BACKEND_ALSA_ALSA_WRAPPER_H_
#define CHROMECAST_MEDIA_CMA_BACKEND_ALSA_ALSA_WRAPPER_H_
#include "base/macros.h"
#include "media/audio/alsa/alsa_wrapper.h"
namespace chromecast {
namespace media {
extern const int kAlsaTstampTypeMonotonicRaw;
// Extends the Chromium AlsaWrapper, adding additional functions that we use.
class AlsaWrapper : public ::media::AlsaWrapper {
public:
AlsaWrapper();
~AlsaWrapper() override;
virtual int PcmPause(snd_pcm_t* handle, int enable);
virtual int PcmStatusMalloc(snd_pcm_status_t** ptr);
virtual void PcmStatusFree(snd_pcm_status_t* obj);
virtual int PcmStatus(snd_pcm_t* handle, snd_pcm_status_t* status);
virtual snd_pcm_sframes_t PcmStatusGetDelay(const snd_pcm_status_t* obj);
virtual snd_pcm_uframes_t PcmStatusGetAvail(const snd_pcm_status_t* obj);
virtual void PcmStatusGetHtstamp(const snd_pcm_status_t* obj,
snd_htimestamp_t* ptr);
virtual snd_pcm_state_t PcmStatusGetState(const snd_pcm_status_t* obj);
virtual ssize_t PcmFormatSize(snd_pcm_format_t format, size_t samples);
virtual int PcmHwParamsMalloc(snd_pcm_hw_params_t** ptr);
virtual void PcmHwParamsFree(snd_pcm_hw_params_t* obj);
virtual int PcmHwParamsCurrent(snd_pcm_t* handle,
snd_pcm_hw_params_t* params);
virtual int PcmHwParamsCanPause(const snd_pcm_hw_params_t* params);
virtual int PcmHwParamsAny(snd_pcm_t* handle, snd_pcm_hw_params_t* params);
virtual int PcmHwParamsSetRateResample(snd_pcm_t* handle,
snd_pcm_hw_params_t* params,
bool val);
virtual int PcmHwParamsSetAccess(snd_pcm_t* handle,
snd_pcm_hw_params_t* params,
snd_pcm_access_t access);
virtual int PcmHwParamsSetFormat(snd_pcm_t* handle,
snd_pcm_hw_params_t* params,
snd_pcm_format_t format);
virtual int PcmHwParamsSetChannels(snd_pcm_t* handle,
snd_pcm_hw_params_t* params,
unsigned int num_channels);
virtual int PcmHwParamsSetRateNear(snd_pcm_t* handle,
snd_pcm_hw_params_t* params,
unsigned int* rate,
int* dir);
virtual int PcmHwParamsSetBufferSizeNear(snd_pcm_t* handle,
snd_pcm_hw_params_t* params,
snd_pcm_uframes_t* val);
virtual int PcmHwParamsSetPeriodSizeNear(snd_pcm_t* handle,
snd_pcm_hw_params_t* params,
snd_pcm_uframes_t* val,
int* dir);
virtual int PcmHwParamsTestFormat(snd_pcm_t* handle,
snd_pcm_hw_params_t* params,
snd_pcm_format_t format);
virtual int PcmHwParamsTestRate(snd_pcm_t* handle,
snd_pcm_hw_params_t* params,
unsigned int rate,
int dir);
virtual int PcmHwParams(snd_pcm_t* handle, snd_pcm_hw_params_t* params);
virtual int PcmSwParamsMalloc(snd_pcm_sw_params_t** params);
virtual void PcmSwParamsFree(snd_pcm_sw_params_t* params);
virtual int PcmSwParamsCurrent(snd_pcm_t* handle,
snd_pcm_sw_params_t* params);
virtual int PcmSwParamsSetStartThreshold(snd_pcm_t* handle,
snd_pcm_sw_params_t* params,
snd_pcm_uframes_t val);
virtual int PcmSwParamsSetAvailMin(snd_pcm_t* handle,
snd_pcm_sw_params_t* params,
snd_pcm_uframes_t val);
virtual int PcmSwParamsSetTstampMode(snd_pcm_t* handle,
snd_pcm_sw_params_t* obj,
snd_pcm_tstamp_t val);
virtual int PcmSwParamsSetTstampType(snd_pcm_t* handle,
snd_pcm_sw_params_t* obj,
int val);
virtual int PcmSwParams(snd_pcm_t* handle, snd_pcm_sw_params_t* obj);
private:
DISALLOW_COPY_AND_ASSIGN(AlsaWrapper);
};
} // namespace media
} // namespace chromecast
#endif // CHROMECAST_MEDIA_CMA_BACKEND_ALSA_ALSA_WRAPPER_H_