Mercurial > libavformat.hg
diff utils.c @ 53:fb671d87824e libavformat
zero copy packet handling for DV1394 by Max Krasnyansky
| author | bellard |
|---|---|
| date | Mon, 03 Feb 2003 22:58:29 +0000 |
| parents | cd0155c9022e |
| children | b0e0eb595e29 |
line wrap: on
line diff
--- a/utils.c Mon Feb 03 22:53:10 2003 +0000 +++ b/utils.c Mon Feb 03 22:58:29 2003 +0000 @@ -151,6 +151,15 @@ /* memory handling */ /** + * Default packet destructor + */ +static void av_destruct_packet(AVPacket *pkt) +{ + av_free(pkt->data); + pkt->data = NULL; pkt->size = 0; +} + +/** * Allocate the payload of a packet and intialized its fields to default values. * * @param pkt packet @@ -159,34 +168,18 @@ */ int av_new_packet(AVPacket *pkt, int size) { - int i; - pkt->data = av_malloc(size + FF_INPUT_BUFFER_PADDING_SIZE); - if (!pkt->data) + void *data = av_malloc(size + FF_INPUT_BUFFER_PADDING_SIZE); + if (!data) return AVERROR_NOMEM; - pkt->size = size; - /* sane state */ - pkt->pts = AV_NOPTS_VALUE; - pkt->stream_index = 0; - pkt->flags = 0; - - for(i=0; i<FF_INPUT_BUFFER_PADDING_SIZE; i++) - pkt->data[size+i]= 0; + memset(data + size, 0, FF_INPUT_BUFFER_PADDING_SIZE); + av_init_packet(pkt); + pkt->data = data; + pkt->size = size; + pkt->destruct = av_destruct_packet; return 0; } -/** - * Free a packet - * - * @param pkt packet to free - */ -void av_free_packet(AVPacket *pkt) -{ - av_freep(&pkt->data); - /* fail safe */ - pkt->size = 0; -} - /* fifo handling */ int fifo_init(FifoBuffer *f, int size)
