MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / dyn_buf_write

Function dyn_buf_write

libavformat/aviobuf.c:801–829  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

799} DynBuffer;
800
801static int dyn_buf_write(void *opaque, uint8_t *buf, int buf_size)
802{
803 DynBuffer *d = opaque;
804 unsigned new_size, new_allocated_size;
805
806 /* reallocate buffer if needed */
807 new_size = d->pos + buf_size;
808 new_allocated_size = d->allocated_size;
809 if(new_size < d->pos || new_size > INT_MAX/2)
810 return -1;
811 while (new_size > new_allocated_size) {
812 if (!new_allocated_size)
813 new_allocated_size = new_size;
814 else
815 new_allocated_size += new_allocated_size / 2 + 1;
816 }
817
818 if (new_allocated_size > d->allocated_size) {
819 d->buffer = av_realloc(d->buffer, new_allocated_size);
820 if(d->buffer == NULL)
821 return AVERROR(ENOMEM);
822 d->allocated_size = new_allocated_size;
823 }
824 memcpy(d->buffer + d->pos, buf, buf_size);
825 d->pos = new_size;
826 if (d->pos > d->size)
827 d->size = d->pos;
828 return buf_size;
829}
830
831static int dyn_packet_buf_write(void *opaque, uint8_t *buf, int buf_size)
832{

Callers 1

dyn_packet_buf_writeFunction · 0.85

Calls 1

av_reallocFunction · 0.85

Tested by

no test coverage detected