| @@ -79,6 +79,7 @@ struct opts { · 78 unmodified lines |
| 79 | bool interlaced_only; | 79 | bool interlaced_only; |
| 80 | int mode; | 80 | int mode; |
| 81 | int field_parity; | 81 | int field_parity; |
| | 82 | int format; |
| 82 | }; | 83 | }; |
| 83 | | 84 | |
| 84 | struct priv { | 85 | struct priv { |
| @@ -467,6 +468,9 @@ static void vf_d3d11vpp_process(struct mp_filter *vf) · 382 unmodified lines |
| 467 | p->out_params.crop.y0 = lrintf(p->opts->scale * p->out_params.crop.y0); | 468 | p->out_params.crop.y0 = lrintf(p->opts->scale * p->out_params.crop.y0); |
| 468 | p->out_params.crop.y1 = lrintf(p->opts->scale * p->out_params.crop.y1); | 469 | p->out_params.crop.y1 = lrintf(p->opts->scale * p->out_params.crop.y1); |
| 469 | | 470 | |
| | 471 | if (p->opts->format) |
| | 472 | p->out_params.hw_subfmt = p->opts->format; |
| | 473 | |
| 470 | p->require_filtering = p->params.hw_subfmt != p->out_params.hw_subfmt || | 474 | p->require_filtering = p->params.hw_subfmt != p->out_params.hw_subfmt || |
| 471 | p->params.w != p->out_params.w || | 475 | p->params.w != p->out_params.w || |
| 472 | p->params.h != p->out_params.h; | 476 | p->params.h != p->out_params.h; |
| @@ -599,6 +603,7 @@ fail: · 126 unmodified lines |
| 599 | | 603 | |
| 600 | #define OPT_BASE_STRUCT struct opts | 604 | #define OPT_BASE_STRUCT struct opts |
| 601 | static const m_option_t vf_opts_fields[] = { | 605 | static const m_option_t vf_opts_fields[] = { |
| | 606 | {"format", OPT_IMAGEFORMAT(format)}, |
| 602 | {"deint", OPT_BOOL(deint_enabled)}, | 607 | {"deint", OPT_BOOL(deint_enabled)}, |
| 603 | {"scale", OPT_FLOAT(scale)}, | 608 | {"scale", OPT_FLOAT(scale)}, |
| 604 | {"scaling-mode", OPT_CHOICE(scaling_mode, | 609 | {"scaling-mode", OPT_CHOICE(scaling_mode, |