diff options
author | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2006-11-17 20:13:21 +0000 |
---|---|---|
committer | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2006-11-17 20:13:21 +0000 |
commit | 2bf9053a660c88d37c56e34b07a1cd010529c1d9 (patch) | |
tree | dca0ef20e395993165711d9e82863ca2c2dda1d9 | |
parent | b9b610ed9a14be8692a1e522dd34a876cadcf9fc (diff) | |
download | mpv-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
-rw-r--r-- | libmpdemux/demux_mov.c | 19 |
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); |