summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demux_mov.c
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-11-17 20:13:21 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-11-17 20:13:21 +0000
commit2bf9053a660c88d37c56e34b07a1cd010529c1d9 (patch)
treedca0ef20e395993165711d9e82863ca2c2dda1d9 /libmpdemux/demux_mov.c
parentb9b610ed9a14be8692a1e522dd34a876cadcf9fc (diff)
downloadmpv-2bf9053a660c88d37c56e34b07a1cd010529c1d9.tar.bz2
mpv-2bf9053a660c88d37c56e34b07a1cd010529c1d9.tar.xz
Try reading palette for vobsub
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@20995 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/demux_mov.c')
-rw-r--r--libmpdemux/demux_mov.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/libmpdemux/demux_mov.c b/libmpdemux/demux_mov.c
index 834adbd65a..f959350080 100644
--- a/libmpdemux/demux_mov.c
+++ b/libmpdemux/demux_mov.c
@@ -562,6 +562,20 @@ unsigned int store_ughvlc(unsigned char *s, unsigned int v){
return n;
}
+static void init_vobsub(sh_sub_t *sh, mov_track_t *trak) {
+ int i;
+ uint8_t *pal = trak->stdata;
+ sh->type = 'v';
+ if (trak->stdata_len < 106)
+ return;
+ sh->has_palette = 1;
+ pal += 42;
+ for (i = 0; i < 16; i++) {
+ sh->palette[i] = BE_32(pal);
+ pal += 4;
+ }
+}
+
static int lschunks_intrak(demuxer_t* demuxer, int level, unsigned int id,
off_t pos, off_t len, mov_track_t* trak);
@@ -1297,7 +1311,10 @@ quit_vorbis_block:
trak->fourcc == mmioFOURCC('t','x','3','g') ||
trak->fourcc == mmioFOURCC('t','e','x','t')) {
sh_sub_t *sh = new_sh_sub(demuxer, priv->track_db);
- sh->type = (trak->fourcc == mmioFOURCC('m','p','4','s')) ? 'v' : 't';
+ if (trak->fourcc == mmioFOURCC('m','p','4','s'))
+ init_vobsub(sh, trak);
+ else
+ sh->type = 't';
} else
mp_msg(MSGT_DEMUX, MSGL_V, "Generic track - not completely understood! (id: %d)\n",
trak->id);