QA/Fennec/H264

From MozillaWiki
< QA‎ | Fennec
Jump to: navigation, search

Overview - H.264/AAC/MP3 Software/Hardware Decoding in Firefox for Android

Feature Release Target Dev Lead QA Lead Dev Status QA Status Health
H.264/AAC/MP3 Software/Hardware Decoding in Firefox for Android Firefox 17 Chris Peterson Aaron Train Landed In Progress OK

Summary

In essence, the goal of implementing H.264/AAC/MP3 support in Firefox for Android is to extend the playback capabilities of the browser to provide a greater video experience. The popular H.264 format is widely viewed as the best technical choice for encoding Internet video. Users should be able to seamlessly experience flawless playback from these widely used formats.

Support for the H.264, AAC and MP3 codecs is provided by using the android ‘libstagefright’ library which allows hardware accelerated decoding of some video formats.

  • H.264/MPEG-4 Part 10 or AVC (Advanced Video Coding) is a standard for video compression, and is currently one of the most commonly used formats for the recording, compression, and distribution of high definition video. The final drafting work on the first version of the standard was completed in May 2003.
  • Advanced Audio Coding (AAC) is a standardized, lossy compression and encoding scheme for digital audio. Designed to be the successor of the MP3 format, AAC generally achieves better sound quality than MP3 at similar bit rates.
  • MPEG-1 or MPEG-2 Audio Layer III, more commonly referred to as MP3, is a patented encoding format for digital audio which uses a form of lossy data compression. It is a common audio format for consumer audio storage, as well as a de facto standard of digital audio compression for the transfer and playback of music on most digital audio players.

Testing Scope

Major Features

For our rounds of testing feature focused testing will focus on the following areas:

  • Hardware Decoding
    • Device playback of H.264
    • Device playback of AAC
    • Device playback of MP3
  • Software Decoding
    • Device playback of H.264
    • Device playback of AAC
    • Device playback of MP3
  • Framework compatibility
    • Compliance and acceptance of commonly used video content providers
  • Device compatibility
  • Varied manufacturers, Android OS versions and hardware specifications

Software Qualities

The following software qualities that need to be analyzed are (ordered by priority):

  1. Compatibility
    1. H.264, AAC, MP3
    2. Video content providers
  2. Performance

Edge Cases

The following special edge cases need to be taken into account when testing the major parts of this feature:

  • Browser crashes
  • Device configuration

Testing Strategy

Akin to B2G (Firefox OS) there will be a similar and or shared testing strategy. Please see this testing strategy.

Hardware and Software Decoding

Firefox for Android has recently adapted a new about:config preference for using and more-so testing Android H.264/MPEG-4 AVC decoding. The preference is media.stagefright.omxcodec.flags

Utimately, this preference allows one to override whether Firefox uses Android’s H.264/MPEG-4 AVC software or hardware decoder. As Chris Peterson mentions in the same announcement, this is useful for debugging different configurations and conveinent for testing.

Flags values to note:

  • 0 - Android will use either hardware or software decoding (**default**)
  • 8 - Force software decoding
  • 16 - Force hardware decoding

Sign Off Criteria

Beta

  • Aurora and Beta-level functional test cases pass
  • No unresolved bugs with a severity level of major or higher that cause Aurora or Beta test cases to fail
  • No regressions in Firefox linked to the features code changes detected with a severity of major or higher

Release

  • No bugs found with a severity level of major or higher in test cases
  • All major functional test cases pass
  • No unresolved bugs with a severity level of major or higher that causes tests to fail

Infrastucture Requirements

Test Cases and Results

Test Cases

  • Video Codecs
    • H.264 Baseline: avc1.42001E (H.264 Baseline Profile Level 3.0)
    • H.264 Main: avc1.4D401E (H.264 Main Profile Level 3.0)
    • H.264 High: avc1.6400xx, where xx is the AVC level
    • MPEG-4 Visual Simple Profile Level 0: mp4v.20.9
    • MPEG-4 Visual Advanced Simple Profile Level 0: mp4v.20.240

Smoke Level

  • Verify audio codec Vorbis supported
    • Verify that the following codecs are supported by importing videos in the respective formats: *Audio: Vorbis
      • → Videos encoded with audio format Vorbis should play in the video app.
  • Verify audio codec MP3 supported
    • The following Codec should be supported: Audio: MP3
      • Verify that the following codecs are supported by importing videos in the respective formats: *Audio: MP3
        • → Verify that the following codecs are supported by importing videos in the respective formats: *Audio: MP3
  • Verify audio codec AAC supported
    • The following Codec should be supported: Audio: AAC
      • Verify that the following codecs are supported by importing videos in the respective formats: *Audio: AAC
        • → Videos encoded with audio format AAC should play in the video app.
  • Verify video codec H.264 supported
    • The following Codec should be supported: Video: H.264
      • Verify that the following codecs are supported by importing videos in the respective formats: *Video: H.264
        • → Videos encoded with H.264 should play in the video app.

Basic Functional Level

Exploratory Testing

Video Based Websites

Results

Device Compatibility

Device Owner Bugs Status
Samsung Galaxy SIII (Android 4.1.1) AaronMT [:AaronMT] Fixed: bug 785275 PASS
Samsung Galaxy Nexus (Android 4.1.2) AaronMT [:AaronMT] PASS
Samsung Nexus S (Android 4.1.12) AaronMT [:AaronMT] PASS
Asus Nexus 7 (Android 4.1.2) AaronMT [:AaronMT] PASS
Asus Transformer Prime (TF201) (Android 4.1.1) AaronMT [:AaronMT] PASS
Samsung Galaxy Tab 2 7" (Android 4.0.4) AaronMT [:AaronMT] PASS
Samsung Galaxy SII (Android 4.0.4) AaronMT [:AaronMT] Fixed: bug 802787 PASS
Samsung Galaxy Note (Android 4.0.4) AaronMT [:AaronMT] Fixed: bug 802795 PASS
Samsung Galaxy Note II (Android 4.1) AaronMT [:AaronMT] PASS

Bugs

[In Progress] Media: Software Decoder

Full Query
ID Summary Priority Status
784019 OMX.google.h264.decoder playback aborts on Android with: 'Timed out waiting for output buffers: 0/1 -- RESOLVED
785441 Gecko assertion failures when using Stagefright decoding: "ScaleYCbCrToRGB565 source image unpadded?" -- RESOLVED
786071 Stagefright software decoder fails with OMX_ErrorUnderflow when trying to play 720p or 1080p videos P1 RESOLVED
786112 Stagefright software decoder shows blank page for 720p and 1080p videos P1 RESOLVED
786117 Stagefright software decoder crashes playing Bloomberg video P1 VERIFIED
787226 [meta] Blockers for shipping Android ICS/JB software decoding support (Software Platform Decoders) for H.264/AAC/MP3 video/audio playback -- RESOLVED
787319 [meta] crash in nsMediaPluginHost::CreateDecoder @ libomxplugin.so on Sony devices with Adreno 220/225 GPUs or devices with PowerVR SGX 531 GPU running ICS -- RESOLVED
802620 crash in mozilla::FileBlockCache::Read @ libstagefright.so@0xf... on devices with Mali-400 MP GPU running ICS -- RESOLVED
802629 crash in OmxDecoder::ReadAudio @ libstagefright.so@0x6... with Samsung GT-I9300 or P6000 series running ICS P3 RESOLVED
802795 Mixed video playback results on all channels (H.264) on the Samsung Galaxy Note -- RESOLVED
803794 crash in nsMediaPluginHost::CreateDecoder @ libomxplugin.so@0xe.. on Sony devices with Adreno 220/225 GPUs running ICS -- RESOLVED
804768 crash in nsMediaPluginHost::CreateDecoder @ libcutils.so@0x6... on devices with smdk4x12/mt6577/mt6575 hw running ICS and above -- RESOLVED
817478 Fix root cause of crash in nsMediaPluginHost::CreateDecoder @ libomxplugin.so@0xe.. on Sony devices with Adreno 220/225 GPUs running ICS -- RESOLVED

13 Total; 0 Open (0%); 12 Resolved (92.31%); 1 Verified (7.69%);


[In Progress] Media: Hardware Decoder

Full Query
ID Summary Priority Status
785340 crash in OmxDecoder::ReadAudio -- RESOLVED
786103 Stagefright: Galaxy S III hardware decoder video is green (OMX_COLOR_FormatYUV420SemiPlanar) P1 RESOLVED
802827 Crash in nsMediaPluginHost::DestroyDecoder @ libstagefrighthw.so@0xca3 on devices with NVIDIA Tegra/Tegra 3 GPUs P5 RESOLVED
803394 Implement color conversion routine used by Sony Ericsson devices to enable hardware acceleration on Android -- RESOLVED
808375 crash in nsMediaPluginHost::DestroyDecoder @ libSEC_OMX_Core.so@0x1... on Samsung devices with smdk4210/smdk4x12 hw running ICS and above P3 RESOLVED
808378 crash in nsMediaPluginHost::CreateDecoder @ libOMX_Core.so@0x1... on devices with rk<n>board HW and Mali-400 MP GPU running JB -- RESOLVED
812881 crash in nsMediaPluginHost::DestroyDecoder @ libsomxcore.so@0x1826, mainly on Samsung Galaxy SIII, with qcom/samsunggolden/espresso/espresso10 hw running JB -- RESOLVED

7 Total; 0 Open (0%); 7 Resolved (100%); 0 Verified (0%);

References

  • bug 759945 - Stagefright decoding using software decoders
  • bug 782508 - Stagefright decoding using hardware decoders

Open Questions