When compensating timestamps a new writable buffer is created but there is no reference kept to the original buffer. This causes upstream bufferpools to try to recycle buffers but the memory isn't writable yet since other buffers are still using it. I found the issue on an iMX8 when using the imxvideoconvert_g2d plugin before gst-interpipe:
... ! imxvideoconvert_g2d ! interpipesink ...
This caused heavy CPU usage due to imxvideoconvert_g2d trying to recycle the buffers but failing and allocating new memory.
When compensating timestamps a new writable buffer is created but there is no reference kept to the original buffer. This causes upstream bufferpools to try to recycle buffers but the memory isn't writable yet since other buffers are still using it. I found the issue on an iMX8 when using the imxvideoconvert_g2d plugin before gst-interpipe:
... ! imxvideoconvert_g2d ! interpipesink ...
This caused heavy CPU usage due to imxvideoconvert_g2d trying to recycle the buffers but failing and allocating new memory.