添加音频和视频缓冲区配置支持
This commit is contained in:
16
config.cpp
16
config.cpp
@@ -83,3 +83,19 @@ int Config::LoggingLevel() {
|
|||||||
return AV_LOG_INFO;
|
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["appendLogging"] = "false";
|
||||||
configs["loggingFile"] = "";
|
configs["loggingFile"] = "";
|
||||||
configs["loggingLevel"] = "info";
|
configs["loggingLevel"] = "info";
|
||||||
|
configs["audioBuffer"] = "0";
|
||||||
|
configs["videoBuffer"] = "0";
|
||||||
}
|
}
|
||||||
bool Load(std::string path);
|
bool Load(std::string path);
|
||||||
bool IsAppendLogging();
|
bool IsAppendLogging();
|
||||||
int LoggingLevel();
|
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");
|
player_log(AV_LOG_ERROR, "Failed to initialize player settings.\n");
|
||||||
goto end;
|
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());
|
player_settings_set_hWnd(settings, (void**)GetHwndPointer());
|
||||||
if (player_create2(videoName, &player, settings)) {
|
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");
|
player_log(AV_LOG_ERROR, "Failed to initialize player.\n");
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
player_wait_until_buffer_is_full(player);
|
||||||
if (player_play(player)) {
|
if (player_play(player)) {
|
||||||
player_log(AV_LOG_ERROR, "Failed to play video.\n");
|
player_log(AV_LOG_ERROR, "Failed to play video.\n");
|
||||||
goto end;
|
goto end;
|
||||||
|
|||||||
@@ -116,6 +116,17 @@ PLAYER_API int player_play(PlayerSession* session);
|
|||||||
* @return 错误代码
|
* @return 错误代码
|
||||||
*/
|
*/
|
||||||
PLAYER_API int player_pause(PlayerSession* session);
|
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 判断播放器是否正在播放
|
* @brief 判断播放器是否正在播放
|
||||||
* @param session 播放器会话指针
|
* @param session 播放器会话指针
|
||||||
@@ -147,6 +158,18 @@ PLAYER_API void player_settings_default(PlayerSettings* settings);
|
|||||||
* @param resize 是否自动调整窗口大小
|
* @param resize 是否自动调整窗口大小
|
||||||
*/
|
*/
|
||||||
PLAYER_API void player_settings_set_resize(PlayerSettings* settings, unsigned char 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 设置窗口句柄
|
* @brief 设置窗口句柄
|
||||||
* @param settings 播放器设置指针
|
* @param settings 播放器设置指针
|
||||||
|
|||||||
BIN
lib/player.lib
BIN
lib/player.lib
Binary file not shown.
Reference in New Issue
Block a user