mirror of
https://github.com/mpv-player/mpv
synced 2024-12-24 07:33:46 +01:00
vf_lavfi: allow setting avopts
This commit is contained in:
parent
3546188a41
commit
c23bf5311f
@ -367,7 +367,7 @@ pp[=filter1[:option1[:option2...]]/[-]filter2...]
|
||||
Horizontal deblocking on luminance only, and switch vertical
|
||||
deblocking on or off automatically depending on available CPU time.
|
||||
|
||||
lavfi=graph[:sws_flags]
|
||||
lavfi=graph[:sws_flags[:o=opts]]
|
||||
Filter video using ffmpeg's libavfilter.
|
||||
|
||||
<graph>
|
||||
@ -406,6 +406,14 @@ lavfi=graph[:sws_flags]
|
||||
|
||||
See ``http://git.videolan.org/?p=ffmpeg.git;a=blob;f=libswscale/swscale.h``.
|
||||
|
||||
<o>
|
||||
Set AVFilterGraph options. These should be documented by ffmpeg.
|
||||
|
||||
*EXAMPLE*:
|
||||
|
||||
``'--vf=lavfi=yadif:o="threads=2,thread_type=slice"'``
|
||||
forces a specific threading configuration.
|
||||
|
||||
noise[=luma[u][t|a][h][p]:chroma[u][t|a][h][p]]
|
||||
Adds noise.
|
||||
|
||||
|
@ -28,6 +28,10 @@
|
||||
|
||||
int parse_avopts(void *v, char *str){
|
||||
char *start;
|
||||
|
||||
if (!str)
|
||||
return 0;
|
||||
|
||||
start= str= strdup(str);
|
||||
|
||||
while(str && *str){
|
||||
|
@ -38,6 +38,7 @@
|
||||
#include "core/mp_msg.h"
|
||||
#include "core/m_option.h"
|
||||
#include "core/m_struct.h"
|
||||
#include "core/av_opts.h"
|
||||
|
||||
#include "video/img_format.h"
|
||||
#include "video/mp_image.h"
|
||||
@ -77,6 +78,7 @@ struct vf_priv_s {
|
||||
// options
|
||||
char *cfg_graph;
|
||||
int64_t cfg_sws_flags;
|
||||
char *cfg_avopts;
|
||||
};
|
||||
|
||||
static const struct vf_priv_s vf_priv_dflt = {
|
||||
@ -131,6 +133,12 @@ static bool recreate_graph(struct vf_instance *vf, int width, int height,
|
||||
if (!graph)
|
||||
goto error;
|
||||
|
||||
if (parse_avopts(graph, p->cfg_avopts) < 0) {
|
||||
mp_msg(MSGT_VFILTER, MSGL_FATAL, "lavfi: could not set opts: '%s'\n",
|
||||
p->cfg_avopts);
|
||||
goto error;
|
||||
}
|
||||
|
||||
AVFilterInOut *outputs = avfilter_inout_alloc();
|
||||
AVFilterInOut *inputs = avfilter_inout_alloc();
|
||||
if (!outputs || !inputs)
|
||||
@ -323,6 +331,7 @@ static int vf_open(vf_instance_t *vf, char *args)
|
||||
static const m_option_t vf_opts_fields[] = {
|
||||
{"graph", ST_OFF(cfg_graph), CONF_TYPE_STRING, CONF_MIN, 1},
|
||||
{"sws_flags", ST_OFF(cfg_sws_flags), CONF_TYPE_INT64},
|
||||
{"o", ST_OFF(cfg_avopts), CONF_TYPE_STRING},
|
||||
{0}
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user