Commit 34f25416 authored by Laurent Aimar's avatar Laurent Aimar

Do not decode subtitles too much in advanced.

It avoids loosing subtitles with the messages
"main subpicture error: subpicture heap full".
parent 87129938
......@@ -131,6 +131,14 @@
/* Max acceptable resampling (in %) */
#define AOUT_MAX_RESAMPLING 10
/*****************************************************************************
* SPU configuration
*****************************************************************************/
/* Buffer must avoid arriving more than SPU_MAX_PREPARE_TIME in advanced to
* the SPU */
#define SPU_MAX_PREPARE_TIME ((mtime_t)(0.5*CLOCK_FREQ))
/*****************************************************************************
* Video configuration
*****************************************************************************/
......
......@@ -1564,6 +1564,12 @@ static void DecoderPlaySpu( decoder_t *p_dec, subpicture_t *p_subpic,
vlc_mutex_unlock( &p_owner->lock );
if( p_subpic->i_start <= VLC_TS_INVALID )
b_reject = true;
DecoderWaitDate( p_dec, &b_reject,
p_subpic->i_start - SPU_MAX_PREPARE_TIME );
if( !b_reject )
spu_DisplaySubpicture( vout_GetSpu( p_vout ), p_subpic );
else
......
......@@ -45,8 +45,9 @@
/*****************************************************************************
* Local prototypes
*****************************************************************************/
/* Number of simultaneous subpictures */
#define VOUT_MAX_SUBPICTURES (VOUT_MAX_PICTURES)
#define VOUT_MAX_SUBPICTURES (__MAX(VOUT_MAX_PICTURES, SPU_MAX_PREPARE_TIME/5000))
/* */
typedef struct
......
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