[vlc-commits] aom: encoder: add tile-rows and tile-columns options

Tristan Matthews git at videolan.org
Mon Sep 24 12:17:54 CEST 2018


vlc | branch: master | Tristan Matthews <tmatth at videolan.org> | Tue Sep 18 23:57:01 2018 -0400| [ab19dcad1b324930f281f39de9c5b5a6ddad61fd] | committer: Tristan Matthews

aom: encoder: add tile-rows and tile-columns options

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=ab19dcad1b324930f281f39de9c5b5a6ddad61fd
---

 modules/codec/aom.c | 35 ++++++++++++++++++++++++++++++++---
 1 file changed, 32 insertions(+), 3 deletions(-)

diff --git a/modules/codec/aom.c b/modules/codec/aom.c
index 770a9be564..6c130f4114 100644
--- a/modules/codec/aom.c
+++ b/modules/codec/aom.c
@@ -80,6 +80,10 @@ vlc_module_begin ()
             change_integer_range( 0, 3 )
         add_integer( SOUT_CFG_PREFIX "bitdepth", 8, "Bit Depth", NULL, true )
             change_integer_list( pi_enc_bitdepth_values_list, ppsz_enc_bitdepth_text )
+        add_integer( SOUT_CFG_PREFIX "tile-rows", 0, "Tile Rows (in log2 units)", NULL, true )
+            change_integer_range( 0, 6 ) /* 1 << 6 == MAX_TILE_ROWS */
+        add_integer( SOUT_CFG_PREFIX "tile-columns", 0, "Tile Columns (in log2 units)", NULL, true )
+            change_integer_range( 0, 6 ) /* 1 << 6 == MAX_TILE_COLS */
 #endif
 vlc_module_end ()
 
@@ -360,6 +364,12 @@ static int OpenDecoder(vlc_object_t *p_this)
     return VLC_SUCCESS;
 }
 
+static void destroy_context(vlc_object_t *p_this, aom_codec_ctx_t *context)
+{
+    if (aom_codec_destroy(context))
+        AOM_ERR(p_this, context, "Failed to destroy codec context");
+}
+
 /*****************************************************************************
  * CloseDecoder: decoder destruction
  *****************************************************************************/
@@ -371,7 +381,7 @@ static void CloseDecoder(vlc_object_t *p_this)
     /* Flush decoder */
     FlushDecoder(dec);
 
-    aom_codec_destroy(&sys->ctx);
+    destroy_context(p_this, &sys->ctx);
 
     free(sys);
 }
@@ -417,6 +427,8 @@ static int OpenEncoder(vlc_object_t *p_this)
     int enc_flags;
     int i_profile = var_InheritInteger( p_enc, SOUT_CFG_PREFIX "profile" );
     int i_bit_depth = var_InheritInteger( p_enc, SOUT_CFG_PREFIX "bitdepth" );
+    int i_tile_rows = var_InheritInteger( p_enc, SOUT_CFG_PREFIX "tile-rows" );
+    int i_tile_columns = var_InheritInteger( p_enc, SOUT_CFG_PREFIX "tile-columns" );
 
     /* TODO: implement higher profiles, bit depths and other pixformats. */
     switch( i_profile )
@@ -465,6 +477,24 @@ static int OpenEncoder(vlc_object_t *p_this)
         return VLC_EGENERIC;
     }
 
+    if (i_tile_rows >= 0 &&
+        aom_codec_control(ctx, AV1E_SET_TILE_ROWS, i_tile_rows))
+    {
+        AOM_ERR(p_this, ctx, "Failed to set tile rows");
+        destroy_context(p_this, ctx);
+        free(p_sys);
+        return VLC_EGENERIC;
+    }
+
+    if (i_tile_columns >= 0 &&
+        aom_codec_control(ctx, AV1E_SET_TILE_COLUMNS, i_tile_columns))
+    {
+        AOM_ERR(p_this, ctx, "Failed to set tile columns");
+        destroy_context(p_this, ctx);
+        free(p_sys);
+        return VLC_EGENERIC;
+    }
+
     p_enc->pf_encode_video = Encode;
 
     return VLC_SUCCESS;
@@ -540,8 +570,7 @@ static void CloseEncoder(vlc_object_t *p_this)
 {
     encoder_t *p_enc = (encoder_t *)p_this;
     encoder_sys_t *p_sys = p_enc->p_sys;
-    if (aom_codec_destroy(&p_sys->ctx))
-        AOM_ERR(p_this, &p_sys->ctx, "Failed to destroy codec");
+    destroy_context(p_this, &p_sys->ctx);
     free(p_sys);
 }
 



More information about the vlc-commits mailing list