解码音频时绘制窗口

This commit is contained in:
jie
2024-02-23 22:05:04 +08:00
parent e6ce8e1781
commit 7085c6ca9b
2 changed files with 37 additions and 9 deletions

14
main.cc
View File

@@ -12,6 +12,9 @@
#include "audioDecoder.h"
using std::cout;
constexpr int SCREEN_WIDTH = 640;
constexpr int SCREEN_HEIGHT = 480;
struct OpenglVideoParam
{
SDL_GLContext glContext;
@@ -19,17 +22,20 @@ struct OpenglVideoParam
unsigned int texs[3];
};
int InitAudio(const char* targetFilePath, MediaParam& param)
int InitAudio(SDL_Window* window, SDL_Renderer* renderer, const char* targetFilePath, MediaParam& param)
{
InitDecoder(targetFilePath, param);
window = SDL_CreateWindow("mp", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
renderer= SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
std::jthread(RequestAudioPacket, std::ref(param)).detach();
SDL_AudioSpec des;
des.freq = param.audioParam.codecCtx->sample_rate;
des.channels = param.audioParam.codecCtx->channels;
des.channels = param.audioParam.codecCtx->ch_layout.nb_channels;
des.format = AUDIO_S16SYS;
des.samples = 1024;
des.silence = 0;
des.userdata = &(param.audioParam);
std::tuple<SDL_Window*, SDL_Renderer*, AudioParam*>* callbackParam = new std::tuple{window, renderer, &(param.audioParam)};
des.userdata = callbackParam;
des.callback = audioCallback;
if (SDL_OpenAudio(&des, nullptr) < 0)
{
@@ -221,7 +227,7 @@ int main(int argc, char** argv)
}
case FileType::AUDIO:
{
InitAudio(targetFilepath, mediaParam);
InitAudio(window, renderer, targetFilepath, mediaParam);
break;
}
case FileType::ERRORTYPE: