mirror of
https://github.com/mpv-player/mpv
synced 2025-01-01 12:22:22 +00:00
Make sure that no pages will left in cache during
channel switch (immediately stop decoding of vbi buffer when clear_cache is called). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24321 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
be450f8293
commit
a108787e00
@ -149,6 +149,7 @@ typedef struct {
|
||||
unsigned int juliandate;
|
||||
unsigned int universaltime;
|
||||
unsigned char networkname[21];
|
||||
int cache_reset;
|
||||
} priv_vbi_t;
|
||||
|
||||
static unsigned char fixParity[256];
|
||||
@ -622,6 +623,8 @@ static inline tt_page* get_from_cache(priv_vbi_t* priv, int pagenum,int subpagen
|
||||
static void clear_cache(priv_vbi_t* priv){
|
||||
int i;
|
||||
tt_page* tp;
|
||||
priv->cache_reset=1;
|
||||
|
||||
for(i=0;i<VBI_MAX_PAGES;i++){
|
||||
while(priv->ptt_cache[i]){
|
||||
tp=priv->ptt_cache[i];
|
||||
@ -1447,7 +1450,7 @@ static void vbi_decode(priv_vbi_t* priv,unsigned char*buf){
|
||||
int d0,d1;
|
||||
int i=0;
|
||||
mp_msg(MSGT_TV,MSGL_DBG3,"vbi: vbi_decode\n");
|
||||
for(linep=buf; linep<buf+priv->ptsp->bufsize; linep+=priv->ptsp->samples_per_line,i++){
|
||||
for(linep=buf; !priv->cache_reset && linep<buf+priv->ptsp->bufsize; linep+=priv->ptsp->samples_per_line,i++){
|
||||
#if 0
|
||||
/*
|
||||
This routine is alternative implementation of raw VBI data decoding.
|
||||
@ -1487,6 +1490,11 @@ static void vbi_decode(priv_vbi_t* priv,unsigned char*buf){
|
||||
mp_msg(MSGT_TV,MSGL_DBG3,"unsupported packet:%d\n",pkt);
|
||||
}
|
||||
}
|
||||
if (priv->cache_reset){
|
||||
pthread_mutex_lock(&(priv->buffer_mutex));
|
||||
priv->cache_reset=0;
|
||||
pthread_mutex_unlock(&(priv->buffer_mutex));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user