Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
52960620
Commit
52960620
authored
Mar 11, 2003
by
Laurent Aimar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* Added support of vplayer subtitles files.
parent
9869e03d
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
74 additions
and
5 deletions
+74
-5
modules/demux/util/sub.c
modules/demux/util/sub.c
+72
-4
modules/demux/util/sub.h
modules/demux/util/sub.h
+2
-1
No files found.
modules/demux/util/sub.c
View file @
52960620
...
...
@@ -2,7 +2,7 @@
* sub.c
*****************************************************************************
* Copyright (C) 1999-2001 VideoLAN
* $Id: sub.c,v 1.
6 2003/02/20 01:52:46 sigmunau
Exp $
* $Id: sub.c,v 1.
7 2003/03/11 20:01:23 fenrir
Exp $
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
...
...
@@ -51,10 +51,11 @@ static int sub_MicroDvdRead( FILE *p_file, subtitle_t *p_subtitle, mtime_t i_mi
static
int
sub_SubRipRead
(
FILE
*
p_file
,
subtitle_t
*
p_subtitle
,
mtime_t
i_microsecperframe
);
static
int
sub_SSA1Read
(
FILE
*
p_file
,
subtitle_t
*
p_subtitle
,
mtime_t
i_microsecperframe
);
static
int
sub_SSA2_4Read
(
FILE
*
p_file
,
subtitle_t
*
p_subtitle
,
mtime_t
i_microsecperframe
);
static
int
sub_Vplayer
(
FILE
*
p_file
,
subtitle_t
*
p_subtitle
,
mtime_t
i_microsecperframe
);
static
void
sub_fix
(
subtitle_demux_t
*
p_sub
);
static
char
*
ppsz_sub_type
[]
=
{
"microdvd"
,
"subrip"
,
"ssa1"
,
"ssa2-4"
,
NULL
};
static
char
*
ppsz_sub_type
[]
=
{
"microdvd"
,
"subrip"
,
"ssa1"
,
"ssa2-4"
,
"vplayer"
,
NULL
};
/*****************************************************************************
* Module descriptor
*****************************************************************************/
...
...
@@ -63,7 +64,7 @@ static char *ppsz_sub_type[] = { "microdvd", "subrip", "ssa1", "ssa2-4", NULL };
"Override frames per second. " \
"It will work only with MicroDVD"
#define SUB_TYPE_LONGTEXT \
"One from \"microdvd\", \"subrip\", \"ssa1\", \"ssa2-4\" " \
"One from \"microdvd\", \"subrip\", \"ssa1\", \"ssa2-4\"
, \"vplayer\"
" \
"(nothing for autodetection, it should always work)"
vlc_module_begin
();
...
...
@@ -177,6 +178,10 @@ static int sub_open ( subtitle_demux_t *p_sub,
{
i_sub_type
=
SUB_TYPE_SSA2_4
;
}
else
if
(
!
strcmp
(
psz_file_type
,
"vplayer"
)
)
{
i_sub_type
=
SUB_TYPE_VPLAYER
;
}
else
{
i_sub_type
=
SUB_TYPE_UNKNOWN
;
...
...
@@ -225,11 +230,19 @@ static int sub_open ( subtitle_demux_t *p_sub,
{
i_sub_type
=
SUB_TYPE_SSA2_4
;
// I hop this will work
}
break
;
}
else
if
(
!
strcmp
(
buffer
,
"Dialogue: Marked"
)
)
{
i_sub_type
=
SUB_TYPE_SSA2_4
;
// could be wrong
break
;
}
else
if
(
sscanf
(
buffer
,
"%d:%d:%d:"
,
&
i_dummy
,
&
i_dummy
,
&
i_dummy
)
==
3
||
sscanf
(
buffer
,
"%d:%d:%d "
,
&
i_dummy
,
&
i_dummy
,
&
i_dummy
)
==
3
)
{
i_sub_type
=
SUB_TYPE_VPLAYER
;
break
;
}
}
}
...
...
@@ -253,6 +266,10 @@ static int sub_open ( subtitle_demux_t *p_sub,
msg_Dbg
(
p_input
,
"detected SSAv2-4 Script format"
);
pf_read_subtitle
=
sub_SSA2_4Read
;
break
;
case
SUB_TYPE_VPLAYER
:
msg_Dbg
(
p_input
,
"detected vplayer format"
);
pf_read_subtitle
=
sub_Vplayer
;
break
;
default:
msg_Err
(
p_sub
,
"unknown subtitile file"
);
fclose
(
p_file
);
...
...
@@ -507,7 +524,7 @@ static int sub_MicroDvdRead( FILE *p_file, subtitle_t *p_subtitle, mtime_t i_mi
char
buffer_text
[
MAX_LINE
+
1
];
uint32_t
i_start
;
uint32_t
i_stop
;
int
i
;
unsigned
int
i
;
for
(
;;
)
{
...
...
@@ -704,3 +721,54 @@ static int sub_SSA2_4Read( FILE *p_file, subtitle_t *p_subtitle, mtime_t i_micr
return
(
sub_SSARead
(
p_file
,
p_subtitle
,
i_microsecperframe
,
9
)
);
}
static
int
sub_Vplayer
(
FILE
*
p_file
,
subtitle_t
*
p_subtitle
,
mtime_t
i_microsecperframe
)
{
/*
* each line:
* h:m:s:Line1|Line2|Line3....
* or
* h:m:s Line1|Line2|Line3....
* where n1 and n2 are the video frame number...
*
*/
char
buffer
[
MAX_LINE
+
1
];
char
buffer_text
[
MAX_LINE
+
1
];
mtime_t
i_start
;
unsigned
int
i
;
for
(
;;
)
{
int
h
,
m
,
s
;
char
c
;
if
(
fgets
(
buffer
,
MAX_LINE
,
p_file
)
<=
0
)
{
return
(
-
1
);
}
i_start
=
0
;
buffer
[
MAX_LINE
]
=
'\0'
;
memset
(
buffer_text
,
'\0'
,
MAX_LINE
);
if
(
sscanf
(
buffer
,
"%d:%d:%d%[ :]%[^
\r\n
]"
,
&
h
,
&
m
,
&
s
,
&
c
,
buffer_text
)
==
5
)
{
i_start
=
(
(
mtime_t
)
h
*
3600
*
1000
+
(
mtime_t
)
m
*
60
*
1000
+
(
mtime_t
)
s
*
1000
)
*
1000
;
break
;
}
}
/* replace | by \n */
for
(
i
=
0
;
i
<
strlen
(
buffer_text
);
i
++
)
{
if
(
buffer_text
[
i
]
==
'|'
)
{
buffer_text
[
i
]
=
'\n'
;
}
}
p_subtitle
->
i_start
=
i_start
;
p_subtitle
->
i_stop
=
0
;
p_subtitle
->
psz_text
=
strndup
(
buffer_text
,
MAX_LINE
);
return
(
0
);
}
modules/demux/util/sub.h
View file @
52960620
...
...
@@ -2,7 +2,7 @@
* sub.h
*****************************************************************************
* Copyright (C) 2001 VideoLAN
* $Id: sub.h,v 1.
2 2003/01/02 23:50:55 massiot
Exp $
* $Id: sub.h,v 1.
3 2003/03/11 20:01:23 fenrir
Exp $
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
...
...
@@ -25,6 +25,7 @@
#define SUB_TYPE_SUBRIP 0x01
#define SUB_TYPE_SSA1 0x02
#define SUB_TYPE_SSA2_4 0x03
#define SUB_TYPE_VPLAYER 0x04
#define SUB_TYPE_UNKNOWN 0xffff
typedef
struct
subtitle_s
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment