diff options
Diffstat (limited to 'src/demuxers')
-rw-r--r-- | src/demuxers/demux_avi.c | 4 | ||||
-rw-r--r-- | src/demuxers/demux_elem.c | 4 | ||||
-rw-r--r-- | src/demuxers/demux_mpeg.c | 48 | ||||
-rw-r--r-- | src/demuxers/demux_mpeg_block.c | 4 | ||||
-rw-r--r-- | src/demuxers/demux_mpgaudio.c | 4 |
5 files changed, 48 insertions, 16 deletions
diff --git a/src/demuxers/demux_avi.c b/src/demuxers/demux_avi.c index 149fa13ce..6becaaa48 100644 --- a/src/demuxers/demux_avi.c +++ b/src/demuxers/demux_avi.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_avi.c,v 1.8 2001/05/02 12:25:42 guenter Exp $ + * $Id: demux_avi.c,v 1.9 2001/05/24 23:15:40 f1rmb Exp $ * * demultiplexer for avi streams * @@ -797,7 +797,7 @@ static void *demux_avi_loop (void *this_gen) { xprintf (VERBOSE|DEMUX, "demux_avi: demux loop finished.\n"); - return NULL; + pthread_exit(NULL); } static void demux_avi_stop (demux_plugin_t *this_gen) { diff --git a/src/demuxers/demux_elem.c b/src/demuxers/demux_elem.c index a142ddd4d..dbd38b8e3 100644 --- a/src/demuxers/demux_elem.c +++ b/src/demuxers/demux_elem.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_elem.c,v 1.5 2001/04/29 23:22:32 f1rmb Exp $ + * $Id: demux_elem.c,v 1.6 2001/05/24 23:15:40 f1rmb Exp $ * * demultiplexer for elementary mpeg streams * @@ -109,7 +109,7 @@ static void *demux_mpeg_elem_loop (void *this_gen) { buf->type = BUF_CONTROL_END; this->audio_fifo->put (this->audio_fifo, buf); - return NULL; + pthread_exit(NULL); } /* diff --git a/src/demuxers/demux_mpeg.c b/src/demuxers/demux_mpeg.c index 72ff2ca92..719be6886 100644 --- a/src/demuxers/demux_mpeg.c +++ b/src/demuxers/demux_mpeg.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.c,v 1.10 2001/05/24 15:31:30 guenter Exp $ + * $Id: demux_mpeg.c,v 1.11 2001/05/24 23:15:40 f1rmb Exp $ * * demultiplexer for mpeg 1/2 program streams * reads streams of variable blocksizes @@ -147,6 +147,10 @@ static void parse_mpeg2_packet (demux_mpeg_t *this, int nID) { buf = this->input->read_block (this->input, this->audio_fifo, nLen-4); + if (buf == NULL) { + this->status = DEMUX_FINISHED; + return ; + } buf->type = BUF_AUDIO_AC3 + track; buf->PTS = pts; buf->DTS = 0 ; /* FIXME */ @@ -186,6 +190,10 @@ static void parse_mpeg2_packet (demux_mpeg_t *this, int nID) { buf = this->input->read_block (this->input, this->audio_fifo, nLen); + if (buf == NULL) { + this->status = DEMUX_FINISHED; + return ; + } buf->type = BUF_AUDIO_MPEG + track; buf->PTS = pts; buf->DTS = 0; /* FIXME */ @@ -226,6 +234,10 @@ static void parse_mpeg2_packet (demux_mpeg_t *this, int nID) { buf = this->input->read_block (this->input, this->audio_fifo, nLen); + if (buf == NULL) { + this->status = DEMUX_FINISHED; + return ; + } buf->type = BUF_VIDEO_MPEG; buf->PTS = pts; buf->DTS = 0; @@ -334,6 +346,10 @@ static void parse_mpeg1_packet (demux_mpeg_t *this, int nID) buf = this->input->read_block (this->input, this->audio_fifo, nLen); + if (buf == NULL) { + this->status = DEMUX_FINISHED; + return ; + } buf->type = BUF_AUDIO_MPEG + track ; buf->PTS = pts; buf->DTS = 0; /* FIXME */ @@ -347,6 +363,10 @@ static void parse_mpeg1_packet (demux_mpeg_t *this, int nID) buf = this->input->read_block (this->input, this->video_fifo, nLen); + if (buf == NULL) { + this->status = DEMUX_FINISHED; + return ; + } buf->type = BUF_VIDEO_MPEG; buf->PTS = pts; buf->DTS = 0; /* FIXME */ @@ -464,7 +484,7 @@ static void *demux_mpeg_loop (void *this_gen) { xprintf (VERBOSE|DEMUX, "demux loop finished (status: %d, buf:%x)\n", this->status, w); - return NULL; + pthread_exit(NULL); } static void demux_mpeg_stop (demux_plugin_t *this_gen) { @@ -537,15 +557,27 @@ static int demux_mpeg_open(demux_plugin_t *this_gen, switch(buf[3]) { case 0xba: - if((buf[4] & 0xf0) == 0x20) - this->input = input; - return DEMUX_CAN_HANDLE; + if((buf[4] & 0xf0) == 0x20) { + uint32_t pckbuf ; + + pckbuf = read_bytes (this, 1); + if ((pckbuf>>4) != 4) { + this->input = input; + return DEMUX_CAN_HANDLE; + } + } break; case 0xe0: - if((buf[6] & 0xc0) != 0x80) - this->input = input; - return DEMUX_CAN_HANDLE; + if((buf[6] & 0xc0) != 0x80) { + uint32_t pckbuf ; + + pckbuf = read_bytes (this, 1); + if ((pckbuf>>4) != 4) { + this->input = input; + return DEMUX_CAN_HANDLE; + } + } break; } diff --git a/src/demuxers/demux_mpeg_block.c b/src/demuxers/demux_mpeg_block.c index 4cff99930..4c5b01bae 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.6 2001/04/29 23:22:32 f1rmb Exp $ + * $Id: demux_mpeg_block.c,v 1.7 2001/05/24 23:15:40 f1rmb Exp $ * * demultiplexer for mpeg 1/2 program streams * @@ -337,7 +337,7 @@ static void *demux_mpeg_block_loop (void *this_gen) { buf->type = BUF_CONTROL_END; this->audio_fifo->put (this->audio_fifo, buf); - return NULL; + pthread_exit(NULL); } static void demux_mpeg_block_stop (demux_plugin_t *this_gen) { diff --git a/src/demuxers/demux_mpgaudio.c b/src/demuxers/demux_mpgaudio.c index 4d2f3cf83..71b2946cf 100644 --- a/src/demuxers/demux_mpgaudio.c +++ b/src/demuxers/demux_mpgaudio.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_mpgaudio.c,v 1.4 2001/04/29 23:22:32 f1rmb Exp $ + * $Id: demux_mpgaudio.c,v 1.5 2001/05/24 23:15:40 f1rmb Exp $ * * demultiplexer for mpeg audio (i.e. mp3) streams * @@ -272,7 +272,7 @@ static void *demux_mpgaudio_loop (void *this_gen) { buf->type = BUF_CONTROL_END; this->audio_fifo->put (this->audio_fifo, buf); - return NULL; + pthread_exit(NULL); } static void demux_mpgaudio_stop (demux_plugin_t *this_gen) { |