From MozillaWiki
< QA‎ | WebRTC
Jump to: navigation, search
  • Owner: Nils Ohlmeier
  • Target: Fx33 (desktop only)

OpenH264 Feature

How the feature is suppose to work:

  • Approximately 1min after starting Fx33 it downloads the OpenH264 plugin in the background from this URL
    • Before the download the OpenH264 plugin appears in the plugin section of about:addons with a "soon to be installed" warning
  • After the successful download the following user prefs get set:
    • media.gmp-manager.lastCheck, media.gmp-gmpopenh264.version, media.gmp-gmpopenh264.path, media.gmp-gmpopenh264.lastUpdate
  • The OpenH264 plugin appears as enabled in the plugin section of about:addons
  • The user can navigate to the plugins section on about:addons and manually set the plugin to disabled
  • The user can make WebRTC calls and Fx will offer H264 as secondary video codec after the default VP8

OpenH264 Testing

These high level areas need to be tested:

  • The download of the plugin
  • The activation of the plugin
  • The usage of the plugin and the Gecko Media Plugin (GMP) interface

Existing automated test cases:

  • test_peerConnection_basicH264Video.html uses the GMP fake plugin to make a call while using a codec from a GMP plugin


  • We assume that the H264 codec itself has been tested by Cisco, so that we don't have to test it in depth

Open questions/areas for testing/verification:

  • How to disable the download of the plugin and verify that setting works properly?
  • How to verify that not malicious code gets downloaded as the plugin?
  • How to verify the setting (?) which puts the plugin into disabled state after download?
  • How to verify that a broken XML on the download server is handled properly (needs definition of properly)?
  • How to verify that an outage of the download server is handled properly (needs definition of properly)?
  • How do we test and verify a new binary release of the plugin, before it gets release?
  • How to verify that the pre-compiled codec plugin binary works on all platforms?
  • How to verify that a disabled plugin results in no H264 offers in the SDP?
  • How to verify that disabling the plugin in the middle of a call is handled properly?
  • Do we need to verify cross-platform calling?
  • How do we test interoperability with mobile devices?
  • Is there a way to shorten the initial download delay of 60s to something less?
  • Can we do a manual installation from instead?
  • Do we have any telemetry which tells us about the percent of failed installations in the field?
  • How do media.navigator.permission.disabled and media.getusermedia.screensharing.allowed_domains interact?

OpenH264 Bugs

Make sure these are verified fixed and have tests.

Full Query
ID Summary Status Resolution
958904 OpenH264: global-buffer-overflow crash [@WelsDec::WelsResidualBlockCavlc] RESOLVED FIXED
958929 OpenH264: global-buffer-overflow crash [@WelsDec::CheckIntraChromaPredMode] RESOLVED FIXED
958935 OpenH264: global-buffer-overflow crash [@WelsDec::IdctResAddPred_c] RESOLVED FIXED
958938 OpenH264: crash [@WelsDec::GetRefPic] RESOLVED FIXED
958948 OpenH264: crash [@WelsDec::WelsMarkAsRef] RESOLVED FIXED
958958 OpenH264: global-buffer-overflow crash [@WelsDec::IdctResAddPred_c] RESOLVED FIXED
958988 OpenH264: stack-buffer-overflow crash [@WelsSVCEnc::RcInitTlWeight] RESOLVED FIXED
959139 OpenH264: heap-buffer-overflow crash in [@WelsSVCEnc::WriteBlockResidualCavlc] RESOLVED FIXED
959423 OpenH264: Assertion failed: (*ppPic1 != *ppPic2) [@WelsSVCEnc::WelsExchangeSpatialPictures] RESOLVED FIXED
960366 OpenH264: crash [@WelsDec::BsGetBits] RESOLVED FIXED
960932 OpenH264: global-buffer-overflow crash [@WelsDec::WelsResidualBlockCavlc] RESOLVED FIXED
961370 OpenH264: crash [@WelsDec::FmoParamUpdate] RESOLVED FIXED
963392 OpenH264: Assertion failed: (*ppPic1 != *ppPic2) [@WelsSVCEnc::WelsExchangeSpatialPictures] RESOLVED FIXED
963483 OpenH264: global-buffer-overflow crash [@WelsDec::DeblockingInterMb] RESOLVED FIXED
963602 OpenH264: crash [@WelsDec::GetRefPic] RESOLVED FIXED
963828 OpenH264: "runtime error: left shift of negative value" to sReadBitsCache.uiCache32Bit, pBs->uiCurBits RESOLVED FIXED
963836 OpenH264: "runtime error: load of misaligned address for type 'uint32_t'" to kuiABCD RESOLVED FIXED
963843 OpenH264: "runtime error: signed integer overflow" to pTCoeff RESOLVED FIXED
985249 Delivery of H.264 codec from OpenH264 RESOLVED FIXED
985250 OpenH264 plugin interface into Firefox RESOLVED FIXED
985251 Wrap OpenH264 codec as a plugin RESOLVED FIXED
985252 Sandbox Gecko Media Plugins (including OpenH264) for Windows RESOLVED FIXED
985253 SDP negotiation for H264 RESOLVED FIXED
985254 RTP packetization for H.264 RESOLVED FIXED
985255 Breakdown: Implement OpenH264 download VERIFIED FIXED
985256 Implement OpenH264 UX RESOLVED DUPLICATE
999721 Implement OpenH264 Signing RESOLVED WONTFIX
1007694 [UX] Decide how to expose the option to disable openh264 VERIFIED FIXED
1009760 Hook up crash reporting for GMP plugins (openh264) VERIFIED FIXED
1009764 [UX] crash reporting for GMP plugins (openh264) RESOLVED FIXED
1009765 Add GMP plugin crashes to FHR crash reporting VERIFIED FIXED
1009816 Firefox desktop: openh264 updates: check, download, install VERIFIED FIXED
1009909 Firefox desktop: Integrate the openh264 media plugin in the add-ons manager VERIFIED FIXED
1012949 Sandbox the OpenH264 plugin for Mac RESOLVED FIXED
1012951 Sandbox the OpenH264 plugin for Linux RESOLVED FIXED
1013345 Security review: openh264 plugin download and update, desktop Firefox RESOLVED INCOMPLETE
1013354 Implement openh264 update manifests in Balrog RESOLVED FIXED
1013359 Privacy policy review: OpenH264 download and install RESOLVED FIXED
1013968 Package gmp-api into a shared-upstream repo for OpenH264 builds RESOLVED FIXED
1020760 [EME] Extend GMP to support EME plugins RESOLVED FIXED
1022008 Connect SDP negotiation to CodecSpecific structures for GMP codecs RESOLVED FIXED
1022012 Finalize initial pref-on API for GMP codecs RESOLVED DUPLICATE
1024140 Do open264 builds RESOLVED FIXED
1024304 External encoder's IDR Request can't be called in WebRTC Gecko Media Plugins adapter RESOLVED DUPLICATE
1027692 OpenH264: crash [@McHorVer02WidthEq8_sse2.start] RESOLVED FIXED
1028005 OpenH264: crash [@WelsDec::DoErrorConSliceCopy] RESOLVED FIXED
1028006 OpenH264: crash [@WelsDec::DecodeFrameConstruction] RESOLVED FIXED
1028962 Gecko Media Plugin doesn't work on Aurora Release RESOLVED FIXED
1033522 Windows Debug build hits Assert when using Gecko Media Plugin RESOLVED FIXED
1035263 OSX Debug build hits Assert when using Gecko Media Plugin RESOLVED DUPLICATE
1035653 Fatal assertion creating GMPParent on GMP thread since bug 1028383 landed. RESOLVED FIXED
1035854 [UX] Update Crash Reporting for GMP Plugins (openh264) RESOLVED FIXED
1035937 Need to branch github/mozilla/gmp-api for FF32 RESOLVED FIXED
1037125 Basic automated tests for GMP plugins RESOLVED FIXED
1037317 Move GMPBufferType to be a property of GMPVideoFrameEncoded RESOLVED FIXED
1037626 H.264 SDP code doesn't find the correct fmtp value when negotiating if only mode 1 is supported RESOLVED FIXED
1037754 Hook GMP plugins to WebRTC codec availability RESOLVED FIXED
1037767 Use straight nsIChannel instead of nsIIncrementalDownload for GMPInstallManager NEW
1037911 Assert in GMP RESOLVED FIXED
1038961 Associate a GMP crash with a DOM window and fire an event at that window RESOLVED FIXED
1039028 Provide info when "Show More Information" is selected for the OpenH264 plugin in the addon manager VERIFIED FIXED
1039226 Trigger explicit OpenH264 updates from OpenH264Provider VERIFIED FIXED
1039490 Get rid of on the main thread IO from GMPInstallManager when updates are being installed NEW
1039555 factor out common URL var resolution functions for app updates and gmp update/installs NEW
1039572 GMPParent::ActorDestroy should not re-enter itself RESOLVED FIXED
1039575 GMP plugins: getting a crash ID into GMPParent::ActorDestroy RESOLVED FIXED
1039839 Use Task.jsm more inside GMPInstallManager RESOLVED DUPLICATE
1040048 Register the OpenH264 plugin from the OpenH264Provider on startup VERIFIED FIXED
1040060 Move GMPInstallManager front end code from delayed-startup+delay to final-ui-startup+delay RESOLVED WORKSFORME
1040345 GMP automated tests leak GeckoMediaPluginService RESOLVED FIXED
1040346 GMP fake plugin test should test that the GMP plugin actually launches and does something RESOLVED FIXED
1040905 Fix GetNativePath usage in GMP - Profiles with unicode characters fail on Windows RESOLVED FIXED
1040937 Open H264 plugin stuck in disabled state after download VERIFIED FIXED
1040941 Non-functional "preference" button for Open H264 plugin (depending on state) VERIFIED FIXED
1041080 Fix OpenH264Provider path registration, default enabled state and logging VERIFIED FIXED
1041097 OpenH264 should be enabled by default RESOLVED DUPLICATE
1041181 Investigate repeated & redundant GMPInstallManager log lines RESOLVED FIXED
1041226 GMPChild should finish IPC setup before calling Crashreporter IPC method RESOLVED FIXED
1041232 Disabling a GMP plugin while it's in-use in a call leads to a UAF crash. VERIFIED FIXED
1041244 Segfault on GMP plugin communication attempt RESOLVED DUPLICATE
1041347 Fake GMP plugin has to be accessible and installed for running mochitests using it RESOLVED FIXED
1041402 Crash in GMP plugin code RESOLVED DUPLICATE
1041525 Possible deadlock in Crashreporter::OOPInit() from GMP plugin initialization VERIFIED FIXED
1042161 Handle OpenH264 updates for long-running sessions VERIFIED FIXED
1042348 crash in libsystem_kernel.dylib@0x15866 (mozilla::ipc::GeckoChildProcessHost::PerformAsyncLaunchInternal) VERIFIED FIXED
1042791 H264 SDP in WebRTC has non-standard fmtp line RESOLVED FIXED
1043042 OpenH264 crash in nsAppShell::ProcessNextNativeEvent RESOLVED DUPLICATE
1043394 crash in mozilla::ipc::MessageChannel::NotifyGeckoEventDispatch() RESOLVED DUPLICATE
1043515 H264 SDP Issues RESOLVED FIXED
1043531 OpenH264 crash reporting notification not shown VERIFIED FIXED
1043968 crash in mozilla::WebrtcGmpVideoEncoder::Encode_g(webrtc::I420VideoFrame const*, webrtc::CodecSpecificInfo const*, std::vector<webrtc::VideoFrameType, std::allocator<webrtc::VideoFrameType> > const*) RESOLVED DUPLICATE
1043973 crash in mozilla::runnable_args_m_5_ret<mozilla::WebrtcGmpVideoDecoder*, int ( mozilla::WebrtcGmpVideoDecoder::*)... RESOLVED DUPLICATE
1044245 GMP with OpenH264 crashes on Windows. VERIFIED FIXED
1044249 Crash during OpenH264 call. RESOLVED DUPLICATE
1044268 Ability to turn off H.264 downloads in the field if there are problems RESOLVED WORKSFORME
1044408 Enable crashing the fake GMP plugin from test code RESOLVED FIXED
1044550 Move GMP Shmem cache from global to per-GMPParent RESOLVED FIXED
1045209 The OpenH264 path should be relative to the profile directory and include a version subdirectory VERIFIED FIXED
1045500 Crash reporter notification cuts off OpenH264 plugin name VERIFIED FIXED
1046052 Create mochitest-browser test for GMP crash reporting NEW
1046644 Honor OpenH264 autoupdate pref for the initial GMP install check VERIFIED FIXED
1047374 Missing "Submit a crash report" button from OpenH264 crash reporting notification [Windows only] RESOLVED WORKSFORME
1047442 Locking assumption in Encoded() callback invalid with async codecs RESOLVED FIXED
1049501 crash in mozilla::gmp::PGMPParent::DeallocShmems() VERIFIED FIXED
1050461 H.264 RTP packetization with multiple NALUs per frame RESOLVED FIXED
1050521 Make GMPService init async RESOLVED WONTFIX
1053745 Include OpenH264 plugin in FHR data VERIFIED FIXED
1053746 Add telemetry probes for OpenH264 plugin VERIFIED FIXED
1053748 [FHR] Crashing gmp using media.gmp.plugin.crash pref does not store data in FHR RESOLVED WONTFIX
1054624 OpenH264 calls between two machines shows streaming issues RESOLVED FIXED
1054704 Fake H.264 encoder doesn't work in mochitests RESOLVED FIXED
1054965 [Mac Only] Missing "Submit a crash report" button from OpenH264 crash reporting notification VERIFIED FIXED
1055080 H264 fmtp in SDP from about:webrtc differs from SDP returned by createOffer/Answer NEW
1055308 GMP Fake plugin keeps crashing RESOLVED FIXED
1055779 Improve Fake H2.64 GMP plugin to better exercise GMP/platform/packetization code RESOLVED INCOMPLETE
1056029 [Linux] OpenH264 crash reporting notification not always shown RESOLVED WORKSFORME
1056350 WebRTC H.264 HD video needs higher level, resolution, frame rate, bit rate RESOLVED FIXED
1059477 GMP crash on call closing RESOLVED DUPLICATE
1059765 H264 codecs in webrtc don't use content analysis and framerate/resolution adaptation RESOLVED FIXED
1062259 OpenH264 plugin is not installing on Firefox 33b1, 34.0a2 and 35.0a1 RESOLVED WORKSFORME
1076808 [OpenH264] v1.0 displayed in License information and crash reports instead of v1.1 RESOLVED INVALID
1100304 Cisco's OpenH264 binary blob is downloaded without prompting the user RESOLVED WONTFIX
1102531 On-demand download of Cisco H.264 plugin should occur over HTTPS NEW
1105685 Cisco OpenH264 Media Processing Use-After-Free Vulnerability RESOLVED WORKSFORME
1105688 Cisco OpenH264 Media Processing Buffer Overflow Vulnerability RESOLVED WORKSFORME
1105990 downloads OpenH264 binary blob in "safe mode" RESOLVED WONTFIX
1106067 CWE-119 - critical buffer overflow in H264 RESOLVED DUPLICATE
1114748 Nightly firefox (12/21/14) fails to install openh264 - will be installed shortly. RESOLVED FIXED
1156342 OpenH264: global-buffer-overflow crash [@WelsDec::ParseScalingList] RESOLVED FIXED
1156346 OpenH264: crash [@WelsDec::WelsCalcDeqCoeffScalingList] RESOLVED FIXED
1182717 OpenH264: ASan heap-buffer-overflow WRITE in WelsDec::DoErrorConSliceMVCopy RESOLVED FIXED
1182718 OpenH264: ASan heap-buffer-overflow READ in WelsDec::GetAvilInfoFromCorrectMb RESOLVED FIXED
1182731 OpenH264: Assertion `m_nMemoryUsageInBytes == 0' failed in WelsCommon::CMemoryAlign::~CMemoryAlign() RESOLVED FIXED
1183287 OpenH264: crash [@WelsDec::BaseMC] RESOLVED FIXED
1183350 OpenH264: NULL deref [@WelsRequestMem] RESOLVED FIXED
1183388 OpenH264: ASan attempting free on address which was not malloc()-ed in SyncPictureResolutionExt() RESOLVED FIXED
1183756 OpenH264: NULL deref [@WelsDec::PrefetchPic] RESOLVED FIXED
1184396 OpenH264: ASan global-buffer-overflow in WelsDec::CavlcGetTrailingOnesAndTotalCoeff RESOLVED FIXED
1184792 OpenH264: crash [@WelsCopy16x16_sse2] RESOLVED FIXED
1185624 OpenH264: NULL deref [@OpeWelsDec::CheckRefPicturesComplete] RESOLVED FIXED
1192929 Openh264: heap-use-after-free [@WelsDec::WelsReorderRefList] RESOLVED FIXED
1192947 OpenH264: crash [@WelsDec::WelsReorderRefList] RESOLVED FIXED
1193826 Openh264: heap-buffer-overflow [@WelsEnc::CWelsPreProcess::DetectSceneChangeScreen] RESOLVED FIXED
1194481 OpenH264: stack-buffer-overflow [@CReadConfig::ReadLine] RESOLVED FIXED
1196703 Cisco H.264 plugin should be protected by stronger signature NEW
1197878 Openh264: NULL crash [@WelsEnc::TagPicture::SetUnref] RESOLVED FIXED
1197888 OpenH264: heap-buffer-overflow [@WelsDec::PrefetchPic] RESOLVED FIXED
1198940 OpenH264: null deref [@WelsEnc::CWelsPreProcess::GetCurrentFrameFromOrigList] RESOLVED FIXED
1199437 OpenH264: NULL function pointer [@WelsDec::DoMbECMvCopy] RESOLVED FIXED
1200085 Firefox 40.0.2 Crash [@ libgmpopenh264.dylib@0x25c1 ] RESOLVED FIXED
1200266 Openh264: fpe [@WelsEnc::JudgeNeedOfScaling] RESOLVED FIXED
1207762 UBSan: left shift of negative value rec_mb.cpp:246:14 RESOLVED FIXED
1207767 UBSan: left shift of negative value in deblocking_common.cpp:201:17 RESOLVED FIXED
1207773 UBSan: index out of bounds in parse_mb_syn_cavlc.cpp:915:60 RESOLVED FIXED
1209849 OpenH264: Multiple invalid writes [@WelsDec::BaseMC] RESOLVED FIXED
1209851 OpenH264: double-free [@DestroyPicBuff] RESOLVED FIXED
1211070 OpenH264: MSan use-of-uninitialized-value in WelsStrcat RESOLVED FIXED
1215339 OpenH264: UBSan index out of bounds in [@WelsDec::MMCO] RESOLVED FIXED
1215340 OpenH264: shift exponent too large in [@WelsDec::DecodeExpBypassCabac] RESOLVED FIXED
1215715 OpenH264: UBSan signed integer overflow in [WelsDec::BsGetUe] RESOLVED FIXED
1215757 OpenH264: UBSan signed integer overflow in [@WelsDec::ParseResidualBlockCabac] RESOLVED FIXED
1216206 OpenH264: UBSan index out of bounds in [@WelsDec::ParseSliceHeaderSyntaxs] RESOLVED FIXED
1224081 OpenH264: UBSan signed integer overflow in [WelsDec::ParseResidualBlockCabac] RESOLVED DUPLICATE
1227324 OpenH264: SEGV at NULL in [@WelsDec::WelsInitRefList] RESOLVED FIXED
1227328 OpenH264: heap-buffer-overflow READ in [@WelsDec::NeedErrorCon] RESOLVED FIXED
1227329 OpenH264: heap-buffer-overflow WRITE in [@WelsDec::ParseIntra4x4Mode] RESOLVED FIXED
1227337 OpenH264: heap-buffer-overflow READ in [@WelsDec::GetAvilInfoFromCorrectMb] RESOLVED FIXED
1227341 OpenH264: Invalid write in [@WelsDec::DecodeFrameConstruction] RESOLVED FIXED
1227375 OpenH264: SEGV on unknown address in [@WelsDec::DoErrorConSliceMVCopy] RESOLVED FIXED
1258737 OpenH264: SEGV on unknown address in [@WelsDec::WelsDecodeSlice] RESOLVED FIXED
1258783 OpenH264: Invalid write in [@WelsDec::WelsDecodeMbCavlcPSlice] RESOLVED FIXED
1260800 OpenH264: UBSan signed integer overflow in [@WelsDec::ParseResidualBlockCabac] RESOLVED FIXED
1368873 OpenH264: UBSan index out of bounds in [@WelsDec::WelsInitRefList] RESOLVED FIXED
1444116 Update Homepage in plugin description from HTTP to HTTPS VERIFIED FIXED
1513000 Update to Openh264 plugin release v1.8.1 RESOLVED FIXED
1619988 [meta] Update OpenH264 to 2.4.1 ASSIGNED
1831163 Make WebRTC configure new options with OpenH264 2.3.2 ASSIGNED

178 Total; 9 Open (5.06%); 143 Resolved (80.34%); 26 Verified (14.61%);