Hi, On Fri, Apr 15, 2011 at 12:07 PM, Ronald S. Bultje <[email protected]> wrote: > On Fri, Apr 15, 2011 at 12:05 PM, Luca Barbato <[email protected]> wrote: >> +#define DUP_DATA(dst, size, padding) \ >> + do { \ >> + void *data; \ >> + if (padding) { \ >> + if ((unsigned)(size) > (unsigned)(size) + >> FF_INPUT_BUFFER_PADDING_SIZE) \ >> + return AVERROR(ENOMEM); \ >> + data = av_malloc(size + FF_INPUT_BUFFER_PADDING_SIZE); \ >> + } else { \ >> + data = av_malloc(size); \ >> + } \ >> + if (!data) \ >> + return AVERROR(ENOMEM); \ >> + memcpy(data, dst, size); \ >> + if (padding) \ >> + memset((uint8_t*)data + size, 0, FF_INPUT_BUFFER_PADDING_SIZE); >> \ >> + dst = data; \ >> + } while(0) >> + >> int av_dup_packet(AVPacket *pkt) >> { >> if (((pkt->destruct == av_destruct_packet_nofree) || (pkt->destruct == >> NULL)) && pkt->data) { >> - uint8_t *data; >> - /* We duplicate the packet and don't forget to add the padding >> again. */ >> - if((unsigned)pkt->size > (unsigned)pkt->size + >> FF_INPUT_BUFFER_PADDING_SIZE) >> - return AVERROR(ENOMEM); >> - data = av_malloc(pkt->size + FF_INPUT_BUFFER_PADDING_SIZE); >> - if (!data) { >> - return AVERROR(ENOMEM); >> - } >> - memcpy(data, pkt->data, pkt->size); >> - memset(data + pkt->size, 0, FF_INPUT_BUFFER_PADDING_SIZE); >> - pkt->data = data; >> + DUP_DATA(pkt->data, pkt->size, 1); >> pkt->destruct = av_destruct_packet; >> + >> + if (pkt->side_data_elems) { >> + int i; >> + >> + DUP_DATA(pkt->side_data, pkt->side_data_elems * >> sizeof(*pkt->side_data), 0); >> + for (i = 0; i < pkt->side_data_elems; i++) { >> + DUP_DATA(pkt->side_data[i].data, pkt->side_data[i].size, 1); >> + } >> + } > > Nope, this is an old version.
Oh I see the rest is in #3. Then it's ok. Ronald _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
