summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demux_mkv.c
diff options
context:
space:
mode:
authoreugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-01-11 21:45:08 +0000
committereugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-01-11 21:45:08 +0000
commit4c512b27c3fafd151ad760204c1d158db5ed22bf (patch)
treeed7d92d98c904aa7ea37746bc0eee9ddaee6c5a3 /libmpdemux/demux_mkv.c
parent8c384193743cfb6256fbd3c09f8b019bbdf88f57 (diff)
downloadmpv-4c512b27c3fafd151ad760204c1d158db5ed22bf.tar.bz2
mpv-4c512b27c3fafd151ad760204c1d158db5ed22bf.tar.xz
Factorize private data decoding for subtitle tracks in mkv demuxer.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25679 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/demux_mkv.c')
-rw-r--r--libmpdemux/demux_mkv.c32
1 files changed, 12 insertions, 20 deletions
diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c
index e7307156ca..892a703b22 100644
--- a/libmpdemux/demux_mkv.c
+++ b/libmpdemux/demux_mkv.c
@@ -2236,8 +2236,7 @@ demux_mkv_parse_vobsub_data (demuxer_t *demuxer)
{
mkv_demuxer_t *mkv_d = (mkv_demuxer_t *) demuxer->priv;
mkv_track_t *track;
- int i, m, size;
- uint8_t *buffer;
+ int i;
for (i = 0; i < mkv_d->num_tracks; i++)
{
@@ -2246,14 +2245,6 @@ demux_mkv_parse_vobsub_data (demuxer_t *demuxer)
(track->subtitle_type != MATROSKA_SUBTYPE_VOBSUB))
continue;
- size = track->private_size;
- m = demux_mkv_decode (track,track->private_data,&buffer,&size,2);
- if (buffer && m)
- {
- free (track->private_data);
- track->private_data = buffer;
- track->private_size = size;
- }
if (!demux_mkv_parse_idx (track))
{
free (track->private_data);
@@ -2277,8 +2268,7 @@ demux_mkv_parse_ass_data (demuxer_t *demuxer)
{
mkv_demuxer_t *mkv_d = (mkv_demuxer_t *) demuxer->priv;
mkv_track_t *track;
- int i, m, size;
- uint8_t *buffer;
+ int i;
for (i = 0; i < mkv_d->num_tracks; i++)
{
@@ -2290,14 +2280,6 @@ demux_mkv_parse_ass_data (demuxer_t *demuxer)
if (track->subtitle_type == MATROSKA_SUBTYPE_SSA)
{
track->sh_sub->ass_track = ass_new_track(ass_library);
- size = track->private_size;
- m = demux_mkv_decode (track,track->private_data,&buffer,&size,2);
- if (buffer && m)
- {
- free (track->private_data);
- track->private_data = buffer;
- track->private_size = size;
- }
ass_process_codec_private(track->sh_sub->ass_track, track->private_data, track->private_size);
}
}
@@ -2309,6 +2291,8 @@ demux_mkv_open_sub (demuxer_t *demuxer, mkv_track_t *track, int sid)
{
if (track->subtitle_type != MATROSKA_SUBTYPE_UNKNOWN)
{
+ int size, m;
+ uint8_t *buffer;
sh_sub_t *sh = new_sh_sub_sid(demuxer, track->tnum, sid);
track->sh_sub = sh;
sh->type = 't';
@@ -2316,6 +2300,14 @@ demux_mkv_open_sub (demuxer_t *demuxer, mkv_track_t *track, int sid)
sh->type = 'v';
if (track->subtitle_type == MATROSKA_SUBTYPE_SSA)
sh->type = 'a';
+ size = track->private_size;
+ m = demux_mkv_decode (track,track->private_data,&buffer,&size,2);
+ if (buffer && m)
+ {
+ free (track->private_data);
+ track->private_data = buffer;
+ track->private_size = size;
+ }
}
else
{