gitextract_laa6g7n2/ ├── .codacy.yaml ├── .eslintrc.json ├── .github/ │ ├── .ci.conf │ ├── .gitignore │ ├── fetch-scripts.sh │ ├── install-hooks.sh │ ├── pion-gopher-webrtc.png.license │ └── workflows/ │ ├── api.yaml │ ├── browser-e2e.yaml │ ├── codeql-analysis.yml │ ├── examples-tests.yaml │ ├── fuzz.yaml │ ├── lint.yaml │ ├── release.yml │ ├── renovate-go-sum-fix.yaml │ ├── reuse.yml │ ├── standardjs.yaml │ ├── test.yaml │ └── tidy-check.yaml ├── .gitignore ├── .golangci.yml ├── .goreleaser.yml ├── .reuse/ │ └── dep5 ├── DESIGN.md ├── LICENSE ├── LICENSES/ │ └── MIT.txt ├── README.md ├── api.go ├── api_js.go ├── api_test.go ├── bundlepolicy.go ├── bundlepolicy_test.go ├── certificate.go ├── certificate_js_test.go ├── certificate_test.go ├── codecov.yml ├── configuration.go ├── configuration_common.go ├── configuration_js.go ├── configuration_test.go ├── constants.go ├── datachannel.go ├── datachannel_go_test.go ├── datachannel_js.go ├── datachannel_js_detach.go ├── datachannel_test.go ├── datachannelinit.go ├── datachannelmessage.go ├── datachannelparameters.go ├── datachannelstate.go ├── datachannelstate_test.go ├── dtlsfingerprint.go ├── dtlsparameters.go ├── dtlsrole.go ├── dtlsrole_test.go ├── dtlstransport.go ├── dtlstransport_js.go ├── dtlstransport_test.go ├── dtlstransportstate.go ├── dtlstransportstate_test.go ├── e2e/ │ ├── Dockerfile │ ├── e2e_test.go │ └── test.html ├── errors.go ├── examples/ │ ├── README.md │ ├── bandwidth-estimation-from-disk/ │ │ ├── README.md │ │ └── main.go │ ├── broadcast/ │ │ ├── README.md │ │ ├── jsfiddle/ │ │ │ ├── demo.css │ │ │ ├── demo.details │ │ │ ├── demo.html │ │ │ └── demo.js │ │ └── main.go │ ├── custom-logger/ │ │ ├── README.md │ │ └── main.go │ ├── data-channels/ │ │ ├── README.md │ │ ├── jsfiddle/ │ │ │ ├── demo.css │ │ │ ├── demo.details │ │ │ ├── demo.html │ │ │ ├── demo.js │ │ │ └── main.go │ │ └── main.go │ ├── data-channels-detach/ │ │ ├── README.md │ │ ├── jsfiddle/ │ │ │ ├── demo.css │ │ │ ├── demo.html │ │ │ └── main.go │ │ └── main.go │ ├── data-channels-detach-create/ │ │ ├── README.md │ │ └── main.go │ ├── data-channels-flow-control/ │ │ ├── README.md │ │ └── main.go │ ├── data-channels-simple/ │ │ ├── README.md │ │ ├── demo.html │ │ └── main.go │ ├── data-channels-whip-whep-like/ │ │ ├── README.md │ │ ├── index.html │ │ └── main.go │ ├── example.html │ ├── examples.go │ ├── examples.json │ ├── ice-proxy/ │ │ ├── README.md │ │ ├── answer.go │ │ ├── main.go │ │ ├── offer.go │ │ ├── proxy.go │ │ └── turn.go │ ├── ice-restart/ │ │ ├── README.md │ │ ├── index.html │ │ └── main.go │ ├── ice-single-port/ │ │ ├── README.md │ │ ├── index.html │ │ └── main.go │ ├── ice-tcp/ │ │ ├── README.md │ │ ├── index.html │ │ └── main.go │ ├── index.html │ ├── insertable-streams/ │ │ ├── README.md │ │ ├── jsfiddle/ │ │ │ ├── demo.css │ │ │ ├── demo.details │ │ │ ├── demo.html │ │ │ └── demo.js │ │ └── main.go │ ├── ortc/ │ │ ├── README.md │ │ └── main.go │ ├── ortc-media/ │ │ ├── README.md │ │ └── main.go │ ├── pion-to-pion/ │ │ ├── README.md │ │ ├── answer/ │ │ │ ├── Dockerfile │ │ │ └── main.go │ │ ├── docker-compose.yml │ │ ├── offer/ │ │ │ ├── Dockerfile │ │ │ └── main.go │ │ └── test.sh │ ├── play-from-disk/ │ │ ├── README.md │ │ ├── jsfiddle/ │ │ │ ├── demo.css │ │ │ ├── demo.details │ │ │ ├── demo.html │ │ │ └── demo.js │ │ └── main.go │ ├── play-from-disk-fec/ │ │ ├── README.md │ │ ├── jsfiddle/ │ │ │ ├── demo.css │ │ │ ├── demo.details │ │ │ ├── demo.html │ │ │ └── demo.js │ │ └── main.go │ ├── play-from-disk-playlist-control/ │ │ ├── README.md │ │ ├── main.go │ │ └── web/ │ │ ├── app.css │ │ ├── app.js │ │ └── index.html │ ├── play-from-disk-renegotiation/ │ │ ├── README.md │ │ ├── index.html │ │ └── main.go │ ├── quick-switch/ │ │ ├── README.md │ │ ├── index.html │ │ └── main.go │ ├── reflect/ │ │ ├── README.md │ │ ├── jsfiddle/ │ │ │ ├── demo.css │ │ │ ├── demo.details │ │ │ ├── demo.html │ │ │ └── demo.js │ │ └── main.go │ ├── repacketize/ │ │ ├── README.md │ │ ├── index.html │ │ ├── index.js │ │ └── main.go │ ├── rtcp-processing/ │ │ ├── README.md │ │ ├── jsfiddle/ │ │ │ ├── demo.css │ │ │ ├── demo.details │ │ │ ├── demo.html │ │ │ └── demo.js │ │ └── main.go │ ├── rtp-forwarder/ │ │ ├── README.md │ │ ├── jsfiddle/ │ │ │ ├── demo.css │ │ │ ├── demo.details │ │ │ ├── demo.html │ │ │ └── demo.js │ │ ├── main.go │ │ ├── rtp-forwarder.sdp │ │ └── rtp-forwarder.sdp.license │ ├── rtp-to-webrtc/ │ │ ├── README.md │ │ └── main.go │ ├── save-to-disk/ │ │ ├── README.md │ │ ├── jsfiddle/ │ │ │ ├── demo.css │ │ │ ├── demo.details │ │ │ ├── demo.html │ │ │ └── demo.js │ │ └── main.go │ ├── save-to-disk-av1/ │ │ ├── README.md │ │ └── main.go │ ├── simulcast/ │ │ ├── README.md │ │ ├── jsfiddle/ │ │ │ ├── demo.css │ │ │ ├── demo.details │ │ │ ├── demo.html │ │ │ └── demo.js │ │ └── main.go │ ├── stats/ │ │ ├── README.md │ │ └── main.go │ ├── swap-tracks/ │ │ ├── README.md │ │ ├── jsfiddle/ │ │ │ ├── demo.css │ │ │ ├── demo.details │ │ │ ├── demo.html │ │ │ └── demo.js │ │ └── main.go │ ├── trickle-ice/ │ │ ├── README.md │ │ ├── index.html │ │ └── main.go │ ├── vnet/ │ │ ├── README.md │ │ └── show-network-usage/ │ │ └── main.go │ ├── warp/ │ │ ├── index.html │ │ └── main.go │ └── whip-whep/ │ ├── README.md │ ├── index.html │ └── main.go ├── gathering_complete_promise.go ├── gathering_complete_promise_example_test.go ├── go.mod ├── go.sum ├── ice_go.go ├── icecandidate.go ├── icecandidate_test.go ├── icecandidateinit.go ├── icecandidateinit_test.go ├── icecandidatepair.go ├── icecandidatepair_test.go ├── icecandidatetype.go ├── icecandidatetype_test.go ├── icecomponent.go ├── icecomponent_test.go ├── iceconnectionstate.go ├── iceconnectionstate_test.go ├── icecredentialtype.go ├── icecredentialtype_test.go ├── icegatherer.go ├── icegatherer_test.go ├── icegathererstate.go ├── icegathererstate_test.go ├── icegatheringstate.go ├── icegatheringstate_test.go ├── icegatheroptions.go ├── icemux.go ├── iceparameters.go ├── iceprotocol.go ├── iceprotocol_test.go ├── icerole.go ├── icerole_test.go ├── iceserver.go ├── iceserver_js.go ├── iceserver_test.go ├── icetransport.go ├── icetransport_js.go ├── icetransport_test.go ├── icetransportpolicy.go ├── icetransportpolicy_test.go ├── icetransportstate.go ├── icetransportstate_test.go ├── interceptor.go ├── interceptor_option.go ├── interceptor_test.go ├── internal/ │ ├── fmtp/ │ │ ├── av1.go │ │ ├── fmtp.go │ │ ├── fmtp_test.go │ │ ├── h264.go │ │ └── vp9.go │ ├── mux/ │ │ ├── endpoint.go │ │ ├── mux.go │ │ ├── mux_test.go │ │ └── muxfunc.go │ └── util/ │ ├── util.go │ └── util_test.go ├── js_utils.go ├── mediaengine.go ├── mediaengine_test.go ├── mimetype.go ├── networktype.go ├── networktype_test.go ├── oauthcredential.go ├── offeransweroptions.go ├── operations.go ├── operations_test.go ├── ortc_datachannel_test.go ├── ortc_media_test.go ├── ortc_test.go ├── package.json ├── peerconnection.go ├── peerconnection_close_test.go ├── peerconnection_go_test.go ├── peerconnection_js.go ├── peerconnection_js_test.go ├── peerconnection_media_test.go ├── peerconnection_renegotiation_test.go ├── peerconnection_test.go ├── peerconnectionstate.go ├── peerconnectionstate_test.go ├── pkg/ │ ├── media/ │ │ ├── h264reader/ │ │ │ ├── h264reader.go │ │ │ ├── h264reader_test.go │ │ │ └── nalunittype.go │ │ ├── h264writer/ │ │ │ ├── h264writer.go │ │ │ └── h264writer_test.go │ │ ├── h265reader/ │ │ │ ├── h265reader.go │ │ │ ├── h265reader_test.go │ │ │ └── nalunittype.go │ │ ├── h265writer/ │ │ │ ├── h265writer.go │ │ │ └── h265writer_test.go │ │ ├── ivfreader/ │ │ │ ├── ivfreader.go │ │ │ └── ivfreader_test.go │ │ ├── ivfwriter/ │ │ │ ├── ivfwriter.go │ │ │ └── ivfwriter_test.go │ │ ├── media.go │ │ ├── media_test.go │ │ ├── oggreader/ │ │ │ ├── oggreader.go │ │ │ └── oggreader_test.go │ │ ├── oggwriter/ │ │ │ ├── oggwriter.go │ │ │ └── oggwriter_test.go │ │ ├── rtpdump/ │ │ │ ├── reader.go │ │ │ ├── reader_test.go │ │ │ ├── rtpdump.go │ │ │ ├── rtpdump_test.go │ │ │ ├── writer.go │ │ │ └── writer_test.go │ │ └── samplebuilder/ │ │ ├── sampleSequenceLocation.go │ │ ├── sampleSequenceLocation_test.go │ │ ├── samplebuilder.go │ │ └── samplebuilder_test.go │ ├── null/ │ │ ├── null.go │ │ └── null_test.go │ └── rtcerr/ │ └── errors.go ├── renovate.json ├── rtcpfeedback.go ├── rtcpmuxpolicy.go ├── rtcpmuxpolicy_test.go ├── rtpcapabilities.go ├── rtpcodec.go ├── rtpcodec_test.go ├── rtpcodingparameters.go ├── rtpdecodingparameters.go ├── rtpencodingparameters.go ├── rtpreceiveparameters.go ├── rtpreceiver.go ├── rtpreceiver_go.go ├── rtpreceiver_go_test.go ├── rtpreceiver_js.go ├── rtpreceiver_test.go ├── rtpsender.go ├── rtpsender_js.go ├── rtpsender_test.go ├── rtpsendparameters.go ├── rtptransceiver.go ├── rtptransceiver_js.go ├── rtptransceiver_test.go ├── rtptransceiverdirection.go ├── rtptransceiverdirection_test.go ├── rtptransceiverinit.go ├── rtptransceiverinit_go_test.go ├── sctpcapabilities.go ├── sctptransport.go ├── sctptransport_js.go ├── sctptransport_test.go ├── sctptransportstate.go ├── sctptransportstate_test.go ├── sdp.go ├── sdp_test.go ├── sdpsemantics.go ├── sdpsemantics_test.go ├── sdptype.go ├── sdptype_test.go ├── sessiondescription.go ├── sessiondescription_test.go ├── settingengine.go ├── settingengine_js.go ├── settingengine_test.go ├── signalingstate.go ├── signalingstate_test.go ├── srtp_writer_future.go ├── srtp_writer_future_test.go ├── stats.go ├── stats_go.go ├── stats_go_test.go ├── test-wasm/ │ ├── LICENSE │ ├── go_js_wasm_exec │ └── node_shim.js ├── track_local.go ├── track_local_static.go ├── track_local_static_test.go ├── track_remote.go ├── track_remote_test.go ├── vnet_test.go └── webrtc.go