rendered paste bodyIndex: 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;