📄 sound_mixplay_pub.h.svn-base
字号:
#ifndef _SOUND_MIXPLAY_H_#define _SOUND_MIXPLAY_H_#include <pthread.h>#include <glib.h>#include <inttypes.h>#include "mpg123.h"#include "mpglib.h"#include "base_types.h"/* 1. 整体概述 * ========================= * * 1.1 数据 * --------- * 此模块中使用的数据结构如下 * * pcm_block_head * | | * channel <- pcm_block -> pcm_block -> pcm_block * | | * channel <- pcm_block -> pcm_block * | | * channel <- pcm_block -> pcm_block -> pcm_block * * 其中纵向由双向链表连接各个 channel 及其数据, * 每行的中央节点左侧为描述此 channel 的结构,而 * 中央节点及其右侧为此 channel 的 pcm 声音数据. * * 1.2 函数 * --------- * sound_init 用于初始化声音设备. * * mix_and_play 用于连续不断的将链表中的各 channel * 的声音合成,并播放. *//* 2. 结构体说明 * ========================== * * 2.1 pcm_block * -------------- * pcm_block 包含三类信息, * 1. 指针信息, 包括指向 上下左右 各方向的指针. * 2. 声音数据, 包括数据本身,及播放位置的指针等. */struct pcm_block { struct pcm_block *next_p; struct pcm_block *upchannel_p; struct pcm_block *downchannel_p; struct channel *channel_p; //这个 block 隶属的 channel int pos; //在块中 播放到 的位置 int length; //数据块中有效数据的长度#define BUF_LENGTH 5120 UI8 data[BUF_LENGTH];};/* 2.2 channel * ------------ * 指明此通道的类型,及各种类型特有的中间数据 * 2. 声音参数, 包括所携带的声音数据的采样频率,是否立体声等信息. */struct channel { UI8 type; // channel 类型#define STREAM_CHANNEL 1#define DEFINE_CHANNEL 2 uint8_t mono_stereo; uint8_t sample_size; uint16_t dsp_speed; GNode *belong_node_p; // 当 channel 为 stream block 时,指明所属的 mc node struct mpstr mp; //};void snd_mixplay_do(void);#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -