Skip to content

mpegtsbase: Close a buffer leak and simplify input_done

tsparse leaked input buffers quite badly:

GST_TRACERS=leaks GST_DEBUG=GST_TRACER:9 gst-launch-1.0 audiotestsrc num-buffers=3 ! avenc_aac ! mpegtsmux ! tsparse ! fakesink

The input_done vfunc was passed the input buffer, which it had to consume. For this reason, the base class takes a reference on the buffer if and only if input_done is not NULL.

Before 34af8ed6, input_done was used in tsparse to pass on the input buffer on the src pad. That commit changed the code to packetize for that pad as well and removed the use of input_done.

Afterwards, 0d2e9085 set input_done again in order to handle automatic alignment of the output buffers to the input buffers. However, it ignored the provided buffer and did not even unref it, causing a leak.

Since no code makes use of the buffer provided with input_done, just remove the argument in order to simplify things a bit.

Merge request reports