+void Mux::drain()
+{
+ lock_guard<mutex> lock(mu);
+ assert(!drained);
+ assert(plug_count == 0);
+ for (QueuedPacket &qp : packet_queue) {
+ av_packet_free(&qp.pkt);
+ }
+ packet_queue.clear();
+ drained = true;
+}
+
+void Mux::undrain()
+{
+ lock_guard<mutex> lock(mu);
+ assert(drained);
+ drained = false;
+}
+