diff --git a/libavformat/avformat.h b/libavformat/avformat.h index f9c28435e7..7bfe4b111b 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -42,6 +42,8 @@ typedef struct AVPacket { } AVPacket; #define PKT_FLAG_KEY 0x0001 +void av_destruct_packet_nofree(AVPacket *pkt); + /* initialize optional fields of a packet */ static inline void av_init_packet(AVPacket *pkt) { @@ -50,6 +52,7 @@ static inline void av_init_packet(AVPacket *pkt) pkt->duration = 0; pkt->flags = 0; pkt->stream_index = 0; + pkt->destruct= av_destruct_packet_nofree; } int av_new_packet(AVPacket *pkt, int size); diff --git a/libavformat/utils.c b/libavformat/utils.c index b31f4c236a..ed8f58342d 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -413,6 +413,7 @@ int av_open_input_file(AVFormatContext **ic_ptr, const char *filename, must_open_file = 1; if (fmt && (fmt->flags & AVFMT_NOFILE)) { must_open_file = 0; + pb= NULL; //FIXME this or memset(pb, 0, sizeof(ByteIOContext)); otherwise its uninitalized } if (!fmt || must_open_file) { @@ -679,7 +680,7 @@ static void compute_pkt_fields(AVFormatContext *s, AVStream *st, pkt->duration = av_rescale(pkt->duration, AV_TIME_BASE * (int64_t)st->time_base.num, st->time_base.den); } -static void av_destruct_packet_nofree(AVPacket *pkt) +void av_destruct_packet_nofree(AVPacket *pkt) { pkt->data = NULL; pkt->size = 0; }