Browse Source

decoder: use an object to create the decoder device

Allowing the window to be NULL, which is OK for D3D11/D3D9/NVDEC.
pull/100/head
Steve Lhomme 7 years ago
parent
commit
476b5a02c2
  1. 4
      include/vlc_codec.h
  2. 6
      src/input/decoder_helpers.c
  3. 2
      src/video_output/video_output.c

4
include/vlc_codec.h

@ -604,8 +604,8 @@ typedef int (*vlc_decoder_device_Open)(vlc_decoder_device *device,
* This function will be hidden in the future. It is now used by opengl vout
* module as a transition.
*/
VLC_USED vlc_decoder_device *
vlc_decoder_device_Create(vout_window_t *window);
vlc_decoder_device *
vlc_decoder_device_Create(vlc_object_t *, vout_window_t *window) VLC_USED;
/**
* Hold a decoder device

6
src/input/decoder_helpers.c

@ -182,13 +182,13 @@ static int decoder_device_Open(void *func, bool forced, va_list ap)
}
vlc_decoder_device *
vlc_decoder_device_Create(vout_window_t *window)
vlc_decoder_device_Create(vlc_object_t *o, vout_window_t *window)
{
struct vlc_decoder_device_priv *priv =
vlc_object_create(window, sizeof (*priv));
vlc_object_create(o, sizeof (*priv));
if (!priv)
return NULL;
char *name = var_InheritString(window, "dec-dev");
char *name = var_InheritString(o, "dec-dev");
module_t *module = vlc_module_load(&priv->device, "decoder device", name,
true, decoder_device_Open, &priv->device,
window);

2
src/video_output/video_output.c

@ -2033,7 +2033,7 @@ static int vout_EnableWindow(vout_thread_t *vout, const video_format_t *original
if (pp_dec_device)
{
if (sys->dec_device == NULL)
sys->dec_device = vlc_decoder_device_Create(sys->display_cfg.window);
sys->dec_device = vlc_decoder_device_Create(&vout->obj, sys->display_cfg.window);
*pp_dec_device = sys->dec_device ? vlc_decoder_device_Hold( sys->dec_device ) : NULL;
}
vlc_mutex_unlock(&sys->window_lock);

Loading…
Cancel
Save