[Xineliboutput-cvslog] vdr-xineliboutput/xine/BluRay input_bluray.c, 1.73, 1.74
Brought to you by:
phintuka
From: Petri H. <phi...@us...> - 2010-12-13 14:29:26
|
Update of /cvsroot/xineliboutput/vdr-xineliboutput/xine/BluRay In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv26264 Modified Files: input_bluray.c Log Message: Added handling of BD_EVENT_END_OF_TITLE. Flush demuxer + decoders at end of title. Index: input_bluray.c =================================================================== RCS file: /cvsroot/xineliboutput/vdr-xineliboutput/xine/BluRay/input_bluray.c,v retrieving revision 1.73 retrieving revision 1.74 diff -u -d -r1.73 -r1.74 --- input_bluray.c 13 Dec 2010 14:26:44 -0000 1.73 +++ input_bluray.c 13 Dec 2010 14:29:18 -0000 1.74 @@ -125,6 +125,7 @@ int current_clip; int error; int menu_open; + int stream_flushed; int pg_enable; int pg_stream; @@ -287,8 +288,31 @@ return 1; } +#ifndef DEMUX_OPTIONAL_DATA_FLUSH +# define DEMUX_OPTIONAL_DATA_FLUSH 0x10000 +#endif + +static void stream_flush(bluray_input_plugin_t *this) +{ + if (this->stream_flushed) + return; + + lprintf("Stream flush\n"); + + this->stream_flushed = 1; + + int tmp = 0; + if (DEMUX_OPTIONAL_SUCCESS != + this->stream->demux_plugin->get_optional_data(this->stream->demux_plugin, &tmp, DEMUX_OPTIONAL_DATA_FLUSH)) { + LOGMSG("stream flush not supported by the demuxer !\n"); + return; + } +} + static void stream_reset(bluray_input_plugin_t *this) { + lprintf("Stream reset\n"); + this->cap_seekable = 0; xine_set_param(this->stream, XINE_PARAM_FINE_SPEED, XINE_FINE_SPEED_NORMAL); @@ -320,6 +344,11 @@ _x_stream_info_set(this->stream, XINE_STREAM_INFO_DVD_ANGLE_NUMBER, ev.param); break; + case BD_EVENT_END_OF_TITLE: + LOGMSG("BD_EVENT_END_OF_TITLE\n"); + stream_flush(this); + break; + case BD_EVENT_TITLE: LOGMSG("BD_EVENT_TITLE %d\n", ev.param); this->current_title = ev.param; @@ -583,6 +612,8 @@ if (result < 0) LOGMSG("bd_read() failed: %s (%d of %d)\n", strerror(errno), (int)result, (int)len); + this->stream_flushed = 0; + #if 0 if (buf[4] != 0x47) { LOGMSG("bd_read(): invalid data ? [%02x %02x %02x %02x %02x ...]\n", |