[Ffmpeg-cvslog] r5878 - trunk/libavformat/gxfenc.c
bcoudurier
subversion
Tue Aug 1 11:56:28 CEST 2006
Author: bcoudurier
Date: Tue Aug 1 11:56:27 2006
New Revision: 5878
Modified:
trunk/libavformat/gxfenc.c
Log:
avoid reading beyond packet size
Modified: trunk/libavformat/gxfenc.c
==============================================================================
--- trunk/libavformat/gxfenc.c (original)
+++ trunk/libavformat/gxfenc.c Tue Aug 1 11:56:27 2006
@@ -724,14 +724,13 @@
gxf_write_packet_header(pb, PKT_MEDIA);
if (sc->codec->codec_id == CODEC_ID_MPEG2VIDEO && pkt->size % 4) /* MPEG-2 frames must be padded */
padding = 4 - pkt->size % 4;
+ else if (sc->codec->codec_type == CODEC_TYPE_AUDIO)
+ padding = GXF_AUDIO_PACKET_SIZE - pkt->size;
gxf_write_media_preamble(pb, ctx, pkt, pkt->size + padding);
- if (sc->codec->codec_type == CODEC_TYPE_AUDIO)
- put_buffer(pb, pkt->data, GXF_AUDIO_PACKET_SIZE);
- else {
- ctx->field_number += 2;
- put_buffer(pb, pkt->data, pkt->size);
- }
+ put_buffer(pb, pkt->data, pkt->size);
gxf_write_padding(pb, padding);
+ if (sc->codec->codec_type == CODEC_TYPE_VIDEO)
+ ctx->field_number += 2;
return updatePacketSize(pb, pos);
}
@@ -793,11 +792,10 @@
if (sc->codec->codec_type == CODEC_TYPE_AUDIO &&
(flush || fifo_size(&sc->audio_buffer, NULL) >= GXF_AUDIO_PACKET_SIZE)) {
int size = flush ? fifo_size(&sc->audio_buffer, NULL) : GXF_AUDIO_PACKET_SIZE;
- av_new_packet(out, GXF_AUDIO_PACKET_SIZE);
+ av_new_packet(out, size);
fifo_read(&sc->audio_buffer, out->data, size, NULL);
gxf->audio_written++;
out->stream_index = i;
- out->size = size;
return 1;
}
}
More information about the ffmpeg-cvslog
mailing list