mirror of https://github.com/mpv-player/mpv
Add routine to determine if SPU has changed in dvdnav stream.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27016 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
a5d9a2b2b0
commit
c655b2d499
|
@ -32,6 +32,7 @@ typedef enum {
|
||||||
NAV_FLAG_SPU_SET = 1 << 7, /* spu_clut is valid */
|
NAV_FLAG_SPU_SET = 1 << 7, /* spu_clut is valid */
|
||||||
NAV_FLAG_STREAM_CHANGE = 1 << 8, /* title, chapter, audio or SPU */
|
NAV_FLAG_STREAM_CHANGE = 1 << 8, /* title, chapter, audio or SPU */
|
||||||
NAV_FLAG_AUDIO_CHANGE = 1 << 9, /* audio stream change event */
|
NAV_FLAG_AUDIO_CHANGE = 1 << 9, /* audio stream change event */
|
||||||
|
NAV_FLAG_SPU_CHANGE = 1 << 10, /* spu stream change event */
|
||||||
} dvdnav_state_t;
|
} dvdnav_state_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -334,6 +335,7 @@ static int fill_buffer(stream_t *s, char *but, int len)
|
||||||
mp_msg(MSGT_CPLAYER,MSGL_INFO, "DVDNAV, switched to title: %d\r\n", vts_event->new_vtsN);
|
mp_msg(MSGT_CPLAYER,MSGL_INFO, "DVDNAV, switched to title: %d\r\n", vts_event->new_vtsN);
|
||||||
priv->state |= NAV_FLAG_CELL_CHANGED;
|
priv->state |= NAV_FLAG_CELL_CHANGED;
|
||||||
priv->state |= NAV_FLAG_AUDIO_CHANGE;
|
priv->state |= NAV_FLAG_AUDIO_CHANGE;
|
||||||
|
priv->state |= NAV_FLAG_SPU_CHANGE;
|
||||||
priv->state &= ~NAV_FLAG_WAIT_SKIP;
|
priv->state &= ~NAV_FLAG_WAIT_SKIP;
|
||||||
priv->state &= ~NAV_FLAG_WAIT;
|
priv->state &= ~NAV_FLAG_WAIT;
|
||||||
s->end_pos = 0;
|
s->end_pos = 0;
|
||||||
|
@ -351,6 +353,7 @@ static int fill_buffer(stream_t *s, char *but, int len)
|
||||||
case DVDNAV_CELL_CHANGE: {
|
case DVDNAV_CELL_CHANGE: {
|
||||||
priv->state |= NAV_FLAG_CELL_CHANGED;
|
priv->state |= NAV_FLAG_CELL_CHANGED;
|
||||||
priv->state |= NAV_FLAG_AUDIO_CHANGE;
|
priv->state |= NAV_FLAG_AUDIO_CHANGE;
|
||||||
|
priv->state |= NAV_FLAG_SPU_CHANGE;
|
||||||
priv->state &= ~NAV_FLAG_WAIT_SKIP;
|
priv->state &= ~NAV_FLAG_WAIT_SKIP;
|
||||||
priv->state &= ~NAV_FLAG_WAIT;
|
priv->state &= ~NAV_FLAG_WAIT;
|
||||||
if (priv->state & NAV_FLAG_WAIT_READ_AUTO)
|
if (priv->state & NAV_FLAG_WAIT_READ_AUTO)
|
||||||
|
@ -366,6 +369,9 @@ static int fill_buffer(stream_t *s, char *but, int len)
|
||||||
case DVDNAV_AUDIO_STREAM_CHANGE:
|
case DVDNAV_AUDIO_STREAM_CHANGE:
|
||||||
priv->state |= NAV_FLAG_AUDIO_CHANGE;
|
priv->state |= NAV_FLAG_AUDIO_CHANGE;
|
||||||
break;
|
break;
|
||||||
|
case DVDNAV_SPU_STREAM_CHANGE:
|
||||||
|
priv->state |= NAV_FLAG_SPU_CHANGE;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mp_msg(MSGT_STREAM,MSGL_DBG2,"DVDNAV fill_buffer len: %d\n",len);
|
mp_msg(MSGT_STREAM,MSGL_DBG2,"DVDNAV fill_buffer len: %d\n",len);
|
||||||
|
@ -930,6 +936,24 @@ int mp_dvdnav_audio_has_changed (stream_t *stream, int clear) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Check if SPU has changed
|
||||||
|
* \param stream: - stream pointer
|
||||||
|
* \param clear : - if true, then clear spu change flag
|
||||||
|
* \return 1 if spu has changed
|
||||||
|
*/
|
||||||
|
int mp_dvdnav_spu_has_changed (stream_t *stream, int clear) {
|
||||||
|
dvdnav_priv_t *priv = stream->priv;
|
||||||
|
|
||||||
|
if (!(priv->state & NAV_FLAG_SPU_CHANGE))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (clear)
|
||||||
|
priv->state &= ~NAV_FLAG_SPU_CHANGE;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
/* Notify if something has changed in stream
|
/* Notify if something has changed in stream
|
||||||
* Can be related to title, chapter, audio or SPU
|
* Can be related to title, chapter, audio or SPU
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -32,6 +32,7 @@ int mp_dvdnav_skip_wait (stream_t *stream);
|
||||||
void mp_dvdnav_read_wait (stream_t *stream, int mode, int automode);
|
void mp_dvdnav_read_wait (stream_t *stream, int mode, int automode);
|
||||||
int mp_dvdnav_cell_has_changed (stream_t *stream, int clear);
|
int mp_dvdnav_cell_has_changed (stream_t *stream, int clear);
|
||||||
int mp_dvdnav_audio_has_changed (stream_t *stream, int clear);
|
int mp_dvdnav_audio_has_changed (stream_t *stream, int clear);
|
||||||
|
int mp_dvdnav_spu_has_changed (stream_t *stream, int clear);
|
||||||
int mp_dvdnav_stream_has_changed (stream_t *stream);
|
int mp_dvdnav_stream_has_changed (stream_t *stream);
|
||||||
|
|
||||||
#endif /* MPLAYER_STREAM_DVDNAV_H */
|
#endif /* MPLAYER_STREAM_DVDNAV_H */
|
||||||
|
|
Loading…
Reference in New Issue