添加音频和视频缓冲区配置支持
This commit is contained in:
16
config.cpp
16
config.cpp
@@ -83,3 +83,19 @@ int Config::LoggingLevel() {
|
||||
return AV_LOG_INFO;
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t Config::AudioBuffer() {
|
||||
auto re = configs.find("audioBuffer");
|
||||
if (re == configs.end()) {
|
||||
return 0;
|
||||
}
|
||||
return std::stoul((*re).second);
|
||||
}
|
||||
|
||||
uint32_t Config::VideoBuffer() {
|
||||
auto re = configs.find("videoBuffer");
|
||||
if (re == configs.end()) {
|
||||
return 0;
|
||||
}
|
||||
return std::stoul((*re).second);
|
||||
}
|
||||
|
||||
@@ -10,8 +10,12 @@ class Config {
|
||||
configs["appendLogging"] = "false";
|
||||
configs["loggingFile"] = "";
|
||||
configs["loggingLevel"] = "info";
|
||||
configs["audioBuffer"] = "0";
|
||||
configs["videoBuffer"] = "0";
|
||||
}
|
||||
bool Load(std::string path);
|
||||
bool IsAppendLogging();
|
||||
int LoggingLevel();
|
||||
uint32_t AudioBuffer();
|
||||
uint32_t VideoBuffer();
|
||||
};
|
||||
|
||||
10
dllmain.cpp
10
dllmain.cpp
@@ -124,6 +124,15 @@ int64_t HookedOpenMediaFileAndGetDuration(DWORD* duration, const char* arcName,
|
||||
player_log(AV_LOG_ERROR, "Failed to initialize player settings.\n");
|
||||
goto end;
|
||||
}
|
||||
player_settings_set_resize(settings, 0);
|
||||
uint32_t audioBuffer = config.AudioBuffer();
|
||||
if (audioBuffer) {
|
||||
player_settings_set_audio_buffer_size(settings, audioBuffer);
|
||||
}
|
||||
uint32_t videoBuffer = config.VideoBuffer();
|
||||
if (videoBuffer) {
|
||||
player_settings_set_video_buffer_size(settings, videoBuffer);
|
||||
}
|
||||
}
|
||||
player_settings_set_hWnd(settings, (void**)GetHwndPointer());
|
||||
if (player_create2(videoName, &player, settings)) {
|
||||
@@ -134,6 +143,7 @@ int64_t HookedOpenMediaFileAndGetDuration(DWORD* duration, const char* arcName,
|
||||
player_log(AV_LOG_ERROR, "Failed to initialize player.\n");
|
||||
goto end;
|
||||
}
|
||||
player_wait_until_buffer_is_full(player);
|
||||
if (player_play(player)) {
|
||||
player_log(AV_LOG_ERROR, "Failed to play video.\n");
|
||||
goto end;
|
||||
|
||||
@@ -116,6 +116,17 @@ PLAYER_API int player_play(PlayerSession* session);
|
||||
* @return 错误代码
|
||||
*/
|
||||
PLAYER_API int player_pause(PlayerSession* session);
|
||||
/**
|
||||
* @brief 判断播放器缓冲区是否已满
|
||||
* @param session 播放器会话指针
|
||||
* @return 是否已满
|
||||
*/
|
||||
PLAYER_API int player_buffer_is_full(PlayerSession* session);
|
||||
/**
|
||||
* @brief 等待播放器缓冲区满
|
||||
* @param session 播放器会话指针
|
||||
*/
|
||||
PLAYER_API void player_wait_until_buffer_is_full(PlayerSession* session);
|
||||
/**
|
||||
* @brief 判断播放器是否正在播放
|
||||
* @param session 播放器会话指针
|
||||
@@ -147,6 +158,18 @@ PLAYER_API void player_settings_default(PlayerSettings* settings);
|
||||
* @param resize 是否自动调整窗口大小
|
||||
*/
|
||||
PLAYER_API void player_settings_set_resize(PlayerSettings* settings, unsigned char resize);
|
||||
/**
|
||||
* @brief 设置音频缓冲区大小
|
||||
* @param settings 播放器设置指针
|
||||
* @param size 音频缓冲区大小(单位 ms)
|
||||
*/
|
||||
PLAYER_API void player_settings_set_audio_buffer_size(PlayerSettings* settings, uint32_t size);
|
||||
/**
|
||||
* @brief 设置视频缓冲区大小
|
||||
* @param settings 播放器设置指针
|
||||
* @param size 视频缓冲区大小(单位 ms)
|
||||
*/
|
||||
PLAYER_API void player_settings_set_video_buffer_size(PlayerSettings* settings, uint32_t size);
|
||||
/**
|
||||
* @brief 设置窗口句柄
|
||||
* @param settings 播放器设置指针
|
||||
|
||||
BIN
lib/player.lib
BIN
lib/player.lib
Binary file not shown.
Reference in New Issue
Block a user