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)