gecko-dev/content/media/test/mochitest.ini
Chris Pearce 7f6e8b96b9 Bug 986947 - Make MP3 contained in MP4 playback again on Windows with WMF backend. r=padenot
Report that we can play MP3 inside MP4 on Windows Vista and later in
HTMLMediaElement.canPlayType. Chrome and IE on Windows match this behaviour.

Add a test file with MP3 contained inside MP4. Note the B2G emulator can't play
this file, so I added a codecs parameter to the file's mime type so that
decoder backends have to opt-in to testing with it.

Enable playback of MP3 inside MP4 in WMFReader.

Change from reporting the IMFSourceReader's duration inside WMFReader, to
instead report the IMFSourceReader's duration as the media "end time". This is
needed because the MP3-contained-in-MP4 file's first sample output by the
IMFSourceReader has a non-zero timestamp, and the MediaDecoderStateMachine
assumes that the media samples will be in the range
[$firstSampleStartTime, $firstSampleStartTime+$reportedDuration]. But that's
not the case here, the IMFSourceReader seems to output samples in the range
[0,$reportedDuration]. This assumption mismatch means on the
MP3-contained-in-MP4 file we end up trying to seek after what the
IMFSourceReader assumes is the end of the file, which fails and causes
test failures.
2014-04-04 10:39:42 +13:00

500 lines
16 KiB
INI

# Media tests should be backend independent, i.e., not conditioned on ogg,
# wave etc. (The only exception is the can_play_type tests, which
# necessarily depend on the backend(s) configured.) As far as possible, each
# test should work with any resource type. This makes it easy to add new
# backends and reduces the amount of test duplication.
# For each supported backend, resources that can be played by that backend
# should be added to the lists in manifest.js. Media tests that aren't
# testing for a bug in handling a specific resource type should pick one of
# the lists in manifest.js and run the test for each resource in the list
# that is supported in the current build (the canPlayType API is useful for
# this).
# To test whether a valid resource can simply be played through correctly,
# and optionally that its metadata is read correctly, just add it to
# gPlayTests in manifest.js. To test whether an invalid resource correctly
# throws an error (and does not cause a crash or hang), just add it to
# gErrorTests in manifest.js.
# To test for a specific bug in handling a specific resource type, make the
# test first check canPlayType for the type, and if it's not supported, just
# do ok(true, "Type not supported") and stop the test.
[DEFAULT]
#bug 918299
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug))
support-files =
320x240.ogv
320x240.ogv^headers^
448636.ogv
448636.ogv^headers^
VID_0001.ogg
VID_0001.ogg^headers^
allowed.sjs
audio-gaps.ogg
audio-gaps.ogg^headers^
audio-overhang.ogg
audio-overhang.ogg^headers^
audio.wav
audio.wav^headers^
badtags.ogg
badtags.ogg^headers^
basic.vtt
bad-signature.vtt
beta-phrasebook.ogg
beta-phrasebook.ogg^headers^
big-buck-bunny-unseekable.mp4
big-buck-bunny-unseekable.mp4^headers^
big.wav
big.wav^headers^
bogus.duh
bogus.ogv
bogus.ogv^headers^
bogus.wav
bogus.wav^headers^
bug461281.ogg
bug461281.ogg^headers^
bug482461-theora.ogv
bug482461-theora.ogv^headers^
bug482461.ogv
bug482461.ogv^headers^
bug495129.ogv
bug495129.ogv^headers^
bug495794.ogg
bug495794.ogg^headers^
bug498380.ogv
bug498380.ogv^headers^
bug498855-1.ogv
bug498855-1.ogv^headers^
bug498855-2.ogv
bug498855-2.ogv^headers^
bug498855-3.ogv
bug498855-3.ogv^headers^
bug499519.ogv
bug499519.ogv^headers^
bug500311.ogv
bug500311.ogv^headers^
bug501279.ogg
bug501279.ogg^headers^
bug504613.ogv
bug504613.ogv^headers^
bug504644.ogv
bug504644.ogv^headers^
bug504843.ogv
bug504843.ogv^headers^
bug506094.ogv
bug506094.ogv^headers^
bug516323.indexed.ogv
bug516323.indexed.ogv^headers^
bug516323.ogv
bug516323.ogv^headers^
bug520493.ogg
bug520493.ogg^headers^
bug520500.ogg
bug520500.ogg^headers^
bug520908.ogv
bug520908.ogv^headers^
bug523816.ogv
bug523816.ogv^headers^
bug533822.ogg
bug533822.ogg^headers^
bug556821.ogv
bug556821.ogv^headers^
bug557094.ogv
bug557094.ogv^headers^
bug580982.webm
bug580982.webm^headers^
bug603918.webm
bug603918.webm^headers^
bug604067.webm
bug604067.webm^headers^
bug883173.vtt
can_play_type_dash.js
can_play_type_mpeg.js
can_play_type_ogg.js
can_play_type_wave.js
can_play_type_webm.js
cancellable_request.sjs
chain.ogg
chain.ogg^headers^
chain.ogv
chain.ogv^headers^
chain.opus
chain.opus^headers^
chained-audio-video.ogg
chained-audio-video.ogg^headers^
chained-video.ogv
chained-video.ogv^headers^
contentDuration1.sjs
contentDuration2.sjs
contentDuration3.sjs
contentDuration4.sjs
contentDuration5.sjs
contentDuration6.sjs
contentDuration7.sjs
contentType.sjs
detodos.opus
detodos.opus^headers^
detodos.webm
detodos.webm^headers^
dirac.ogg
dirac.ogg^headers^
dynamic_redirect.sjs
dynamic_resource.sjs
file_access_controls.html
fragment_noplay.js
fragment_play.js
gizmo.mp4
gizmo.mp4^headers^
huge-id3.mp3
huge-id3.mp3^headers^
id3tags.mp3
id3tags.mp3^headers^
invalid-cmap-s0c0.opus
invalid-cmap-s0c0.opus^headers^
invalid-cmap-s0c2.opus
invalid-cmap-s0c2.opus^headers^
invalid-cmap-s1c2.opus
invalid-cmap-s1c2.opus^headers^
invalid-cmap-short.opus
invalid-cmap-short.opus^headers^
invalid-m0c0.opus
invalid-m0c0.opus^headers^
invalid-m0c3.opus
invalid-m0c3.opus^headers^
invalid-m1c0.opus
invalid-m1c0.opus^headers^
invalid-m1c9.opus
invalid-m1c9.opus^headers^
invalid-m2c0.opus
invalid-m2c0.opus^headers^
invalid-m2c1.opus
invalid-m2c1.opus^headers^
invalid-preskip.webm
invalid-preskip.webm^headers^
long.vtt
manifest.js
multiple-bos.ogg
multiple-bos.ogg^headers^
no-cues.webm
no-cues.webm^headers^
noContentLength.sjs
notags.mp3
notags.mp3^headers^
owl-funnier-id3.mp3
owl-funnier-id3.mp3^headers^
owl-funny-id3.mp3
owl-funny-id3.mp3^headers^
owl.mp3
owl.mp3^headers^
r11025_msadpcm_c1.wav
r11025_msadpcm_c1.wav^headers^
r11025_s16_c1.wav
r11025_s16_c1.wav^headers^
r11025_s16_c1_trailing.wav
r11025_s16_c1_trailing.wav^headers^
r11025_u8_c1.wav
r11025_u8_c1.wav^headers^
r11025_u8_c1_trunc.wav
r11025_u8_c1_trunc.wav^headers^
r16000_u8_c1_list.wav
r16000_u8_c1_list.wav^headers^
reactivate_helper.html
redirect.sjs
referer.sjs
region.vtt
seek.ogv
seek.ogv^headers^
seek.webm
seek.webm^headers^
seek.yuv
seek1.js
seek10.js
seek11.js
seek12.js
seek13.js
seek2.js
seek3.js
seek4.js
seek5.js
seek6.js
seek7.js
seek8.js
seek9.js
seekLies.sjs
seek_with_sound.ogg^headers^
short-video.ogv
short-video.ogv^headers^
small-shot-mp3.mp4
small-shot-mp3.mp4^headers^
small-shot.m4a
small-shot.mp3
small-shot.mp3^headers^
small-shot.ogg
small-shot.ogg^headers^
sound.ogg
sound.ogg^headers^
spacestorm-1000Hz-100ms.ogg
spacestorm-1000Hz-100ms.ogg^headers^
split.webm
split.webm^headers^
street.mp4
street.mp4^headers^
test-1-mono.opus
test-1-mono.opus^headers^
test-2-stereo.opus
test-2-stereo.opus^headers^
test-3-LCR.opus
test-3-LCR.opus^headers^
test-4-quad.opus
test-4-quad.opus^headers^
test-5-5.0.opus
test-5-5.0.opus^headers^
test-6-5.1.opus
test-6-5.1.opus^headers^
test-7-6.1.opus
test-7-6.1.opus^headers^
test-8-7.1.opus
test-8-7.1.opus^headers^
variable-channel.ogg
variable-channel.ogg^headers^
variable-channel.opus
variable-channel.opus^headers^
variable-preskip.opus
variable-preskip.opus^headers^
variable-samplerate.ogg
variable-samplerate.ogg^headers^
variable-samplerate.opus
variable-samplerate.opus^headers^
vbr-head.mp3
vbr-head.mp3^headers^
vbr.mp3
vbr.mp3^headers^
video-overhang.ogg
video-overhang.ogg^headers^
vp9.webm
vp9.webm^headers^
vp9cake.webm
vp9cake.webm^headers^
wave_metadata.wav
wave_metadata.wav^headers^
wave_metadata_bad_len.wav
wave_metadata_bad_len.wav^headers^
wave_metadata_bad_no_null.wav
wave_metadata_bad_no_null.wav^headers^
wave_metadata_bad_utf8.wav
wave_metadata_bad_utf8.wav^headers^
wave_metadata_unknown_tag.wav
wave_metadata_unknown_tag.wav^headers^
wave_metadata_utf8.wav
wave_metadata_utf8.wav^headers^
wavedata_s16.wav
wavedata_s16.wav^headers^
wavedata_u8.wav
wavedata_u8.wav^headers^
[test_access_control.html]
[test_aspectratio_mp4.html]
[test_audio1.html]
[test_audio2.html]
[test_autoplay.html]
[test_bug448534.html]
skip-if = buildapp == 'b2g' # b2g(Timed out, bug 894922? Bug 902677 is for the timing out of a lot of media tests) b2g-debug(Timed out, bug 894922? Bug 902677 is for the timing out of a lot of media tests) b2g-desktop(Timed out, bug 894922? Bug 902677 is for the timing out of a lot of media tests)
[test_bug463162.xhtml]
[test_bug495145.html]
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug)) # b2g-debug(timed out) b2g-desktop(timed out)
[test_bug495300.html]
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug))
[test_bug654550.html]
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug)) # b2g-debug(timed out) b2g-desktop(timed out)
[test_bug686942.html]
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug)) # b2g-debug(timed out) b2g-desktop(timed out)
# [test_bug726904.html] # disabled - See bug 754860
[test_bug874897.html]
[test_bug883173.html]
[test_bug895305.html]
[test_bug895091.html]
[test_bug919265.html]
[test_bug957847.html]
[test_chaining.html]
skip-if = buildapp == 'b2g' # b2g(timed out) b2g-debug(timed out) b2g-desktop(timed out)
[test_contentDuration1.html]
[test_contentDuration2.html]
[test_contentDuration3.html]
[test_contentDuration4.html]
[test_contentDuration5.html]
[test_contentDuration6.html]
[test_contentDuration7.html]
[test_can_play_type.html]
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug)) # b2g-debug(timed out) b2g-desktop(timed out)
[test_can_play_type_mpeg.html]
skip-if = buildapp == 'b2g' # b2g(7 failures out of 27) b2g-debug(7 failures out of 27) b2g-desktop(7 failures out of 27)
[test_can_play_type_ogg.html]
skip-if = buildapp == 'b2g' || e10s
[test_can_play_type_no_ogg.html]
[test_closing_connections.html]
[test_constants.html]
[test_controls.html]
[test_currentTime.html]
[test_decode_error.html]
[test_defaultMuted.html]
[test_delay_load.html]
skip-if = buildapp == 'b2g' # b2g(6 failures) b2g-debug(6 failures) b2g-desktop(6 failures)
[test_error_on_404.html]
skip-if = buildapp == 'b2g' && (toolkit != 'gonk' || debug)) # b2g-debug(timed out) b2g-desktop(timed out)
[test_fastSeek.html]
[test_info_leak.html]
skip-if = buildapp == 'b2g' # b2g(2 failures) b2g-debug(2 failures) b2g-desktop(2 failures)
[test_invalid_reject.html]
[test_load.html]
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug)) # b2g-debug(Timed out after gizmo.mp4) b2g-desktop(Timed out after gizmo.mp4)
[test_load_candidates.html]
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug)) # b2g-debug(timed out) b2g-desktop(timed out)
[test_load_same_resource.html]
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug))
[test_load_source.html]
[test_loop.html]
[test_metadata.html]
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug))
[test_no_load_event.html]
[test_networkState.html]
[test_new_audio.html]
[test_paused.html]
[test_paused_after_ended.html]
[test_play_events.html]
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug)) # b2g-debug(Last event should be canplaythrough for gizmo.mp4 - got playing, expected canplaythrough) b2g-desktop(Last event should be canplaythrough for gizmo.mp4 - got playing, expected canplaythrough)
[test_play_events_2.html]
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug)) # b2g-debug(Last event should be canplaythrough for gizmo.mp4 - got playing, expected canplaythrough) b2g-desktop(Last event should be canplaythrough for gizmo.mp4 - got playing, expected canplaythrough)
[test_playback_errors.html]
[test_seekable1.html]
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug))
[test_preload_actions.html]
[test_preload_attribute.html]
[test_progress.html]
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug)) # b2g-debug(bug 901716 - timeouts) b2g-desktop(bug 901716 - timeouts)
[test_reactivate.html]
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug)) # b2g-debug(timed out in small-shot.mp3) b2g-desktop(timed out in small-shot.mp3)
[test_readyState.html]
[test_referer.html]
[test_reset_events_async.html]
[test_replay_metadata.html]
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug))
[test_seek2.html]
[test_seek_out_of_range.html]
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug))
[test_seekable2.html]
[test_seekable3.html]
skip-if = buildapp == 'b2g' # b2g(timed out) b2g-debug(timed out) b2g-desktop(timed out)
[test_source.html]
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug))
[test_source_write.html]
[test_source_null.html]
[test_standalone.html]
[test_volume.html]
[test_video_to_canvas.html]
[test_mediarecorder_creation.html]
[test_mediarecorder_creation_fail.html]
[test_mediarecorder_avoid_recursion.html]
[test_mediarecorder_record_timeslice.html]
[test_mediarecorder_record_audiocontext.html]
[test_mediarecorder_record_audiocontext_mlk.html]
[test_mediarecorder_record_4ch_audiocontext.html]
skip-if = (toolkit == 'gonk' && !debug)
[test_mediarecorder_record_stopms.html]
[test_mediarecorder_record_nosrc.html]
[test_mozHasAudio.html]
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug))
[test_source_media.html]
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug))
[test_autoplay_contentEditable.html]
skip-if = buildapp == 'b2g' # b2g(bug 899074 - timeouts) b2g-debug(bug 899074 - timeouts) b2g-desktop(bug 899074 - timeouts)
[test_decoder_disable.html]
[test_mediarecorder_record_no_timeslice.html]
[test_mediarecorder_reload_crash.html]
[test_mediarecorder_record_immediate_stop.html]
[test_mediarecorder_record_session.html]
[test_mediarecorder_record_startstopstart.html]
[test_mediarecorder_getencodeddata.html]
[test_mediarecorder_unsupported_src.html]
[test_mediarecorder_record_gum_video_timeslice.html]
skip-if = buildapp == 'b2g' || (toolkit == 'android') # mimetype check, bug 969289
[test_playback.html]
skip-if = buildapp == 'b2g' # b2g(Test timed out, bug 668973?) b2g-debug(Test timed out, bug 668973?) b2g-desktop(Test timed out, bug 668973?)
[test_seekLies.html]
[test_media_sniffer.html]
[test_streams_srcObject.html]
[test_reset_src.html]
[test_streams_autoplay.html]
[test_streams_element_capture.html]
[test_streams_element_capture_reset.html]
skip-if = buildapp == 'b2g' # b2g(bug 901102) b2g-debug(bug 901102) b2g-desktop(bug 901102)
[test_streams_element_capture_createObjectURL.html]
[test_streams_element_capture_playback.html]
[test_streams_gc.html]
skip-if = buildapp == 'b2g' # b2g(Value being assigned to HTMLMediaElement.currentTime is not a finite floating-point value) b2g-debug(Value being assigned to HTMLMediaElement.currentTime is not a finite floating-point value) b2g-desktop(Value being assigned to HTMLMediaElement.currentTime is not a finite floating-point value)
[test_streams_tracks.html]
[test_trackelementevent.html]
[test_texttrack.html]
[test_texttrackcue.html]
[test_trackevent.html]
[test_texttrackregion.html]
[test_texttracklist.html]
[test_timeupdate_small_files.html]
skip-if = os == "linux" # Intermittent failures, bug 760770
[test_unseekable.html]
skip-if = buildapp == 'b2g'
[test_VideoPlaybackQuality.html]
[test_VideoPlaybackQuality_disabled.html]
[test_webvtt_disabled.html]
# [test_audioDocumentTitle.html] # disabled - See bug 475110
# [test_error_in_video_document.html] # disabled - See bug 608634
# [test_mixed_principals.html] # disabled - See bug 567954 and 574586
# [test_playback_rate_playpause.html] # disabled - See bug 897108
# [test_played.html] # disabled - See bug 751539
# [test_preload_suspend.html] # disabled - See bug 493692
# [test_resume.html] # disabled - No bug :-(
# [test_videoDocumentTitle.html] # disabled - See bug 492821
# [test_playback_rate.html] # disabled - See bug 921622
# Disabled since it causes random memory corruption, bug 921622, so
# the best-case scenario is that it results in random crashes while it
# runs, like bug 918417, bug 920827, bug 923996, bug 928225, bug 929521
# bug 930982, bug 932193. Worst-case but quite likely, it causes random
# crashes and failures in other tests which run after it. Don't even think
# about reenabling it on any platform unless you *know* that you have fixed
# that. Then don't think about reenabling it on Windows until you know that
# you have fixed the timeouts of bug 832768, bug 814533, bug 840742
[test_play_twice.html]
skip-if = appname == "seamonkey" # See bug 598252
[test_buffered.html]
skip-if = toolkit == 'android' || os == "win" || (toolkit == 'gonk' && !debug) # See bug 832768 and 864682, b2g(assertion failures)
[test_bug465498.html]
skip-if = os == "win" || (toolkit == 'gonk' && !debug) # See bug 832768 and 864682
[test_bug493187.html]
skip-if = os == "win" || (buildapp=='b2g'&&debug) || (toolkit == 'gonk' && !debug) # See bug 707777, #b2g-emulator-debug - process crash
[test_media_selection.html]
skip-if = os == "win" || (toolkit == 'gonk' && !debug) # See bug 897843, b2g(timed out)
[test_seek.html]
skip-if = toolkit == 'android' || os == "win" || (toolkit == 'gonk' && !debug) # See bug 832678, 795271, and 857424 # android(bug 845162) androidx86(bug 845162)
# The tests below contain backend-specific tests. Write backend independent
# tests rather than adding to this list.
[test_can_play_type_webm.html]
run-if = webm
[test_can_play_type_no_webm.html]
skip-if = webm
[test_can_play_type_wave.html]
run-if = wave
[test_can_play_type_no_wave.html]
skip-if = wave
[test_fragment_noplay.html]
run-if = wave
[test_fragment_play.html]
run-if = wave