Commit 5cd1cfe2 authored by Derk-Jan Hartman's avatar Derk-Jan Hartman

* modules/demux/util/sub.?

  Vobsub is working now. only track 0 will be played atm.
  spudec scaling will need to be implemented or vobsub is pretty useless.
* modules/codec/spudec
  Changed an error into a warning message.
parent 95595966
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* parse.c: SPU parser * parse.c: SPU parser
***************************************************************************** *****************************************************************************
* Copyright (C) 2000-2001 VideoLAN * Copyright (C) 2000-2001 VideoLAN
* $Id: parse.c,v 1.16 2003/11/24 00:39:01 fenrir Exp $ * $Id: parse.c,v 1.17 2004/01/27 22:51:39 hartman Exp $
* *
* Authors: Samuel Hocevar <sam@zoy.org> * Authors: Samuel Hocevar <sam@zoy.org>
* Laurent Aimar <fenrir@via.ecp.fr> * Laurent Aimar <fenrir@via.ecp.fr>
...@@ -297,7 +297,7 @@ static int ParseControlSeq( decoder_t *p_dec, subpicture_t * p_spu ) ...@@ -297,7 +297,7 @@ static int ParseControlSeq( decoder_t *p_dec, subpicture_t * p_spu )
break; break;
default: /* xx (unknown command) */ default: /* xx (unknown command) */
msg_Err( p_dec, "unknown command 0x%.2x", i_command ); msg_Warn( p_dec, "unknown command 0x%.2x", i_command );
return VLC_EGENERIC; return VLC_EGENERIC;
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* spudec.c : SPU decoder thread * spudec.c : SPU decoder thread
***************************************************************************** *****************************************************************************
* Copyright (C) 2000-2001 VideoLAN * Copyright (C) 2000-2001 VideoLAN
* $Id: spudec.c,v 1.30 2003/11/22 23:39:14 fenrir Exp $ * $Id: spudec.c,v 1.31 2004/01/27 22:51:39 hartman Exp $
* *
* Authors: Samuel Hocevar <sam@zoy.org> * Authors: Samuel Hocevar <sam@zoy.org>
* Laurent Aimar <fenrir@via.ecp.fr> * Laurent Aimar <fenrir@via.ecp.fr>
...@@ -222,6 +222,7 @@ static block_t *Reassemble( decoder_t *p_dec, block_t **pp_block ) ...@@ -222,6 +222,7 @@ static block_t *Reassemble( decoder_t *p_dec, block_t **pp_block )
if( p_sys->i_spu_size <= 0 && ( p_block->i_pts <= 0 || p_block->i_buffer < 4 ) ) if( p_sys->i_spu_size <= 0 && ( p_block->i_pts <= 0 || p_block->i_buffer < 4 ) )
{ {
msg_Dbg( p_dec, "invalid starting packet (size < 4 or pts <=0)" ); msg_Dbg( p_dec, "invalid starting packet (size < 4 or pts <=0)" );
msg_Dbg( p_dec, "spu size: %d, i_pts: %d i_buffer: %d", p_sys->i_spu_size, p_block->i_pts, p_block->i_buffer );
block_Release( p_block ); block_Release( p_block );
return NULL; return NULL;
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* sub.c: subtitle demux for external subtitle files * sub.c: subtitle demux for external subtitle files
***************************************************************************** *****************************************************************************
* Copyright (C) 1999-2004 VideoLAN * Copyright (C) 1999-2004 VideoLAN
* $Id: sub.c,v 1.49 2004/01/27 13:10:29 fenrir Exp $ * $Id: sub.c,v 1.50 2004/01/27 22:51:39 hartman Exp $
* *
* Authors: Laurent Aimar <fenrir@via.ecp.fr> * Authors: Laurent Aimar <fenrir@via.ecp.fr>
* Derk-Jan Hartman <hartman at videolan dot org> * Derk-Jan Hartman <hartman at videolan dot org>
...@@ -449,6 +449,7 @@ static int sub_open( subtitle_demux_t *p_sub, input_thread_t *p_input, ...@@ -449,6 +449,7 @@ static int sub_open( subtitle_demux_t *p_sub, input_thread_t *p_input,
/* *** fix subtitle (order and time) *** */ /* *** fix subtitle (order and time) *** */
p_sub->i_subtitle = 0; /* will be modified by sub_fix */ p_sub->i_subtitle = 0; /* will be modified by sub_fix */
if( p_sub->i_sub_type != SUB_TYPE_VOBSUB ) if( p_sub->i_sub_type != SUB_TYPE_VOBSUB )
{ {
sub_fix( p_sub ); sub_fix( p_sub );
...@@ -579,7 +580,7 @@ static int sub_demux( subtitle_demux_t *p_sub, mtime_t i_maxdate ) ...@@ -579,7 +580,7 @@ static int sub_demux( subtitle_demux_t *p_sub, mtime_t i_maxdate )
if( i_size <= 0 ) i_size = 65535; /* Invalid or EOF */ if( i_size <= 0 ) i_size = 65535; /* Invalid or EOF */
/* Seek at the right place (could be avoid if sub_seek is fixed to do his job) */ /* Seek at the right place (could be avoid if sub_seek is fixed to do his job) */
if( fseek( p_sub->p_vobsub_file, i_pos, SEEK_CUR ) ) if( fseek( p_sub->p_vobsub_file, i_pos, SEEK_SET ) )
{ {
msg_Warn( p_sub, "cannot seek at right vobsub location %d", i_pos ); msg_Warn( p_sub, "cannot seek at right vobsub location %d", i_pos );
p_sub->i_subtitle++; p_sub->i_subtitle++;
...@@ -1171,13 +1172,19 @@ static int DemuxVobSub( subtitle_demux_t *p_demux, block_t *p_bk ) ...@@ -1171,13 +1172,19 @@ static int DemuxVobSub( subtitle_demux_t *p_demux, block_t *p_bk )
i_spu = i_id&0x1f; i_spu = i_id&0x1f;
msg_Dbg( p_demux, "SPU track %d size %d", i_spu, i_size ); msg_Dbg( p_demux, "SPU track %d size %d", i_spu, i_size );
if( p_demux->p_es ) /* FIXME i_spu == determines which of the spu tracks we will show. */
if( p_demux->p_es && i_spu == 0 )
{ {
p_pkt->i_pts = p_bk->i_pts; p_pkt->i_pts = p_bk->i_pts;
es_out_Send( p_demux->p_input->p_es_out, p_demux->p_es, p_pkt ); es_out_Send( p_demux->p_input->p_es_out, p_demux->p_es, p_pkt );
p_bk->i_pts = 0; /* only first packet has a pts */ p_bk->i_pts = 0; /* only first packet has a pts */
} }
else
{
block_Release( p_pkt );
continue;
}
} }
return VLC_SUCCESS; return VLC_SUCCESS;
......
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