diff options
author | phintuka <phintuka> | 2009-02-10 15:46:34 +0000 |
---|---|---|
committer | phintuka <phintuka> | 2009-02-10 15:46:34 +0000 |
commit | 6bad4e8a9ef09993e4a370452f5e59a991a54881 (patch) | |
tree | 8e33ef7f13b113f29c3cad793e682204c821ffd0 | |
parent | 6957d7dd1f2a8aea43b570ff5a75de6e5e7be2c5 (diff) | |
download | xineliboutput-6bad4e8a9ef09993e4a370452f5e59a991a54881.tar.gz xineliboutput-6bad4e8a9ef09993e4a370452f5e59a991a54881.tar.bz2 |
Accept decoded audio/video in input (no signal / logo images)
-rw-r--r-- | xine/demux_xvdr.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/xine/demux_xvdr.c b/xine/demux_xvdr.c index cc03bec5..5dfa08c7 100644 --- a/xine/demux_xvdr.c +++ b/xine/demux_xvdr.c @@ -130,14 +130,26 @@ static void demux_xvdr_parse_pack (demux_xvdr_t *this) /* If this is not a block for the demuxer, pass it * straight through. */ if (buf->type != BUF_DEMUX_BLOCK) { - buf_element_t *cbuf; - this->video_fifo->put (this->video_fifo, buf); + if ((buf->type & BUF_MAJOR_MASK) == BUF_VIDEO_BASE) { + check_newpts (this, buf->pts, PTS_VIDEO); + this->video_fifo->put (this->video_fifo, buf); + return; + } - /* duplicate goes to audio fifo */ + if ((buf->type & BUF_MAJOR_MASK) == BUF_AUDIO_BASE) { + if (this->audio_fifo) { + check_newpts (this, buf->pts, PTS_AUDIO); + this->audio_fifo->put (this->audio_fifo, buf); + } else { + buf->free_buffer (buf); + } + return; + } + /* duplicate goes to audio fifo */ if (this->audio_fifo) { - cbuf = this->audio_fifo->buffer_pool_alloc (this->audio_fifo); + buf_element_t *cbuf = this->audio_fifo->buffer_pool_alloc (this->audio_fifo); cbuf->type = buf->type; cbuf->decoder_flags = buf->decoder_flags; @@ -146,6 +158,7 @@ static void demux_xvdr_parse_pack (demux_xvdr_t *this) this->audio_fifo->put (this->audio_fifo, cbuf); } + this->video_fifo->put (this->video_fifo, buf); LOGMSG("buffer type %08x != BUF_DEMUX_BLOCK", buf->type); |