示例#1
0
文件: internal.cpp 项目: Czhian/QtAV
QString options2StringHelper(void* obj, const char* unit)
{
    qDebug("obj: %p", obj);
    QString s;
    const AVOption* opt = NULL;
    while ((opt = av_opt_next(obj, opt))) {
        if (opt->type == AV_OPT_TYPE_CONST) {
            if (!unit)
                continue;
            if (!qstrcmp(unit, opt->unit))
                s.append(QStringLiteral(" %1=%2").arg(QLatin1String(opt->name)).arg(opt->default_val.i64));
            continue;
        } else {
            if (unit)
                continue;
        }
        s.append(QStringLiteral("\n%1: ").arg(QLatin1String(opt->name)));
        switch (opt->type) {
        case AV_OPT_TYPE_FLAGS:
        case AV_OPT_TYPE_INT:
        case AV_OPT_TYPE_INT64:
            s.append(QStringLiteral("(%1)").arg(opt->default_val.i64));
            break;
        case AV_OPT_TYPE_DOUBLE:
        case AV_OPT_TYPE_FLOAT:
            s.append(QStringLiteral("(%1)").arg(opt->default_val.dbl, 0, 'f'));
            break;
        case AV_OPT_TYPE_STRING:
            if (opt->default_val.str)
                s.append(QStringLiteral("(%1)").arg(QString::fromUtf8(opt->default_val.str)));
            break;
        case AV_OPT_TYPE_RATIONAL:
            s.append(QStringLiteral("(%1/%2)").arg(opt->default_val.q.num).arg(opt->default_val.q.den));
            break;
        default:
            break;
        }
        if (opt->help)
            s.append(QLatin1String(" ")).append(QString::fromUtf8(opt->help));
        if (opt->unit && opt->type != AV_OPT_TYPE_CONST)
            s.append(QLatin1String("\n ")).append(options2StringHelper(obj, opt->unit));
    }
    return s;
}
示例#2
0
QString optionsToString(void* obj) {
    return options2StringHelper(obj, NULL);
}