Commit 9b19a075 authored by Laurent Aimar's avatar Laurent Aimar

Fixed subtitle duration when rate != default.

parent 66d883a9
...@@ -24,10 +24,14 @@ ...@@ -24,10 +24,14 @@
/***************************************************************************** /*****************************************************************************
* Preamble * Preamble
*****************************************************************************/ *****************************************************************************/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "config.h"
#include <vlc_common.h> #include <vlc_common.h>
#include <vlc_plugin.h> #include <vlc_plugin.h>
#include <vlc_vout.h> #include <vlc_vout.h>
...@@ -36,6 +40,7 @@ ...@@ -36,6 +40,7 @@
#include <vlc_block.h> #include <vlc_block.h>
#include <vlc_filter.h> #include <vlc_filter.h>
#include <vlc_stream.h> #include <vlc_stream.h>
#include <vlc_input.h>
#include <vlc_xml.h> #include <vlc_xml.h>
#include <math.h> #include <math.h>
...@@ -170,6 +175,8 @@ static subpicture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block ) ...@@ -170,6 +175,8 @@ static subpicture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
return NULL; return NULL;
p_block = *pp_block; p_block = *pp_block;
if( p_block->i_rate != 0 )
p_block->i_length = p_block->i_length * p_block->i_rate / INPUT_RATE_DEFAULT;
*pp_block = NULL; *pp_block = NULL;
if( p_block->i_buffer == 0 || p_block->p_buffer[0] == '\0' ) if( p_block->i_buffer == 0 || p_block->p_buffer[0] == '\0' )
......
...@@ -210,9 +210,12 @@ static subpicture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block ) ...@@ -210,9 +210,12 @@ static subpicture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
block_t *p_block; block_t *p_block;
kate_packet kp; kate_packet kp;
if( !pp_block || !*pp_block ) return NULL; if( !pp_block || !*pp_block )
return NULL;
p_block = *pp_block; p_block = *pp_block;
if( p_block->i_rate != 0 )
p_block->i_length = p_block->i_length * p_block->i_rate / INPUT_RATE_DEFAULT;
/* Block to Kate packet */ /* Block to Kate packet */
kate_packet_wrap(&kp, p_block->i_buffer, p_block->p_buffer); kate_packet_wrap(&kp, p_block->i_buffer, p_block->p_buffer);
......
...@@ -252,13 +252,19 @@ static int OpenDecoder( vlc_object_t *p_this ) ...@@ -252,13 +252,19 @@ static int OpenDecoder( vlc_object_t *p_this )
****************************************************************************/ ****************************************************************************/
static subpicture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block ) static subpicture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
{ {
subpicture_t *p_spu = NULL; subpicture_t *p_spu;
block_t *p_block;
if( !pp_block || *pp_block == NULL )
return NULL;
if( !pp_block || *pp_block == NULL ) return NULL; p_block = *pp_block;
if( p_block->i_rate != 0 )
p_block->i_length = p_block->i_length * p_block->i_rate / INPUT_RATE_DEFAULT;
p_spu = ParseText( p_dec, *pp_block ); p_spu = ParseText( p_dec, p_block );
block_Release( *pp_block ); block_Release( p_block );
*pp_block = NULL; *pp_block = NULL;
return p_spu; return p_spu;
......
...@@ -118,13 +118,19 @@ static int OpenDecoder( vlc_object_t *p_this ) ...@@ -118,13 +118,19 @@ static int OpenDecoder( vlc_object_t *p_this )
****************************************************************************/ ****************************************************************************/
static subpicture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block ) static subpicture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
{ {
subpicture_t *p_spu = NULL; subpicture_t *p_spu;
block_t *p_block;
if( !pp_block || *pp_block == NULL )
return NULL;
if( !pp_block || *pp_block == NULL ) return NULL; p_block = *pp_block;
if( p_block->i_rate != 0 )
p_block->i_length = p_block->i_length * p_block->i_rate / INPUT_RATE_DEFAULT;
p_spu = ParseText( p_dec, *pp_block ); p_spu = ParseText( p_dec, p_block );
block_Release( *pp_block ); block_Release( p_block );
*pp_block = NULL; *pp_block = NULL;
return p_spu; return p_spu;
......
...@@ -453,8 +453,11 @@ static subpicture_t *Decode( decoder_t *p_dec, block_t **pp_block ) ...@@ -453,8 +453,11 @@ static subpicture_t *Decode( decoder_t *p_dec, block_t **pp_block )
char psz_line[256]; char psz_line[256];
int i, total; int i, total;
if( pp_block == NULL || *pp_block == NULL ) return NULL; if( pp_block == NULL || *pp_block == NULL )
return NULL;
p_block = *pp_block; p_block = *pp_block;
if( p_block->i_rate != 0 )
p_block->i_length = p_block->i_length * p_block->i_rate / INPUT_RATE_DEFAULT;
*pp_block = NULL; *pp_block = NULL;
dbg((p_dec, "start of telx packet with header %2x\n", dbg((p_dec, "start of telx packet with header %2x\n",
......
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