Ai
1 Star 1 Fork 1

cNull/player-cpp-ffmpeg-sdl

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
AudioCallback.cpp 1.21 KB
一键复制 编辑 原始数据 按行查看 历史
Raul Lima Alves 提交于 2020-05-04 01:21 +08:00 . finishing refactoring using audio callback
#include "stdafx.h"
Audio* AudioCallback::audio_instance = 0;
void AudioCallback::set_audio_instance(Audio* audio_instance)
{
AudioCallback::audio_instance = audio_instance;
}
void AudioCallback::audio_callback(void* userdata, Uint8* stream, int len)
{
AVCodecContext* aCodecCtx = (AVCodecContext*)userdata;
int len1, audio_size;
static uint8_t audio_buff[192000 * 3 / 2];
static unsigned int audio_buf_size = 0;
static unsigned int audio_buf_index = 0;
SDL_memset(stream, 0, len);
while (len > 0)
{
if (audio_buf_index >= audio_buf_size)
{
audio_size = AudioCallback::audio_instance->audio_decode_frame(aCodecCtx, audio_buff, sizeof(audio_buff));
if (audio_size < 0)
{
audio_buf_size = 1024;
memset(audio_buff, 0, audio_buf_size);
}
else
audio_buf_size = audio_size;
audio_buf_index = 0;
}
len1 = audio_buf_size - audio_buf_index;
if (len1 > len)
len1 = len;
SDL_MixAudio(stream, audio_buff + audio_buf_index, len, SDL_MIX_MAXVOLUME);
len -= len1;
stream += len1;
audio_buf_index += len1;
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/cnull_project/player-cpp-ffmpeg-sdl.git
git@gitee.com:cnull_project/player-cpp-ffmpeg-sdl.git
cnull_project
player-cpp-ffmpeg-sdl
player-cpp-ffmpeg-sdl
master

搜索帮助