Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
F
freeswitch
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
张华
freeswitch
Commits
df1f3209
提交
df1f3209
authored
3月 30, 2006
作者:
Michael Jerris
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
dos2unix
git-svn-id:
http://svn.freeswitch.org/svn/freeswitch/trunk@968
d0543943-73ff-0310-b7d9-9358b9ac24b2
上级
0232f398
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
698 行增加
和
698 行删除
+698
-698
pablio.c
src/mod/endpoints/mod_portaudio/pablio.c
+291
-291
pablio.h
src/mod/endpoints/mod_portaudio/pablio.h
+109
-109
ringbuffer.c
src/mod/endpoints/mod_portaudio/ringbuffer.c
+195
-195
ringbuffer.h
src/mod/endpoints/mod_portaudio/ringbuffer.h
+103
-103
没有找到文件。
src/mod/endpoints/mod_portaudio/pablio.c
浏览文件 @
df1f3209
差异被折叠。
点击展开。
src/mod/endpoints/mod_portaudio/pablio.h
浏览文件 @
df1f3209
#ifndef _PABLIO_H
#define _PABLIO_H
#ifdef __cplusplus
extern
"C"
{
#endif
/* __cplusplus */
/*
* $Id: pablio.h,v 1.1.1.1 2002/01/22 00:52:53 phil Exp $
* PABLIO.h
* Portable Audio Blocking read/write utility.
*
* Author: Phil Burk, http://www.softsynth.com/portaudio/
*
* Include file for PABLIO, the Portable Audio Blocking I/O Library.
* PABLIO is built on top of PortAudio, the Portable Audio Library.
* For more information see: http://www.audiomulch.com/portaudio/
* Copyright (c) 1999-2000 Ross Bencina and Phil Burk
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files
* (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* Any person wishing to distribute modifications to the Software is
* requested to send the modifications to the original developer so that
* they can be incorporated into the canonical version.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "portaudio.h"
#include "ringbuffer.h"
#include <string.h>
typedef
struct
{
RingBuffer
inFIFO
;
RingBuffer
outFIFO
;
PortAudioStream
*
stream
;
int
bytesPerFrame
;
int
samplesPerFrame
;
}
PABLIO_Stream
;
/* Values for flags for OpenAudioStream(). */
#define PABLIO_READ (1<<0)
#define PABLIO_WRITE (1<<1)
#define PABLIO_READ_WRITE (PABLIO_READ|PABLIO_WRITE)
#define PABLIO_MONO (1<<2)
#define PABLIO_STEREO (1<<3)
/************************************************************
* Write data to ring buffer.
* Will not return until all the data has been written.
*/
long
WriteAudioStream
(
PABLIO_Stream
*
aStream
,
void
*
data
,
long
numFrames
);
/************************************************************
* Read data from ring buffer.
* Will not return until all the data has been read.
*/
long
ReadAudioStream
(
PABLIO_Stream
*
aStream
,
void
*
data
,
long
numFrames
);
/************************************************************
* Return the number of frames that could be written to the stream without
* having to wait.
*/
long
GetAudioStreamWriteable
(
PABLIO_Stream
*
aStream
);
/************************************************************
* Return the number of frames that are available to be read from the
* stream without having to wait.
*/
long
GetAudioStreamReadable
(
PABLIO_Stream
*
aStream
);
/************************************************************
* Opens a PortAudio stream with default characteristics.
* Allocates PABLIO_Stream structure.
*
* flags parameter can be an ORed combination of:
* PABLIO_READ, PABLIO_WRITE, or PABLIO_READ_WRITE,
* and either PABLIO_MONO or PABLIO_STEREO
*/
PaError
OpenAudioStream
(
PABLIO_Stream
**
aStreamPtr
,
double
sampleRate
,
PaSampleFormat
format
,
long
flags
,
int
indev
,
int
outdev
);
PaError
CloseAudioStream
(
PABLIO_Stream
*
aStream
);
#ifdef __cplusplus
}
#endif
/* __cplusplus */
#endif
/* _PABLIO_H */
#ifndef _PABLIO_H
#define _PABLIO_H
#ifdef __cplusplus
extern
"C"
{
#endif
/* __cplusplus */
/*
* $Id: pablio.h,v 1.1.1.1 2002/01/22 00:52:53 phil Exp $
* PABLIO.h
* Portable Audio Blocking read/write utility.
*
* Author: Phil Burk, http://www.softsynth.com/portaudio/
*
* Include file for PABLIO, the Portable Audio Blocking I/O Library.
* PABLIO is built on top of PortAudio, the Portable Audio Library.
* For more information see: http://www.audiomulch.com/portaudio/
* Copyright (c) 1999-2000 Ross Bencina and Phil Burk
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files
* (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* Any person wishing to distribute modifications to the Software is
* requested to send the modifications to the original developer so that
* they can be incorporated into the canonical version.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "portaudio.h"
#include "ringbuffer.h"
#include <string.h>
typedef
struct
{
RingBuffer
inFIFO
;
RingBuffer
outFIFO
;
PortAudioStream
*
stream
;
int
bytesPerFrame
;
int
samplesPerFrame
;
}
PABLIO_Stream
;
/* Values for flags for OpenAudioStream(). */
#define PABLIO_READ (1<<0)
#define PABLIO_WRITE (1<<1)
#define PABLIO_READ_WRITE (PABLIO_READ|PABLIO_WRITE)
#define PABLIO_MONO (1<<2)
#define PABLIO_STEREO (1<<3)
/************************************************************
* Write data to ring buffer.
* Will not return until all the data has been written.
*/
long
WriteAudioStream
(
PABLIO_Stream
*
aStream
,
void
*
data
,
long
numFrames
);
/************************************************************
* Read data from ring buffer.
* Will not return until all the data has been read.
*/
long
ReadAudioStream
(
PABLIO_Stream
*
aStream
,
void
*
data
,
long
numFrames
);
/************************************************************
* Return the number of frames that could be written to the stream without
* having to wait.
*/
long
GetAudioStreamWriteable
(
PABLIO_Stream
*
aStream
);
/************************************************************
* Return the number of frames that are available to be read from the
* stream without having to wait.
*/
long
GetAudioStreamReadable
(
PABLIO_Stream
*
aStream
);
/************************************************************
* Opens a PortAudio stream with default characteristics.
* Allocates PABLIO_Stream structure.
*
* flags parameter can be an ORed combination of:
* PABLIO_READ, PABLIO_WRITE, or PABLIO_READ_WRITE,
* and either PABLIO_MONO or PABLIO_STEREO
*/
PaError
OpenAudioStream
(
PABLIO_Stream
**
aStreamPtr
,
double
sampleRate
,
PaSampleFormat
format
,
long
flags
,
int
indev
,
int
outdev
);
PaError
CloseAudioStream
(
PABLIO_Stream
*
aStream
);
#ifdef __cplusplus
}
#endif
/* __cplusplus */
#endif
/* _PABLIO_H */
src/mod/endpoints/mod_portaudio/ringbuffer.c
浏览文件 @
df1f3209
差异被折叠。
点击展开。
src/mod/endpoints/mod_portaudio/ringbuffer.h
浏览文件 @
df1f3209
#ifndef _RINGBUFFER_H
#define _RINGBUFFER_H
#ifdef __cplusplus
extern
"C"
{
#endif
/* __cplusplus */
/*
* $Id: ringbuffer.h,v 1.1.1.1.4.2 2003/04/28 17:45:34 philburk Exp $
* ringbuffer.h
* Ring Buffer utility..
*
* Author: Phil Burk, http://www.softsynth.com
*
* This program is distributed with the PortAudio Portable Audio Library.
* For more information see: http://www.audiomulch.com/portaudio/
* Copyright (c) 1999-2000 Ross Bencina and Phil Burk
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files
* (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* Any person wishing to distribute modifications to the Software is
* requested to send the modifications to the original developer so that
* they can be incorporated into the canonical version.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*/
#define PortAudioStream PaStream
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "ringbuffer.h"
#include <string.h>
typedef
struct
{
long
bufferSize
;
/* Number of bytes in FIFO. Power of 2. Set by RingBuffer_Init. */
/* These are declared volatile because they are written by a different thread than the reader. */
volatile
long
writeIndex
;
/* Index of next writable byte. Set by RingBuffer_AdvanceWriteIndex. */
volatile
long
readIndex
;
/* Index of next readable byte. Set by RingBuffer_AdvanceReadIndex. */
long
bigMask
;
/* Used for wrapping indices with extra bit to distinguish full/empty. */
long
smallMask
;
/* Used for fitting indices to buffer. */
char
*
buffer
;
}
RingBuffer
;
/*
* Initialize Ring Buffer.
* numBytes must be power of 2, returns -1 if not.
*/
long
RingBuffer_Init
(
RingBuffer
*
rbuf
,
long
numBytes
,
void
*
dataPtr
);
/* Clear buffer. Should only be called when buffer is NOT being read. */
void
RingBuffer_Flush
(
RingBuffer
*
rbuf
);
/* Return number of bytes available for writing. */
long
RingBuffer_GetWriteAvailable
(
RingBuffer
*
rbuf
);
/* Return number of bytes available for read. */
long
RingBuffer_GetReadAvailable
(
RingBuffer
*
rbuf
);
/* Return bytes written. */
long
RingBuffer_Write
(
RingBuffer
*
rbuf
,
void
*
data
,
long
numBytes
);
/* Return bytes read. */
long
RingBuffer_Read
(
RingBuffer
*
rbuf
,
void
*
data
,
long
numBytes
);
/* Get address of region(s) to which we can write data.
** If the region is contiguous, size2 will be zero.
** If non-contiguous, size2 will be the size of second region.
** Returns room available to be written or numBytes, whichever is smaller.
*/
long
RingBuffer_GetWriteRegions
(
RingBuffer
*
rbuf
,
long
numBytes
,
void
**
dataPtr1
,
long
*
sizePtr1
,
void
**
dataPtr2
,
long
*
sizePtr2
);
long
RingBuffer_AdvanceWriteIndex
(
RingBuffer
*
rbuf
,
long
numBytes
);
/* Get address of region(s) from which we can read data.
** If the region is contiguous, size2 will be zero.
** If non-contiguous, size2 will be the size of second region.
** Returns room available to be read or numBytes, whichever is smaller.
*/
long
RingBuffer_GetReadRegions
(
RingBuffer
*
rbuf
,
long
numBytes
,
void
**
dataPtr1
,
long
*
sizePtr1
,
void
**
dataPtr2
,
long
*
sizePtr2
);
long
RingBuffer_AdvanceReadIndex
(
RingBuffer
*
rbuf
,
long
numBytes
);
#ifdef __cplusplus
}
#endif
/* __cplusplus */
#endif
/* _RINGBUFFER_H */
#ifndef _RINGBUFFER_H
#define _RINGBUFFER_H
#ifdef __cplusplus
extern
"C"
{
#endif
/* __cplusplus */
/*
* $Id: ringbuffer.h,v 1.1.1.1.4.2 2003/04/28 17:45:34 philburk Exp $
* ringbuffer.h
* Ring Buffer utility..
*
* Author: Phil Burk, http://www.softsynth.com
*
* This program is distributed with the PortAudio Portable Audio Library.
* For more information see: http://www.audiomulch.com/portaudio/
* Copyright (c) 1999-2000 Ross Bencina and Phil Burk
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files
* (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* Any person wishing to distribute modifications to the Software is
* requested to send the modifications to the original developer so that
* they can be incorporated into the canonical version.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*/
#define PortAudioStream PaStream
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "ringbuffer.h"
#include <string.h>
typedef
struct
{
long
bufferSize
;
/* Number of bytes in FIFO. Power of 2. Set by RingBuffer_Init. */
/* These are declared volatile because they are written by a different thread than the reader. */
volatile
long
writeIndex
;
/* Index of next writable byte. Set by RingBuffer_AdvanceWriteIndex. */
volatile
long
readIndex
;
/* Index of next readable byte. Set by RingBuffer_AdvanceReadIndex. */
long
bigMask
;
/* Used for wrapping indices with extra bit to distinguish full/empty. */
long
smallMask
;
/* Used for fitting indices to buffer. */
char
*
buffer
;
}
RingBuffer
;
/*
* Initialize Ring Buffer.
* numBytes must be power of 2, returns -1 if not.
*/
long
RingBuffer_Init
(
RingBuffer
*
rbuf
,
long
numBytes
,
void
*
dataPtr
);
/* Clear buffer. Should only be called when buffer is NOT being read. */
void
RingBuffer_Flush
(
RingBuffer
*
rbuf
);
/* Return number of bytes available for writing. */
long
RingBuffer_GetWriteAvailable
(
RingBuffer
*
rbuf
);
/* Return number of bytes available for read. */
long
RingBuffer_GetReadAvailable
(
RingBuffer
*
rbuf
);
/* Return bytes written. */
long
RingBuffer_Write
(
RingBuffer
*
rbuf
,
void
*
data
,
long
numBytes
);
/* Return bytes read. */
long
RingBuffer_Read
(
RingBuffer
*
rbuf
,
void
*
data
,
long
numBytes
);
/* Get address of region(s) to which we can write data.
** If the region is contiguous, size2 will be zero.
** If non-contiguous, size2 will be the size of second region.
** Returns room available to be written or numBytes, whichever is smaller.
*/
long
RingBuffer_GetWriteRegions
(
RingBuffer
*
rbuf
,
long
numBytes
,
void
**
dataPtr1
,
long
*
sizePtr1
,
void
**
dataPtr2
,
long
*
sizePtr2
);
long
RingBuffer_AdvanceWriteIndex
(
RingBuffer
*
rbuf
,
long
numBytes
);
/* Get address of region(s) from which we can read data.
** If the region is contiguous, size2 will be zero.
** If non-contiguous, size2 will be the size of second region.
** Returns room available to be read or numBytes, whichever is smaller.
*/
long
RingBuffer_GetReadRegions
(
RingBuffer
*
rbuf
,
long
numBytes
,
void
**
dataPtr1
,
long
*
sizePtr1
,
void
**
dataPtr2
,
long
*
sizePtr2
);
long
RingBuffer_AdvanceReadIndex
(
RingBuffer
*
rbuf
,
long
numBytes
);
#ifdef __cplusplus
}
#endif
/* __cplusplus */
#endif
/* _RINGBUFFER_H */
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论