音频结构调整
This commit is contained in:
13
main.cc
13
main.cc
@@ -24,9 +24,12 @@ struct OpenglVideoParam
|
||||
|
||||
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);
|
||||
if (!param.audioParam.isVideo)
|
||||
{
|
||||
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;
|
||||
@@ -34,7 +37,7 @@ int InitAudio(SDL_Window* window, SDL_Renderer* renderer, const char* targetFile
|
||||
des.format = AUDIO_S16SYS;
|
||||
des.samples = 1024;
|
||||
des.silence = 0;
|
||||
std::tuple<SDL_Window*, SDL_Renderer*, AudioParam*>* callbackParam = new std::tuple{window, renderer, &(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)
|
||||
@@ -49,6 +52,8 @@ int InitAudio(SDL_Window* window, SDL_Renderer* renderer, const char* targetFile
|
||||
int InitVideo(SDL_Window*& window, const char* targetFilepath, MediaParam& param, OpenglVideoParam& openglVideoParam, ShaderService*& shaderService)
|
||||
{
|
||||
InitDecoder(targetFilepath, param);
|
||||
param.audioParam.isVideo = true;
|
||||
InitAudio(nullptr, nullptr, nullptr, param);
|
||||
//FIX: when app exited, the fmtCtx was freed, so need notify decode thread to stop decode and exit.
|
||||
std::jthread(RequestVideoPacket, std::ref(param)).detach();
|
||||
std::jthread(RequestVideoFrame, std::ref(param)).detach();
|
||||
|
||||
Reference in New Issue
Block a user