aout_instance_t *p_aout = p_private;
VLC_UNUSED(b_recycle);
vout_configuration_t cfg = {
- .vout = p_vout,
- .input = NULL,
- .fmt = p_fmt,
- .dpb_size = 1,
+ .vout = p_vout,
+ .input = NULL,
+ .change_fmt = true,
+ .fmt = p_fmt,
+ .dpb_size = 1,
};
return vout_Request( p_aout, &cfg );
}
/* */
vout_configuration_t cfg = {
- .vout = p_vout,
- .input = VLC_OBJECT(p_resource->p_input),
- .fmt = p_fmt,
- .dpb_size = dpb_size,
+ .vout = p_vout,
+ .input = VLC_OBJECT(p_resource->p_input),
+ .change_fmt = true,
+ .fmt = p_fmt,
+ .dpb_size = dpb_size,
};
p_vout = vout_Request( p_resource->p_input, &cfg );
if( !p_vout )
vout_FlushSubpictureChannel( p_vout, -1 );
vout_configuration_t cfg = {
- .vout = p_vout,
- .input = NULL,
- .fmt = p_fmt,
- .dpb_size = 0,
+ .vout = p_vout,
+ .input = NULL,
+ .change_fmt = false,
+ .fmt = NULL,
+ .dpb_size = 0,
};
p_resource->p_vout_free = vout_Request( p_resource->p_input, &cfg );
}
const vout_configuration_t *cfg)
{
vout_thread_t *vout = cfg->vout;
- if (!cfg->fmt) {
+ if (cfg->change_fmt && !cfg->fmt) {
if (vout)
vout_CloseAndRelease(vout);
return NULL;
spu_Attach(vout->p->p_spu, vout->p->input, true);
}
- vout_control_cmd_t cmd;
- vout_control_cmd_Init(&cmd, VOUT_CONTROL_REINIT);
- cmd.u.cfg = cfg;
+ if (cfg->change_fmt) {
+ vout_control_cmd_t cmd;
+ vout_control_cmd_Init(&cmd, VOUT_CONTROL_REINIT);
+ cmd.u.cfg = cfg;
+
+ vout_control_Push(&vout->p->control, &cmd);
+ vout_control_WaitEmpty(&vout->p->control);
+ }
- vout_control_Push(&vout->p->control, &cmd);
- vout_control_WaitEmpty(&vout->p->control);
if (!vout->p->dead) {
msg_Dbg(object, "reusing provided vout");
return vout;