[VideoCodecVP9::complexity](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_codec.h#64) -> Set to 0 (kComplexityNormal) [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_encoder.cc#37), which we then use [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#211). Then, this is mapped to MediaDataEncoder::VPXSpecific::Complexity and passed to MediaDataEncoder from [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#247). [VideoCodecVP9::numberOfTemporalLayers](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_codec.h#65) -> Set to 1 [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_encoder.cc#39), which we then use [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#211). Passed to MediaDataEncoder [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#247). [VideoCodecVP9::denoisingOn](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_codec.h#66) -> Set to true [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_encoder.cc#40), which we then use [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#211). However, we override this [if WebrtcVideoConduit::Denoising returns false or if screencasting](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#183-189,220). Passed to MediaDataEncoder [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#248). [VideoCodecVP9::frameDroppingOn](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_codec.h#67) -> Set to true [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_encoder.cc#41), and also by us [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#221), even when doing screencast. Passed to MediaDataEncoder [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#248). [VideoCodecVP9::keyFrameInterval](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_codec.h#68) -> Set to 3000 [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_encoder.cc#42), which we then use [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#211). Passed to MediaDataEncoder [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#217). [VideoCodecVP9::adaptiveQpMode](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_codec.h#69) -> Set to true [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_encoder.cc#43), which we then use [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#211). Passed to MediaDataEncoder [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#249). [VideoCodecVP9::automaticResizeOn](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_codec.h#70) -> Set to true [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_encoder.cc#44), which we then use [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#211). We do not set this to false in the screencapture case like we do for VP8. Passed to MediaDataEncoder [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#248). [VideoCodecVP9::numberOfSpatialLayers](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_codec.h#71) -> Set to 2 [in the screencast case](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#215), or the [return of WebrtcVideoConduit::SpatialLayers](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#217) otherwise. The return of WebrtcVideoConduit::SpatialLayers is either [1](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/MediaConduitInterface.h#297), or equal to the value of the ['media.peerconnection.video.svc.spatial' pref](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/jsapi/TransceiverImpl.cpp#284-285), although it is [unclear whether values other than 1 will work](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#141). Passed to MediaDataEncoder [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#249). [VideoCodecVP9::flexibleMode](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_codec.h#72) -> Set to false [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_encoder.cc#46), which we then use [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#211). Passed to MediaDataEncoder at encoder creation time [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#249), and then again at encode init time [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#142-143)? Weird that we're setting this in two different places. Someone who knows more about this should give this a look. [VideoCodecVP9::interLayerPred](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_codec.h#73) -> Set to On [here](https://searchfox.org/mozilla-central/rev/6c8d325e61b0b445ed2e04899da38c3a4c266cba/third_party/libwebrtc/api/video_codecs/video_encoder.cc#47), which we then use [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#211). **Not passed on to MediaDataEncoder at any point.** Someone who knows more about this should give this a look.
Bug 1706917 Comment 4 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
[VideoCodecVP9::complexity](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_codec.h#64) -> Set to 0 (kComplexityNormal) [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_encoder.cc#37), which we then use [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#211). Then, this is mapped to MediaDataEncoder::VPXSpecific::Complexity and passed to MediaDataEncoder from [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#247). [VideoCodecVP9::numberOfTemporalLayers](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_codec.h#65) -> Set to 1 [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_encoder.cc#39), which we then use [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#211). Passed to MediaDataEncoder [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#247). [VideoCodecVP9::denoisingOn](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_codec.h#66) -> Set to true [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_encoder.cc#40), which we then use [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#211). However, we override this [if WebrtcVideoConduit::Denoising returns false or if screencasting](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#183-189,220). Passed to MediaDataEncoder [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#248). [VideoCodecVP9::frameDroppingOn](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_codec.h#67) -> Set to true [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_encoder.cc#41), and also by us [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#221), even when doing screencast. Passed to MediaDataEncoder [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#248). [VideoCodecVP9::keyFrameInterval](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_codec.h#68) -> Set to 3000 [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_encoder.cc#42), which we then use [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#211). Passed to MediaDataEncoder [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#217). [VideoCodecVP9::adaptiveQpMode](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_codec.h#69) -> Set to true [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_encoder.cc#43), which we then use [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#211). Passed to MediaDataEncoder [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#249). [VideoCodecVP9::automaticResizeOn](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_codec.h#70) -> Set to true [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_encoder.cc#44), which we then use [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#211). We do not set this to false in the screencapture case like we do for VP8. Passed to MediaDataEncoder [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#248). [VideoCodecVP9::numberOfSpatialLayers](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_codec.h#71) -> Set to 2 [in the screencast case](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#215), or the [return of WebrtcVideoConduit::SpatialLayers](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#217) otherwise. The return of WebrtcVideoConduit::SpatialLayers is either [1](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/MediaConduitInterface.h#297), or equal to the value of the ['media.peerconnection.video.svc.spatial' pref](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/jsapi/TransceiverImpl.cpp#284-285), although it is [unclear whether values other than 1 will work](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#141). Passed to MediaDataEncoder [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#249). [VideoCodecVP9::flexibleMode](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_codec.h#72) -> Set to false [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_encoder.cc#46), which we then use [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#211). Passed to MediaDataEncoder at encoder creation time [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#249), and then again at encode init time [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#142-143)? Weird that we're setting this in two different places. Someone who knows more about this should give this a look. [VideoCodecVP9::interLayerPred](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/third_party/libwebrtc/api/video_codecs/video_codec.h#73) -> Set to On [here](https://searchfox.org/mozilla-central/rev/6c8d325e61b0b445ed2e04899da38c3a4c266cba/third_party/libwebrtc/api/video_codecs/video_encoder.cc#47), which we then use [here](https://searchfox.org/mozilla-central/rev/364aa1d41eb9b5ea583fa6cedc56fb5343e3514f/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp#211). **Not passed on to MediaDataEncoder at any point. Query: Are we doing the right thing here?**