diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/demuxers/demux_mpeg_block.c | 9 | ||||
-rw-r--r-- | src/xine-engine/video_decoder.c | 27 |
2 files changed, 28 insertions, 8 deletions
diff --git a/src/demuxers/demux_mpeg_block.c b/src/demuxers/demux_mpeg_block.c index 820e4a1fa..3affa3368 100644 --- a/src/demuxers/demux_mpeg_block.c +++ b/src/demuxers/demux_mpeg_block.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: demux_mpeg_block.c,v 1.73 2002/01/15 13:51:10 guenter Exp $ + * $Id: demux_mpeg_block.c,v 1.74 2002/01/25 00:35:46 f1rmb Exp $ * * demultiplexer for mpeg 1/2 program streams * @@ -849,11 +849,12 @@ static void demux_mpeg_block_start (demux_plugin_t *this_gen, buf = this->video_fifo->buffer_pool_alloc (this->video_fifo); - if(this->input->get_optional_data(this->input, buf->mem, - INPUT_OPTIONAL_DATA_CLUT) == INPUT_OPTIONAL_SUCCESS) { + if ((this->input->get_capabilities(this->input) & INPUT_CAP_CLUT) && + ((this->input->get_optional_data(this->input, buf->mem, INPUT_OPTIONAL_DATA_CLUT) + == INPUT_OPTIONAL_SUCCESS))) { buf->type = BUF_SPU_CLUT; buf->content = buf->mem; - + this->video_fifo->put(this->video_fifo, buf); } else { buf->free_buffer(buf); diff --git a/src/xine-engine/video_decoder.c b/src/xine-engine/video_decoder.c index d4fef6664..6c0f1db43 100644 --- a/src/xine-engine/video_decoder.c +++ b/src/xine-engine/video_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: video_decoder.c,v 1.70 2002/01/14 00:34:22 guenter Exp $ + * $Id: video_decoder.c,v 1.71 2002/01/25 00:35:46 f1rmb Exp $ * */ @@ -127,9 +127,19 @@ void *video_decoder_loop (void *this_gen) { break; case BUF_CONTROL_SPU_CHANNEL: - this->spu_channel_auto = buf->decoder_info[0]; - if (this->spu_channel_user == -1) - this->spu_channel = this->spu_channel_auto; + { + xine_ui_event_t ui_event; + + this->spu_channel_auto = buf->decoder_info[0]; + if (this->spu_channel_user == -1) + this->spu_channel = this->spu_channel_auto; + + /* Inform UI of SPU channel changes */ + ui_event.event.type = XINE_EVENT_UI_CHANNELS_CHANGED; + ui_event.data = NULL; + xine_send_event(this, &ui_event.event); + + } break; case BUF_CONTROL_END: @@ -199,6 +209,15 @@ void *video_decoder_loop (void *this_gen) { break; case BUF_CONTROL_AUDIO_CHANNEL: + { + xine_ui_event_t ui_event; + /* Inform UI of AUDIO channel changes */ + ui_event.event.type = XINE_EVENT_UI_CHANNELS_CHANGED; + ui_event.data = NULL; + xine_send_event(this, &ui_event.event); + } + break; + case BUF_CONTROL_NOP: break; |