• Andreas Rheinhardt's avatar
    avformat/mux: Move packet references · 020159e0
    Andreas Rheinhardt authored
    In the common case that the input packet was already refcounted,
    ff_interleave_add_packet would allocate a new AVPacketList, use
    av_packet_ref to create a new reference to the buffer for the
    AVPacketList's packet, interleave the packet and finally unreference
    the original input packet.
    This commit changes this: It uses av_packet_move_ref to transfer
    the packet to its destination. In case the input packet is refcounted,
    this saves an allocation and a free (of an AVBufferRef); if not, the
    packet is made refcounted before moving it. When the input packet has
    side data, one saves even more than one allocation+free.
    
    Furthermore, when the packet is in reality an uncoded frame, a hacky
    ad-hoc variant of av_packet_move_ref has been employed. Not any more.
    Signed-off-by: 's avatarAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
    Signed-off-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
    020159e0
mux.c 44.7 KB