@ -37,27 +37,6 @@
# define HLIT_BOX (1<<1)
# define HCLR_BOX (1<<2)
# define BOTTOM_LEFT 1
# define BOTTOM_CENTER 2
# define BOTTOM_RIGHT 3
# define MIDDLE_LEFT 4
# define MIDDLE_CENTER 5
# define MIDDLE_RIGHT 6
# define TOP_LEFT 7
# define TOP_CENTER 8
# define TOP_RIGHT 9
typedef struct {
char * font ;
int fontsize ;
int color ;
int back_color ;
int bold ;
int italic ;
int underline ;
int alignment ;
} MovTextDefault ;
typedef struct {
uint16_t fontID ;
char * font ;
@ -87,7 +66,6 @@ typedef struct {
HilightcolorBox c ;
FontRecord * * ftab ;
FontRecord * ftab_temp ;
MovTextDefault d ;
uint8_t box_flags ;
uint16_t style_entries , ftab_entries ;
uint64_t tracksize ;
@ -128,9 +106,6 @@ static int mov_text_tx3g(AVCodecContext *avctx, MovTextContext *m)
{
char * tx3g_ptr = avctx - > extradata ;
int i , box_size , font_length ;
int8_t v_align , h_align ;
int style_fontID ;
StyleBox s_default ;
m - > count_f = 0 ;
m - > ftab_entries = 0 ;
@ -141,52 +116,13 @@ static int mov_text_tx3g(AVCodecContext *avctx, MovTextContext *m)
// Display Flags
tx3g_ptr + = 4 ;
// Alignment
h_align = * tx3g_ptr + + ;
v_align = * tx3g_ptr + + ;
if ( h_align = = 0 ) {
if ( v_align = = 0 )
m - > d . alignment = TOP_LEFT ;
if ( v_align = = 1 )
m - > d . alignment = MIDDLE_LEFT ;
if ( v_align = = - 1 )
m - > d . alignment = BOTTOM_LEFT ;
}
if ( h_align = = 1 ) {
if ( v_align = = 0 )
m - > d . alignment = TOP_CENTER ;
if ( v_align = = 1 )
m - > d . alignment = MIDDLE_CENTER ;
if ( v_align = = - 1 )
m - > d . alignment = BOTTOM_CENTER ;
}
if ( h_align = = - 1 ) {
if ( v_align = = 0 )
m - > d . alignment = TOP_RIGHT ;
if ( v_align = = 1 )
m - > d . alignment = MIDDLE_RIGHT ;
if ( v_align = = - 1 )
m - > d . alignment = BOTTOM_RIGHT ;
}
tx3g_ptr + = 2 ;
// Background Color
memcpy ( & m - > d . back_color , tx3g_ptr , 3 ) ;
tx3g_ptr + = 4 ;
// BoxRecord
tx3g_ptr + = 8 ;
// StyleRecord
tx3g_ptr + = 4 ;
// fontID
style_fontID = AV_RB16 ( tx3g_ptr ) ;
tx3g_ptr + = 2 ;
// face-style-flags
s_default . style_flag = * tx3g_ptr + + ;
m - > d . bold = s_default . style_flag & STYLE_FLAG_BOLD ;
m - > d . italic = s_default . style_flag & STYLE_FLAG_ITALIC ;
m - > d . underline = s_default . style_flag & STYLE_FLAG_UNDERLINE ;
// fontsize
m - > d . fontsize = * tx3g_ptr + + ;
// Primary color
memcpy ( & m - > d . color , tx3g_ptr , 3 ) ;
tx3g_ptr + = 4 ;
tx3g_ptr + = 12 ;
// FontRecord
// FontRecord Size
tx3g_ptr + = 4 ;
@ -233,10 +169,6 @@ static int mov_text_tx3g(AVCodecContext *avctx, MovTextContext *m)
}
tx3g_ptr = tx3g_ptr + font_length ;
}
for ( i = 0 ; i < m - > ftab_entries ; i + + ) {
if ( style_fontID = = m - > ftab [ i ] - > fontID )
m - > d . font = m - > ftab [ i ] - > font ;
}
return 0 ;
}
@ -380,15 +312,9 @@ static int mov_text_init(AVCodecContext *avctx) {
* it ' s very common to find files where the default style is broken
* and respecting it results in a worse experience than ignoring it .
*/
int ret ;
MovTextContext * m = avctx - > priv_data ;
ret = mov_text_tx3g ( avctx , m ) ;
if ( ret = = 0 ) {
return ff_ass_subtitle_header ( avctx , m - > d . font , m - > d . fontsize , m - > d . color ,
m - > d . back_color , m - > d . bold , m - > d . italic ,
m - > d . underline , m - > d . alignment ) ;
} else
return ff_ass_subtitle_header_default ( avctx ) ;
mov_text_tx3g ( avctx , m ) ;
return ff_ass_subtitle_header_default ( avctx ) ;
}
static int mov_text_decode_frame ( AVCodecContext * avctx ,