testffmpeg: added verbose logging of ffmpeg messages

main
Sam Lantinga 2024-03-11 15:48:52 -07:00
parent 7c5f79e7ea
commit d78a24a5ce
1 changed files with 49 additions and 3 deletions

View File

@ -91,6 +91,7 @@ struct SwsContextContainer
};
static const char *SWS_CONTEXT_CONTAINER_PROPERTY = "SWS_CONTEXT_CONTAINER";
static int done;
static SDL_bool verbose;
static SDL_bool CreateWindowAndRenderer(SDL_WindowFlags window_flags, const char *driver)
{
@ -314,7 +315,7 @@ static Uint32 GetTextureFormat(enum AVPixelFormat format)
return SDL_PIXELFORMAT_NV12;
case AV_PIX_FMT_NV21:
return SDL_PIXELFORMAT_NV21;
case AV_PIX_FMT_P010:
case AV_PIX_FMT_P010:
return SDL_PIXELFORMAT_P010;
default:
return SDL_PIXELFORMAT_UNKNOWN;
@ -1034,8 +1035,47 @@ static void HandleAudioFrame(AVFrame *frame)
}
}
static void av_log_callback(void* avcl, int level, const char *fmt, va_list vl)
{
const char *pszCategory = NULL;
char *message;
switch (level) {
case AV_LOG_PANIC:
case AV_LOG_FATAL:
pszCategory = "fatal error";
break;
case AV_LOG_ERROR:
pszCategory = "error";
break;
case AV_LOG_WARNING:
pszCategory = "warning";
break;
case AV_LOG_INFO:
pszCategory = "info";
break;
case AV_LOG_VERBOSE:
pszCategory = "verbose";
break;
case AV_LOG_DEBUG:
if (verbose) {
pszCategory = "debug";
}
break;
}
if (!pszCategory) {
// We don't care about this message
return;
}
SDL_vasprintf(&message, fmt, vl);
SDL_Log("ffmpeg %s: %s", pszCategory, message);
SDL_free(message);
}
static void print_usage(SDLTest_CommonState *state, const char *argv0) {
static const char *options[] = { "[--sprites N]", "[--audio-codec codec]", "[--video-codec codec]", "[--software]", "video_file", NULL };
static const char *options[] = { "[--verbose]", "[--sprites N]", "[--audio-codec codec]", "[--video-codec codec]", "[--software]", "video_file", NULL };
SDLTest_CommonLogUsage(state, argv0, options);
}
@ -1068,13 +1108,19 @@ int main(int argc, char *argv[])
/* Enable standard application logging */
SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
/* Log ffmpeg messages */
av_log_set_callback( av_log_callback );
/* Parse commandline */
for (i = 1; i < argc;) {
int consumed;
consumed = SDLTest_CommonArg(state, i);
if (!consumed) {
if (SDL_strcmp(argv[i], "--sprites") == 0 && argv[i+1]) {
if (SDL_strcmp(argv[i], "--verbose") == 0) {
verbose = SDL_TRUE;
consumed = 1;
} else if (SDL_strcmp(argv[i], "--sprites") == 0 && argv[i+1]) {
num_sprites = SDL_atoi(argv[i+1]);
consumed = 2;
} else if (SDL_strcmp(argv[i], "--audio-codec") == 0 && argv[i+1]) {