int show_help(void *optctx, const char *opt, const char *arg)
{
    char *topic, *par;
    av_log_set_callback(log_callback_help);
    topic = av_strdup(arg ? arg : "");
    par = strchr(topic, '=');
    if (par)
        *par++ = 0;
    if (!*topic) {
        show_help_default(topic, par);
    } else if (!strcmp(topic, "decoder")) {
        show_help_codec(par, 0);
    } else if (!strcmp(topic, "encoder")) {
        show_help_codec(par, 1);
    } else if (!strcmp(topic, "demuxer")) {
        show_help_demuxer(par);
    } else if (!strcmp(topic, "muxer")) {
        show_help_muxer(par);
#if CONFIG_AVFILTER
    } else if (!strcmp(topic, "filter")) {
        show_help_filter(par);
#endif
    } else {
        show_help_default(topic, par);
    }
    av_freep(&topic);
    return 0;
}
['int show_help(void *optctx, const char *opt, const char *arg)\n{\n    char *topic, *par;\n    av_log_set_callback(log_callback_help);\n    topic = av_strdup(arg ? arg : "");\n    par = strchr(topic, \'=\');\n    if (par)\n        *par++ = 0;\n    if (!*topic) {\n        show_help_default(topic, par);\n    } else if (!strcmp(topic, "decoder")) {\n        show_help_codec(par, 0);\n    } else if (!strcmp(topic, "encoder")) {\n        show_help_codec(par, 1);\n    } else if (!strcmp(topic, "demuxer")) {\n        show_help_demuxer(par);\n    } else if (!strcmp(topic, "muxer")) {\n        show_help_muxer(par);\n#if CONFIG_AVFILTER\n    } else if (!strcmp(topic, "filter")) {\n        show_help_filter(par);\n#endif\n    } else {\n        show_help_default(topic, par);\n    }\n    av_freep(&topic);\n    return 0;\n}', 'void av_log_set_callback(void (*callback)(void*, int, const char*, va_list))\n{\n    av_log_callback = callback;\n}', 'char *av_strdup(const char *s)\n{\n    char *ptr = NULL;\n    if (s) {\n        int len = strlen(s) + 1;\n        ptr = av_realloc(NULL, len);\n        if (ptr)\n            memcpy(ptr, s, len);\n    }\n    return ptr;\n}', 'void *av_realloc(void *ptr, size_t size)\n{\n#if CONFIG_MEMALIGN_HACK\n    int diff;\n#endif\n    if (size > (INT_MAX - 16))\n        return NULL;\n#if CONFIG_MEMALIGN_HACK\n    if (!ptr)\n        return av_malloc(size);\n    diff = ((char *)ptr)[-1];\n    return (char *)realloc((char *)ptr - diff, size + diff) + diff;\n#elif HAVE_ALIGNED_MALLOC\n    return _aligned_realloc(ptr, size, 32);\n#else\n    return realloc(ptr, size);\n#endif\n}']