diff --git a/src/drivers/Qt/AviRecord.cpp b/src/drivers/Qt/AviRecord.cpp index 3cbd56d1..ffa0f340 100644 --- a/src/drivers/Qt/AviRecord.cpp +++ b/src/drivers/Qt/AviRecord.cpp @@ -2906,16 +2906,16 @@ LibavEncOptWin::LibavEncOptWin(int type, QWidget *parent) LIBAV::loadCodecConfig( type, codec_name, ctx ); - av_opt_show2( (void*)ctx, NULL, AV_OPT_FLAG_VIDEO_PARAM, 0 ); + //av_opt_show2( (void*)ctx, NULL, AV_OPT_FLAG_VIDEO_PARAM, 0 ); - ctx_child = av_opt_child_next( ctx, ctx_child ); + //ctx_child = av_opt_child_next( ctx, ctx_child ); - while ( ctx_child != NULL ) - { - av_opt_show2( ctx_child, NULL, AV_OPT_FLAG_VIDEO_PARAM, 0 ); + //while ( ctx_child != NULL ) + //{ + // av_opt_show2( ctx_child, NULL, AV_OPT_FLAG_VIDEO_PARAM, 0 ); - ctx_child = av_opt_child_next( ctx, ctx_child ); - } + // ctx_child = av_opt_child_next( ctx, ctx_child ); + //} } obj = ctx; @@ -3354,6 +3354,54 @@ LibavEncOptInputWin::LibavEncOptInputWin( LibavEncOptItem *itemIn, QWidget *pare grid->addWidget( c, 3, 1 ); } break; + case AV_OPT_TYPE_FLAGS: + { + int64_t val; + QCheckBox *c; + + av_opt_get_int( obj, opt->name, 0, &val ); + + grid->addWidget( new QLabel( tr("Default:") ), 2, 0 ); + + sprintf( stmp, "0x%08llX", (unsigned long long)opt->default_val.i64 ); + + grid->addWidget( new QLabel( tr(stmp) ), 2, 1 ); + + if ( item->units.size() > 0 ) + { + int row, col; + + for (size_t i=0; iunits.size(); i++) + { + sprintf( stmp, "%s", item->units[i]->name ); + + c = new QCheckBox( tr(stmp) ); + + if ( item->units[i]->help ) + { + c->setToolTip( tr(item->units[i]->help) ); + } + + c->setChecked( (val & item->units[i]->default_val.i64) ? true : false ); + + chkBox.push_back(c); + } + + row = col = 0; + for (size_t i=0; iaddWidget( chkBox[i], row+3, col ); + + row++; + if ( row >= 8 ) + { + row = 0; + col++; + } + } + } + } + break; default: break; @@ -3464,6 +3512,23 @@ void LibavEncOptInputWin::applyChanges(void) } } break; + case AV_OPT_TYPE_FLAGS: + { + if ( chkBox.size() > 0 ) + { + int64_t i64=0; + + for (size_t i=0; iisChecked() ) + { + i64 |= item->units[i]->default_val.i64; + } + } + av_opt_set_int( item->obj, item->opt->name, i64, 0 ); + } + } + break; default: break; } @@ -3542,6 +3607,17 @@ void LibavEncOptInputWin::resetDefaultsCB(void) } } break; + case AV_OPT_TYPE_FLAGS: + { + if ( chkBox.size() > 0 ) + { + for (size_t i=0; isetChecked( (item->opt->default_val.i64 & item->units[i]->default_val.i64) ? true : false ); + } + } + } + break; default: break;