asfdemux: fix performance issue, especially with high-bitrate streams v0.10.18.3+ti
authorTim-Philipp Müller <tim.muller@collabora.co.uk>
Thu, 12 Apr 2012 12:56:48 +0000 (13:56 +0100)
committerVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Fri, 5 Oct 2012 12:19:46 +0000 (13:19 +0100)
commita102e1b7c4903436d6c0e9845e12acb26044862f
treecad0f2ffeca0e9f1e4a342c5af22b530e461f28a
parent585de9aeaea98a0f3ba56a5336217e2967cc34cc
asfdemux: fix performance issue, especially with high-bitrate streams

Two things were suboptimal from a performance point of view:

a) consider a large media object such as a video keyframe, which
   may be split up into multiple fragments. We would assemble
   the media object as follows:
     buf = join (join (join (frag1, frag2), frag3), frag4)
   which causes many unnecessary memcpy()s, and malloc/free,
   which could easily add up to a multiple of the actual object
   size. To avoid this, we allocate a buffer of the size needed
   from the start and copy fragments into that directly.

b) for every fragment to join, we would create a sub-buffer
   before joining it (which would discard the sub-buffer again),
   leading to unnecessary miniobject create/free churn.
gst/asfdemux/asfpacket.c
gst/asfdemux/asfpacket.h