Commit 62f7a588 authored by Derk-Jan Hartman's avatar Derk-Jan Hartman

* subtitle.c: make sure int -> date conversion is don properly everywhere.

parent 14aee4fd
...@@ -105,8 +105,8 @@ static void TextUnload( text_t * ); ...@@ -105,8 +105,8 @@ static void TextUnload( text_t * );
typedef struct typedef struct
{ {
mtime_t i_start; int64_t i_start;
mtime_t i_stop; int64_t i_stop;
char *psz_text; char *psz_text;
} subtitle_t; } subtitle_t;
...@@ -121,7 +121,7 @@ struct demux_sys_t ...@@ -121,7 +121,7 @@ struct demux_sys_t
int64_t i_next_demux_date; int64_t i_next_demux_date;
int64_t i_microsecperframe; int64_t i_microsecperframe;
mtime_t i_original_mspf; int64_t i_original_mspf;
char *psz_header; char *psz_header;
int i_subtitle; int i_subtitle;
...@@ -194,13 +194,13 @@ static int Open ( vlc_object_t *p_this ) ...@@ -194,13 +194,13 @@ static int Open ( vlc_object_t *p_this )
f_fps = var_CreateGetFloat( p_demux, "sub-fps" ); f_fps = var_CreateGetFloat( p_demux, "sub-fps" );
if( f_fps >= 1.0 ) if( f_fps >= 1.0 )
{ {
p_sys->i_microsecperframe = (mtime_t)( (float)1000000 / f_fps ); p_sys->i_microsecperframe = (int64_t)( (float)1000000 / f_fps );
} }
f_fps = var_CreateGetFloat( p_demux, "sub-original-fps" ); f_fps = var_CreateGetFloat( p_demux, "sub-original-fps" );
if( f_fps >= 1.0 ) if( f_fps >= 1.0 )
{ {
p_sys->i_original_mspf = (mtime_t)( (float)1000000 / f_fps ); p_sys->i_original_mspf = (int64_t)( (float)1000000 / f_fps );
} }
else else
{ {
...@@ -676,8 +676,8 @@ static int ParseMicroDvd( demux_t *p_demux, subtitle_t *p_subtitle ) ...@@ -676,8 +676,8 @@ static int ParseMicroDvd( demux_t *p_demux, subtitle_t *p_subtitle )
char *s; char *s;
char buffer_text[MAX_LINE + 1]; char buffer_text[MAX_LINE + 1];
unsigned int i_start; int i_start;
unsigned int i_stop; int i_stop;
unsigned int i; unsigned int i;
p_subtitle->i_start = 0; p_subtitle->i_start = 0;
...@@ -709,8 +709,8 @@ static int ParseMicroDvd( demux_t *p_demux, subtitle_t *p_subtitle ) ...@@ -709,8 +709,8 @@ static int ParseMicroDvd( demux_t *p_demux, subtitle_t *p_subtitle )
} }
} }
p_subtitle->i_start = (mtime_t)i_start * p_sys->i_microsecperframe; p_subtitle->i_start = (int64_t)i_start * p_sys->i_microsecperframe;
p_subtitle->i_stop = (mtime_t)i_stop * p_sys->i_microsecperframe; p_subtitle->i_stop = (int64_t)i_stop * p_sys->i_microsecperframe;
p_subtitle->psz_text = strndup( buffer_text, MAX_LINE ); p_subtitle->psz_text = strndup( buffer_text, MAX_LINE );
return( 0 ); return( 0 );
} }
...@@ -732,8 +732,8 @@ static int ParseSubRip( demux_t *p_demux, subtitle_t *p_subtitle ) ...@@ -732,8 +732,8 @@ static int ParseSubRip( demux_t *p_demux, subtitle_t *p_subtitle )
char *s; char *s;
char buffer_text[ 10 * MAX_LINE]; char buffer_text[ 10 * MAX_LINE];
int i_buffer_text; int i_buffer_text;
mtime_t i_start; int64_t i_start;
mtime_t i_stop; int64_t i_stop;
p_subtitle->i_start = 0; p_subtitle->i_start = 0;
p_subtitle->i_stop = 0; p_subtitle->i_stop = 0;
...@@ -751,15 +751,15 @@ static int ParseSubRip( demux_t *p_demux, subtitle_t *p_subtitle ) ...@@ -751,15 +751,15 @@ static int ParseSubRip( demux_t *p_demux, subtitle_t *p_subtitle )
&h1, &m1, &s1, &d1, &h1, &m1, &s1, &d1,
&h2, &m2, &s2, &d2 ) == 8 ) &h2, &m2, &s2, &d2 ) == 8 )
{ {
i_start = ( (mtime_t)h1 * 3600*1000 + i_start = ( (int64_t)h1 * 3600*1000 +
(mtime_t)m1 * 60*1000 + (int64_t)m1 * 60*1000 +
(mtime_t)s1 * 1000 + (int64_t)s1 * 1000 +
(mtime_t)d1 ) * 1000; (int64_t)d1 ) * 1000;
i_stop = ( (mtime_t)h2 * 3600*1000 + i_stop = ( (int64_t)h2 * 3600*1000 +
(mtime_t)m2 * 60*1000 + (int64_t)m2 * 60*1000 +
(mtime_t)s2 * 1000 + (int64_t)s2 * 1000 +
(mtime_t)d2 ) * 1000; (int64_t)d2 ) * 1000;
/* Now read text until an empty line */ /* Now read text until an empty line */
for( i_buffer_text = 0;; ) for( i_buffer_text = 0;; )
...@@ -782,10 +782,10 @@ static int ParseSubRip( demux_t *p_demux, subtitle_t *p_subtitle ) ...@@ -782,10 +782,10 @@ static int ParseSubRip( demux_t *p_demux, subtitle_t *p_subtitle )
if( p_sys->i_microsecperframe != 0 && if( p_sys->i_microsecperframe != 0 &&
p_sys->i_original_mspf != 0) p_sys->i_original_mspf != 0)
{ {
p_subtitle->i_start = (mtime_t)i_start * p_subtitle->i_start = (int64_t)i_start *
p_sys->i_microsecperframe/ p_sys->i_microsecperframe/
p_sys->i_original_mspf; p_sys->i_original_mspf;
p_subtitle->i_stop = (mtime_t)i_stop * p_subtitle->i_stop = (int64_t)i_stop *
p_sys->i_microsecperframe / p_sys->i_microsecperframe /
p_sys->i_original_mspf; p_sys->i_original_mspf;
} }
...@@ -825,8 +825,8 @@ static int ParseSubViewer( demux_t *p_demux, subtitle_t *p_subtitle ) ...@@ -825,8 +825,8 @@ static int ParseSubViewer( demux_t *p_demux, subtitle_t *p_subtitle )
char *s; char *s;
char buffer_text[ 10 * MAX_LINE]; char buffer_text[ 10 * MAX_LINE];
int i_buffer_text; int i_buffer_text;
mtime_t i_start; int64_t i_start;
mtime_t i_stop; int64_t i_stop;
p_subtitle->i_start = 0; p_subtitle->i_start = 0;
p_subtitle->i_stop = 0; p_subtitle->i_stop = 0;
...@@ -844,15 +844,15 @@ static int ParseSubViewer( demux_t *p_demux, subtitle_t *p_subtitle ) ...@@ -844,15 +844,15 @@ static int ParseSubViewer( demux_t *p_demux, subtitle_t *p_subtitle )
&h1, &m1, &s1, &d1, &h1, &m1, &s1, &d1,
&h2, &m2, &s2, &d2 ) == 8 ) &h2, &m2, &s2, &d2 ) == 8 )
{ {
i_start = ( (mtime_t)h1 * 3600*1000 + i_start = ( (int64_t)h1 * 3600*1000 +
(mtime_t)m1 * 60*1000 + (int64_t)m1 * 60*1000 +
(mtime_t)s1 * 1000 + (int64_t)s1 * 1000 +
(mtime_t)d1 ) * 1000; (int64_t)d1 ) * 1000;
i_stop = ( (mtime_t)h2 * 3600*1000 + i_stop = ( (int64_t)h2 * 3600*1000 +
(mtime_t)m2 * 60*1000 + (int64_t)m2 * 60*1000 +
(mtime_t)s2 * 1000 + (int64_t)s2 * 1000 +
(mtime_t)d2 ) * 1000; (int64_t)d2 ) * 1000;
/* Now read text until an empty line */ /* Now read text until an empty line */
for( i_buffer_text = 0;; ) for( i_buffer_text = 0;; )
...@@ -912,8 +912,8 @@ static int ParseSSA( demux_t *p_demux, subtitle_t *p_subtitle ) ...@@ -912,8 +912,8 @@ static int ParseSSA( demux_t *p_demux, subtitle_t *p_subtitle )
char buffer_text[ 10 * MAX_LINE]; char buffer_text[ 10 * MAX_LINE];
char *s; char *s;
mtime_t i_start; int64_t i_start;
mtime_t i_stop; int64_t i_stop;
p_subtitle->i_start = 0; p_subtitle->i_start = 0;
p_subtitle->i_stop = 0; p_subtitle->i_stop = 0;
...@@ -937,15 +937,15 @@ static int ParseSSA( demux_t *p_demux, subtitle_t *p_subtitle ) ...@@ -937,15 +937,15 @@ static int ParseSSA( demux_t *p_demux, subtitle_t *p_subtitle )
&h2, &m2, &s2, &c2, &h2, &m2, &s2, &c2,
buffer_text ) == 10 ) buffer_text ) == 10 )
{ {
i_start = ( (mtime_t)h1 * 3600*1000 + i_start = ( (int64_t)h1 * 3600*1000 +
(mtime_t)m1 * 60*1000 + (int64_t)m1 * 60*1000 +
(mtime_t)s1 * 1000 + (int64_t)s1 * 1000 +
(mtime_t)c1 * 10 ) * 1000; (int64_t)c1 * 10 ) * 1000;
i_stop = ( (mtime_t)h2 * 3600*1000 + i_stop = ( (int64_t)h2 * 3600*1000 +
(mtime_t)m2 * 60*1000 + (int64_t)m2 * 60*1000 +
(mtime_t)s2 * 1000 + (int64_t)s2 * 1000 +
(mtime_t)c2 * 10 ) * 1000; (int64_t)c2 * 10 ) * 1000;
/* The dec expects: ReadOrder, Layer, Style, Name, MarginL, MarginR, MarginV, Effect, Text */ /* The dec expects: ReadOrder, Layer, Style, Name, MarginL, MarginR, MarginV, Effect, Text */
if( p_sys->i_type == SUB_TYPE_SSA1 ) if( p_sys->i_type == SUB_TYPE_SSA1 )
...@@ -1004,7 +1004,7 @@ static int ParseVplayer( demux_t *p_demux, subtitle_t *p_subtitle ) ...@@ -1004,7 +1004,7 @@ static int ParseVplayer( demux_t *p_demux, subtitle_t *p_subtitle )
*/ */
char *p; char *p;
char buffer_text[MAX_LINE + 1]; char buffer_text[MAX_LINE + 1];
mtime_t i_start; int64_t i_start;
unsigned int i; unsigned int i;
p_subtitle->i_start = 0; p_subtitle->i_start = 0;
...@@ -1026,9 +1026,9 @@ static int ParseVplayer( demux_t *p_demux, subtitle_t *p_subtitle ) ...@@ -1026,9 +1026,9 @@ static int ParseVplayer( demux_t *p_demux, subtitle_t *p_subtitle )
memset( buffer_text, '\0', MAX_LINE ); memset( buffer_text, '\0', MAX_LINE );
if( sscanf( p, "%d:%d:%d%[ :]%[^\r\n]", &h, &m, &s, &c, buffer_text ) == 5 ) if( sscanf( p, "%d:%d:%d%[ :]%[^\r\n]", &h, &m, &s, &c, buffer_text ) == 5 )
{ {
i_start = ( (mtime_t)h * 3600*1000 + i_start = ( (int64_t)h * 3600*1000 +
(mtime_t)m * 60*1000 + (int64_t)m * 60*1000 +
(mtime_t)s * 1000 ) * 1000; (int64_t)s * 1000 ) * 1000;
break; break;
} }
} }
...@@ -1085,7 +1085,7 @@ static int ParseSami( demux_t *p_demux, subtitle_t *p_subtitle ) ...@@ -1085,7 +1085,7 @@ static int ParseSami( demux_t *p_demux, subtitle_t *p_subtitle )
text_t *txt = &p_sys->txt; text_t *txt = &p_sys->txt;
char *p; char *p;
int i_start; int64_t i_start;
int i_text; int i_text;
char buffer_text[10*MAX_LINE + 1]; char buffer_text[10*MAX_LINE + 1];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment