[vlc-devel] [PATCH 15/30] video context: add a Create/Release function for the video context
Steve Lhomme
robux4 at ycbcr.xyz
Wed Sep 25 15:31:04 CEST 2019
---
include/vlc_picture.h | 3 +++
src/input/decoder_helpers.c | 15 +++++++++++++++
src/libvlccore.sym | 2 ++
src/video_output/display.c | 8 ++++++--
4 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/include/vlc_picture.h b/include/vlc_picture.h
index c314c9c2075..99495ca43a4 100644
--- a/include/vlc_picture.h
+++ b/include/vlc_picture.h
@@ -85,6 +85,9 @@ typedef struct vlc_video_context
vlc_decoder_device *device;
} vlc_video_context;
+VLC_API vlc_video_context * vlc_video_context_Create(vlc_decoder_device *);
+VLC_API void vlc_video_context_Release(vlc_video_context *);
+
/**
* Video picture
*/
diff --git a/src/input/decoder_helpers.c b/src/input/decoder_helpers.c
index 51e097961b9..666f0f83034 100644
--- a/src/input/decoder_helpers.c
+++ b/src/input/decoder_helpers.c
@@ -187,3 +187,18 @@ vlc_decoder_device_Release(vlc_decoder_device *device)
vlc_object_delete(device);
}
}
+
+/* video context */
+
+vlc_video_context * vlc_video_context_Create(vlc_decoder_device *device)
+{
+ vlc_video_context *vctx = malloc(sizeof(*vctx));
+ if (unlikely(vctx == NULL))
+ return NULL;
+ vctx->device = device;
+ return vctx;
+}
+void vlc_video_context_Release(vlc_video_context *vctx)
+{
+ free(vctx);
+}
diff --git a/src/libvlccore.sym b/src/libvlccore.sym
index 55dc2a7391a..70a5bf74422 100644
--- a/src/libvlccore.sym
+++ b/src/libvlccore.sym
@@ -946,3 +946,5 @@ vlc_media_tree_Unlock
vlc_media_tree_Find
vlc_media_tree_Preparse
vlc_viewpoint_to_4x4
+vlc_video_context_Create
+vlc_video_context_Release
diff --git a/src/video_output/display.c b/src/video_output/display.c
index 9051eb52480..0ecf794972c 100644
--- a/src/video_output/display.c
+++ b/src/video_output/display.c
@@ -770,11 +770,11 @@ vout_display_t *vout_display_New(vlc_object_t *parent,
if (owner)
vd->owner = *owner;
- vlc_video_context fake_vtcx = { .device = dec_device };
+ vlc_video_context *fake_vctx = vlc_video_context_Create(dec_device);
if (vlc_module_load(vd, "vout display", module, module && *module != '\0',
vout_display_start, vd, &osys->cfg, &vd->fmt,
- &fake_vtcx) == NULL)
+ fake_vctx) == NULL)
goto error;
#if defined(__OS2__)
@@ -796,8 +796,12 @@ vout_display_t *vout_display_New(vlc_object_t *parent,
video_format_Clean(&vd->fmt);
goto error;
}
+ if (fake_vctx)
+ vlc_video_context_Release(fake_vctx);
return vd;
error:
+ if (fake_vctx)
+ vlc_video_context_Release(fake_vctx);
video_format_Clean(&vd->source);
vlc_object_delete(vd);
return NULL;
--
2.17.1
More information about the vlc-devel
mailing list