[vlc-devel] [PATCH 05/26] sout:encoder: add a function to open the given encoder

Steve Lhomme robux4 at ycbcr.xyz
Mon Jan 18 08:32:44 UTC 2021


Opening the encoders from the core allow the use of vlc_obj_malloc in encoders.
---
 include/vlc_sout.h                | 2 ++
 src/libvlccore.sym                | 1 +
 src/missing.c                     | 6 ++++++
 src/stream_output/stream_output.c | 9 +++++++++
 4 files changed, 18 insertions(+)

diff --git a/include/vlc_sout.h b/include/vlc_sout.h
index d20d8294902..fe490ab342b 100644
--- a/include/vlc_sout.h
+++ b/include/vlc_sout.h
@@ -230,6 +230,8 @@ static inline bool sout_StreamIsSynchronous(sout_stream_t *s)
 VLC_API encoder_t * sout_EncoderCreate( vlc_object_t *, size_t, enum es_format_category_e );
 #define sout_EncoderCreate(o,s,c) sout_EncoderCreate(VLC_OBJECT(o),s,c)
 
+VLC_API int sout_EncoderOpen(encoder_t *, const char *name, bool strict);
+
 /****************************************************************************
  * Announce handler
  ****************************************************************************/
diff --git a/src/libvlccore.sym b/src/libvlccore.sym
index 71267d5dfc1..231b63d8ecc 100644
--- a/src/libvlccore.sym
+++ b/src/libvlccore.sym
@@ -337,6 +337,7 @@ sout_AccessOutWrite
 sout_AnnounceRegisterSDP
 sout_AnnounceUnRegister
 sout_EncoderCreate
+sout_EncoderOpen
 sout_MuxAddStream
 sout_MuxDelete
 sout_MuxDeleteStream
diff --git a/src/missing.c b/src/missing.c
index b6de3e93135..df8c7bfbed7 100644
--- a/src/missing.c
+++ b/src/missing.c
@@ -106,6 +106,12 @@ encoder_t *sout_EncoderCreate( vlc_object_t *p_this, size_t owner_size, enum es_
     return NULL;
 }
 
+int sout_EncoderOpen( encoder_t *p_encoder, const char *name, bool strict )
+{
+    VLC_UNUSED (p_encoder); VLC_UNUSED (name); VLC_UNUSED (strict);
+    vlc_assert_unreachable ();
+}
+
 noreturn sout_input_t *sout_MuxAddStream(sout_mux_t *mux,
                                          const es_format_t *fmt)
 {
diff --git a/src/stream_output/stream_output.c b/src/stream_output/stream_output.c
index 22bda26e987..9053a1c943c 100644
--- a/src/stream_output/stream_output.c
+++ b/src/stream_output/stream_output.c
@@ -1010,3 +1010,12 @@ encoder_t *sout_EncoderCreate( vlc_object_t *p_this, size_t owner_size, enum es_
     assert( owner_size >= sizeof(encoder_t) );
     return vlc_custom_create( p_this, owner_size, encoder_caps[i_cat] );
 }
+
+int sout_EncoderOpen(encoder_t *p_encoder, const char *name, bool strict)
+{
+    p_encoder->p_module =
+        module_need(p_encoder, encoder_caps[p_encoder->fmt_in.i_cat], name, strict);
+    if (!p_encoder->p_module)
+        return VLC_ENOMOD;
+    return VLC_SUCCESS;
+}
-- 
2.29.2



More information about the vlc-devel mailing list