Index: mpegts.c =================================================================== --- mpegts.c (revision 22594) +++ mpegts.c (working copy) @@ -1533,7 +1533,8 @@ pkt->destruct = av_destruct_packet; pkt->data = pes->buffer; pkt->size = pes->data_index; - memset(pkt->data+pkt->size, 0, FF_INPUT_BUFFER_PADDING_SIZE); + if (pkt->data && pkt->size) + memset(pkt->data+pkt->size, 0, FF_INPUT_BUFFER_PADDING_SIZE); pkt->stream_index = pes->st->index; pkt->pts = pes->pts; @@ -1546,6 +1547,7 @@ pes->dts = AV_NOPTS_VALUE; pes->buffer = NULL; pes->data_index = 0; + pes->total_size = 0; } static void init_stream(AVStream *st, int stream_type, int code) @@ -1779,14 +1781,20 @@ } break; case MPEGTS_PAYLOAD: +if (!pes->buffer) +{ +av_log(NULL, AV_LOG_ERROR, "MPEGTS_PAYLOAD: BUFFER IS NULL!!!! buf_size: %d, dindex: %d, totsize: %d, buffer: %p, p: %p\n", buf_size, pes->data_index, pes->total_size, pes->buffer, p); +} if (buf_size > 0) { if (pes->data_index+buf_size > pes->total_size) { +av_log(NULL, AV_LOG_ERROR, "MPEGTS_PAYLOAD: BEFORE buf_size: %d, dindex: %d, totsize: %d, buffer: %p, p: %p\n", buf_size, pes->data_index, pes->total_size, pes->buffer, p); new_pes_packet(pes, ts->pkt); pes->total_size = MAX_PES_PAYLOAD; pes->buffer = av_malloc(pes->total_size+FF_INPUT_BUFFER_PADDING_SIZE); if (!pes->buffer) return AVERROR(ENOMEM); ts->stop_parse = 1; +av_log(NULL, AV_LOG_ERROR, "MPEGTS_PAYLOAD: AFTER buf_size: %d, dindex: %d, totsize: %d, buffer: %p, p: %p\n", buf_size, pes->data_index, pes->total_size, pes->buffer, p); } memcpy(pes->buffer+pes->data_index, p, buf_size); pes->data_index += buf_size;