Mercurial > libavformat.hg
comparison 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 |
comparison
equal
deleted
inserted
replaced
52:2a60f406fccc | 53:fb671d87824e |
---|---|
149 } | 149 } |
150 | 150 |
151 /* memory handling */ | 151 /* memory handling */ |
152 | 152 |
153 /** | 153 /** |
154 * Default packet destructor | |
155 */ | |
156 static void av_destruct_packet(AVPacket *pkt) | |
157 { | |
158 av_free(pkt->data); | |
159 pkt->data = NULL; pkt->size = 0; | |
160 } | |
161 | |
162 /** | |
154 * Allocate the payload of a packet and intialized its fields to default values. | 163 * Allocate the payload of a packet and intialized its fields to default values. |
155 * | 164 * |
156 * @param pkt packet | 165 * @param pkt packet |
157 * @param size wanted payload size | 166 * @param size wanted payload size |
158 * @return 0 if OK. AVERROR_xxx otherwise. | 167 * @return 0 if OK. AVERROR_xxx otherwise. |
159 */ | 168 */ |
160 int av_new_packet(AVPacket *pkt, int size) | 169 int av_new_packet(AVPacket *pkt, int size) |
161 { | 170 { |
162 int i; | 171 void *data = av_malloc(size + FF_INPUT_BUFFER_PADDING_SIZE); |
163 pkt->data = av_malloc(size + FF_INPUT_BUFFER_PADDING_SIZE); | 172 if (!data) |
164 if (!pkt->data) | |
165 return AVERROR_NOMEM; | 173 return AVERROR_NOMEM; |
174 memset(data + size, 0, FF_INPUT_BUFFER_PADDING_SIZE); | |
175 | |
176 av_init_packet(pkt); | |
177 pkt->data = data; | |
166 pkt->size = size; | 178 pkt->size = size; |
167 /* sane state */ | 179 pkt->destruct = av_destruct_packet; |
168 pkt->pts = AV_NOPTS_VALUE; | |
169 pkt->stream_index = 0; | |
170 pkt->flags = 0; | |
171 | |
172 for(i=0; i<FF_INPUT_BUFFER_PADDING_SIZE; i++) | |
173 pkt->data[size+i]= 0; | |
174 | |
175 return 0; | 180 return 0; |
176 } | |
177 | |
178 /** | |
179 * Free a packet | |
180 * | |
181 * @param pkt packet to free | |
182 */ | |
183 void av_free_packet(AVPacket *pkt) | |
184 { | |
185 av_freep(&pkt->data); | |
186 /* fail safe */ | |
187 pkt->size = 0; | |
188 } | 181 } |
189 | 182 |
190 /* fifo handling */ | 183 /* fifo handling */ |
191 | 184 |
192 int fifo_init(FifoBuffer *f, int size) | 185 int fifo_init(FifoBuffer *f, int size) |