]> git.sesse.net Git - vlc/blobdiff - modules/codec/subtitles/t140.c
Modified our vaapi wrapper in avcodec to be more generic.
[vlc] / modules / codec / subtitles / t140.c
index 059cce4fe6bd49971bd023ebd0f05a42cb96971a..1a3fc2acdbd83f69919c199d741834ce965f7267 100644 (file)
 # include "config.h"
 #endif
 
-#include <vlc/vlc.h>
+#include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 #include <vlc_codec.h>
 #include <vlc_sout.h>
 
 static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
-vlc_module_begin();
-    add_submodule();
-    set_description( _("T.140 text encoder") );
-    set_capability( "encoder", 100 );
-    set_callbacks( Open, Close );
-vlc_module_end();
+vlc_module_begin ()
+    set_description( N_("T.140 text encoder") )
+    set_capability( "encoder", 100 )
+    set_callbacks( Open, Close )
+vlc_module_end ()
 
 
 static block_t *Encode ( encoder_t *, subpicture_t * );
@@ -49,7 +47,7 @@ static int Open( vlc_object_t *p_this )
 
     switch( p_enc->fmt_out.i_codec )
     {
-        case VLC_FOURCC('s','u','b','t'):
+        case VLC_CODEC_SUBT:
             if( ( p_enc->fmt_out.subs.psz_encoding != NULL )
              && strcasecmp( p_enc->fmt_out.subs.psz_encoding, "utf8" )
              && strcasecmp( p_enc->fmt_out.subs.psz_encoding, "UTF-8" ) )
@@ -57,19 +55,20 @@ static int Open( vlc_object_t *p_this )
                 msg_Err( p_this, "Only UTF-8 encoding supported" );
                 return VLC_EGENERIC;
             }
-        case VLC_FOURCC('t','1','4','0'):
+        case VLC_CODEC_ITU_T140:
             break;
 
         default:
             if( !p_enc->b_force )
                 return VLC_EGENERIC;
 
-            p_enc->fmt_out.i_codec = VLC_FOURCC('t','1','4','0');
+            p_enc->fmt_out.i_codec = VLC_CODEC_ITU_T140;
     }
 
     p_enc->p_sys = NULL;
 
     p_enc->pf_encode_sub = Encode;
+    p_enc->fmt_out.i_cat = SPU_ES;
     return VLC_SUCCESS;
 }
 
@@ -82,6 +81,8 @@ static void Close( vlc_object_t *p_this )
 
 static block_t *Encode( encoder_t *p_enc, subpicture_t *p_spu )
 {
+    VLC_UNUSED( p_enc );
+
     subpicture_region_t *p_region;
     block_t *p_block;
     size_t len;
@@ -91,7 +92,7 @@ static block_t *Encode( encoder_t *p_enc, subpicture_t *p_spu )
 
     p_region = p_spu->p_region;
     if( ( p_region == NULL )
-     || ( p_region->fmt.i_chroma != VLC_FOURCC('T','E','X','T') )
+     || ( p_region->fmt.i_chroma != VLC_CODEC_TEXT )
      || ( p_region->psz_text == NULL ) )
         return NULL;
 
@@ -100,5 +101,9 @@ static block_t *Encode( encoder_t *p_enc, subpicture_t *p_spu )
     p_block = block_New( p_enc, len );
     memcpy( p_block->p_buffer, p_region->psz_text, len );
 
+    p_block->i_pts = p_block->i_dts = p_spu->i_start;
+    if( !p_spu->b_ephemer && ( p_spu->i_stop > p_spu->i_start ) )
+        p_block->i_length = p_spu->i_stop - p_spu->i_start;
+
     return p_block;
 }