[vlc-commits] decoder: add Destroy helper function for decoder owners
Steve Lhomme
git at videolan.org
Mon Feb 18 16:11:21 CET 2019
vlc | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Mon Feb 18 14:50:21 2019 +0100| [4a79e6a4929085cd78024e0c0367c2bc01ab11b4] | committer: Steve Lhomme
decoder: add Destroy helper function for decoder owners
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=4a79e6a4929085cd78024e0c0367c2bc01ab11b4
---
include/vlc_codec.h | 7 +++++++
src/input/decoder_helpers.c | 29 +++++++++++++++++++++++++++++
src/libvlccore.sym | 1 +
3 files changed, 37 insertions(+)
diff --git a/include/vlc_codec.h b/include/vlc_codec.h
index c287953ba7..2042ad2424 100644
--- a/include/vlc_codec.h
+++ b/include/vlc_codec.h
@@ -320,6 +320,13 @@ VLC_API void decoder_AbortPictures( decoder_t *dec, bool b_abort );
VLC_API void decoder_Init( decoder_t *dec, const es_format_t * );
/**
+ * Destroy a decoder and reset the structure.
+ *
+ * To be used by decoder owners.
+ */
+VLC_API void decoder_Destroy( decoder_t **p_dec );
+
+/**
* This function queues a single picture to the video output.
*
* \note
diff --git a/src/input/decoder_helpers.c b/src/input/decoder_helpers.c
index 51f7ce8f6d..b60b830123 100644
--- a/src/input/decoder_helpers.c
+++ b/src/input/decoder_helpers.c
@@ -28,6 +28,8 @@
#include <vlc_common.h>
#include <vlc_codec.h>
+#include <vlc_meta.h>
+#include <vlc_modules.h>
void decoder_Init( decoder_t *p_dec, const es_format_t *restrict p_fmt )
{
@@ -43,3 +45,30 @@ void decoder_Init( decoder_t *p_dec, const es_format_t *restrict p_fmt )
es_format_Copy( &p_dec->fmt_in, p_fmt );
es_format_Init( &p_dec->fmt_out, p_fmt->i_cat, 0 );
}
+
+static void decoder_Clean( decoder_t *p_dec )
+{
+ es_format_Clean( &p_dec->fmt_in );
+ es_format_Clean( &p_dec->fmt_out );
+
+ if ( p_dec->p_description )
+ {
+ vlc_meta_Delete(p_dec->p_description);
+ p_dec->p_description = NULL;
+ }
+ if ( p_dec->p_module != NULL )
+ {
+ module_unneed(p_dec, p_dec->p_module);
+ p_dec->p_module = NULL;
+ }
+}
+
+void decoder_Destroy( decoder_t **p_dec )
+{
+ if (*p_dec != NULL)
+ {
+ decoder_Clean( *p_dec );
+ vlc_object_release( *p_dec );
+ *p_dec = NULL;
+ }
+}
diff --git a/src/libvlccore.sym b/src/libvlccore.sym
index 09b5936180..906a449f2b 100644
--- a/src/libvlccore.sym
+++ b/src/libvlccore.sym
@@ -74,6 +74,7 @@ date_Decrement
date_Increment
date_Init
decoder_Init
+decoder_Destroy
decoder_AbortPictures
decoder_NewAudioBuffer
demux_PacketizerDestroy
More information about the vlc-commits
mailing list