videodecoder: _release_frame() drops the pending events
If a subclass releases a frame from the queue, the associated pending events will be dropped. This is armful as it breaks many assumption. The event could be from a tracer, which will bug the tracer result. Instead I think the event should be prepended to the next frame (so they are pushed before the next frame pending events), or placed into the instance pending frame if there is no other frame, so that they are attached to the next frame later (or pushed during drain).