解码音频时绘制窗口
This commit is contained in:
14
main.cc
14
main.cc
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user