Page MenuHomePhabricator

IResampler.h
No OneTemporary

IResampler.h

//
// Created by 杨将 on 2017/9/4.
//
/**
* 基于ffmpeg的重采样模块
*/
#ifndef __IRESAMPLER_H__
#define __IRESAMPLER_H__
enum
{
E_RESAMPLER_SUCCESS = 0,
E_RESAMPLER_NO_MEMORY = 10000,
E_RESAMPLER_NUM_ZERO,
};
class IResampler
{
public:
IResampler() { }
virtual ~IResampler() { }
public:
/**
* 初始化函数
* @param in_samplerate 输入数据的采样率
* @param out_samplerate 输出数据的采样率
* @param in_channel
* @param out_channel
* @return 0 表示正常
*/
virtual int init(int in_samplerate, int out_samplerate, int in_channel=1, int out_channel=1) = 0;
/**
* 当输入每个通道采样点数为num长度的数据时,从resample可以获取到的输出数据的最大长度
* @param num 本次将要输入的数据长度[单通道采样点数量]
* @return 单通道采样点数量,负数表示异常
*/
virtual int get_out_samples(int num) = 0;
/**
* 获取延迟延迟时间,采样点级别
* @return
*/
virtual int get_latency() = 0;
/**
* 重设,清空内部缓存数据[当输入数据源切换时,需要进行设置]
*/
virtual void reset() = 0;
/**
* 重采样函数
* @param in_buf 输入数据[多通道时,交错方式的存储][in]
* @param in_num 输入数据单个通道的采样点数量[in]
* @param out_buf 输出数据[多通道时,交错方式的存储][in][注意:需要外部开辟好空间,可以使用get_out_samples获取需要开辟的最大长度]
* @param out_num 输出数据单个通道的采样点数量[out][注意: out_buf真实被写入的单通道采样点数量]
* @return 0表示正常
*/
virtual int resample(float * in_buf, int in_num, float * out_buf, int & out_num) = 0;
/**
* 销毁函数
*/
virtual void uninit() = 0;
};
#endif //__IRESAMPLER_H__

File Metadata

Mime Type
text/x-c++
Expires
Sun, Nov 24, 22:17 (1 d, 41 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1326504
Default Alt Text
IResampler.h (1 KB)

Event Timeline