diff --git a/.github/labeler.yml b/.github/labeler.yml index a32ae1f91bd40e..a0ceeef7790362 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -36,6 +36,10 @@ data:mathml: - changed-files: - any-glob-to-any-file: - "mathml/**" +data:media: + - changed-files: + - any-glob-to-any-file: + - "media/**" data:svg: - changed-files: - any-glob-to-any-file: diff --git a/.github/workflows/system-file-changes.yml b/.github/workflows/system-file-changes.yml index 3f20fe7c1e88e8..88748e658fd528 100644 --- a/.github/workflows/system-file-changes.yml +++ b/.github/workflows/system-file-changes.yml @@ -13,6 +13,7 @@ on: - "!javascript/**.json" - "!manifests/**.json" - "!mathml/**.json" + - "!media/**.json" - "!svg/**.json" - "!webassembly/**.json" - "!webdriver/**.json" diff --git a/.vscode/settings.json b/.vscode/settings.json index b151045a68b7bb..40793d7836602c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -18,6 +18,7 @@ "/javascript/*.json", "/manifests/*.json", "/mathml/*.json", + "/media/*.json", "/svg/*.json", "/webdriver/*.json", "/webextensions/*.json" diff --git a/README.md b/README.md index c02b73dfcdda28..a8fc84a6ba5e94 100644 --- a/README.md +++ b/README.md @@ -187,6 +187,14 @@ Data for [MathML](https://developer.mozilla.org/en-US/docs/Web/MathML) features, - `elements` - Elements +### [`media`](./media) + +Data for [Media format](https://developer.mozilla.org/en-US/docs/Web/Media/Guides/Formats) features, including: + +- `formats/image` - Image formats + +An image format is considered supported if it displays correctly when used in an `` element's `src` attribute, or as a CSS `background-image`. + ### [`svg`](./svg) Data for [SVG](https://developer.mozilla.org/en-US/docs/Web/SVG) features, including: diff --git a/media/formats/image.json b/media/formats/image.json new file mode 100644 index 00000000000000..347033f14bfafc --- /dev/null +++ b/media/formats/image.json @@ -0,0 +1,623 @@ +{ + "media": { + "formats": { + "image": { + "avif": { + "__compat": { + "description": "AV1 Image File Format (AVIF)", + "mdn_url": "https://developer.mozilla.org/docs/Web/Media/Guides/Formats/Image_types#avif_image", + "spec_url": "https://aomediacodec.github.io/av1-avif/", + "support": { + "chrome": { + "version_added": "85" + }, + "chrome_android": "mirror", + "edge": { + "version_added": "121" + }, + "firefox": { + "version_added": "93" + }, + "firefox_android": "mirror", + "opera": "mirror", + "opera_android": "mirror", + "safari": [ + { + "version_added": "16.4" + }, + { + "version_added": "16.1", + "version_removed": "16.4", + "partial_implementation": true, + "notes": [ + "Only on macOS Ventura. Big Sur and Monterey are not supported.", + "Noise synthesis is not supported." + ] + } + ], + "safari_ios": { + "version_added": "16.0" + }, + "samsunginternet_android": "mirror" + }, + "status": { + "experimental": false, + "standard_track": true, + "deprecated": false + } + }, + "animation": { + "__compat": { + "description": "Animation support (AVIF Image sequences)", + "spec_url": "https://aomediacodec.github.io/av1-avif/#image-sequences", + "support": { + "chrome": { + "version_added": "85" + }, + "chrome_android": "mirror", + "edge": "mirror", + "firefox": { + "version_added": "113" + }, + "firefox_android": "mirror", + "opera": "mirror", + "opera_android": "mirror", + "safari": { + "version_added": "16.1" + }, + "safari_ios": "mirror", + "samsunginternet_android": "mirror" + }, + "status": { + "experimental": false, + "standard_track": true, + "deprecated": false + } + } + } + }, + "bmp": { + "__compat": { + "description": "Bitmap file (BMP)", + "mdn_url": "https://developer.mozilla.org/docs/Web/Media/Guides/Formats/Image_types#bmp_bitmap_file", + "support": { + "chrome": { + "version_added": "1" + }, + "chrome_android": "mirror", + "edge": { + "version_added": "12" + }, + "firefox": { + "version_added": "1" + }, + "firefox_android": "mirror", + "ie": { + "version_added": "1" + }, + "opera": { + "version_added": "1" + }, + "opera_android": "mirror", + "safari": { + "version_added": "1" + }, + "safari_ios": "mirror", + "samsunginternet_android": "mirror" + }, + "status": { + "experimental": false, + "standard_track": false, + "deprecated": false + } + } + }, + "gif": { + "__compat": { + "description": "Graphics Interchange Format (GIF)", + "mdn_url": "https://developer.mozilla.org/docs/Web/Media/Guides/Formats/Image_types#gif_graphics_interchange_format", + "spec_url": [ + "https://www.w3.org/Graphics/GIF/spec-gif87.txt", + "https://www.w3.org/Graphics/GIF/spec-gif89a.txt" + ], + "support": { + "chrome": { + "version_added": "1" + }, + "chrome_android": "mirror", + "edge": { + "version_added": "12" + }, + "firefox": { + "version_added": "1" + }, + "firefox_android": "mirror", + "ie": [ + { + "version_added": "2" + }, + { + "version_added": "1", + "version_removed": "2", + "partial_implementation": true, + "notes": "Animation is not supported." + } + ], + "opera": { + "version_added": "1" + }, + "opera_android": "mirror", + "safari": { + "version_added": "1" + }, + "safari_ios": "mirror", + "samsunginternet_android": "mirror" + }, + "status": { + "experimental": false, + "standard_track": true, + "deprecated": false + } + } + }, + "heif": { + "__compat": { + "description": "High Efficiency Image File Format (HEIF)", + "spec_url": "https://www.iso.org/standard/89035.html", + "support": { + "chrome": { + "version_added": false, + "impl_url": "https://crbug.com/411125808" + }, + "chrome_android": "mirror", + "edge": "mirror", + "firefox": { + "version_added": false, + "impl_url": "https://bugzil.la/1402293" + }, + "firefox_android": "mirror", + "opera": "mirror", + "opera_android": "mirror", + "safari": { + "version_added": "17" + }, + "safari_ios": "mirror", + "samsunginternet_android": "mirror" + }, + "status": { + "experimental": false, + "standard_track": true, + "deprecated": false + } + } + }, + "ico": { + "__compat": { + "description": "Microsoft Windows Icon (ICO)", + "support": { + "chrome": { + "version_added": "1" + }, + "chrome_android": "mirror", + "edge": { + "version_added": "12" + }, + "firefox": { + "version_added": "1" + }, + "firefox_android": "mirror", + "ie": "5", + "opera": { + "version_added": "1" + }, + "opera_android": "mirror", + "safari": { + "version_added": "1", + "version_removed": "2" + }, + "safari_ios": "mirror", + "samsunginternet_android": "mirror" + }, + "status": { + "experimental": false, + "standard_track": false, + "deprecated": false + } + } + }, + "jpeg": { + "__compat": { + "description": "Joint Photographic Experts Group Image (JPEG)", + "mdn_url": "https://developer.mozilla.org/docs/Web/Media/Guides/Formats/Image_types#jpeg_joint_photographic_experts_group_image", + "spec_url": "https://jpeg.org/jpeg/", + "support": { + "chrome": { + "version_added": "1" + }, + "chrome_android": "mirror", + "edge": { + "version_added": "12" + }, + "firefox": { + "version_added": "1" + }, + "firefox_android": "mirror", + "ie": { + "version_added": "1" + }, + "opera": { + "version_added": "1" + }, + "opera_android": "mirror", + "safari": { + "version_added": "1" + }, + "safari_ios": "mirror", + "samsunginternet_android": "mirror" + }, + "status": { + "experimental": false, + "standard_track": true, + "deprecated": false + } + } + }, + "jxl": { + "__compat": { + "description": "JPEG XL", + "support": { + "chrome": { + "version_added": "false", + "notes": "Implemented behind a flag in Chrome 91, but removed in Chrome 110. See [bug 40168998](https://crbug.com/40168998#comment85)." + }, + "chrome_android": "mirror", + "edge": "mirror", + "firefox": { + "version_added": "preview", + "flags": [ + { + "type": "preference", + "name": "image.jxl.enabled", + "value_to_set": "true" + } + ] + }, + "firefox_android": "mirror", + "opera": "mirror", + "opera_android": "mirror", + "safari": { + "version_added": "17", + "notes": "Animated images are not supported." + }, + "safari_ios": "mirror", + "samsunginternet_android": "mirror" + }, + "status": { + "experimental": false, + "standard_track": false, + "deprecated": false + } + } + }, + "png": { + "__compat": { + "description": "Portable Network Graphics (PNG)", + "mdn_url": "https://developer.mozilla.org/docs/Web/Media/Guides/Formats/Image_types#png_portable_network_graphics", + "spec_url": "https://w3c.github.io/png/", + "support": { + "chrome": { + "version_added": "1" + }, + "chrome_android": "mirror", + "edge": { + "version_added": "12" + }, + "firefox": { + "version_added": "1" + }, + "firefox_android": "mirror", + "ie": [ + { + "version_added": "7" + }, + { + "version_added": "4", + "version_removed": "7", + "partial_implementation": true, + "notes": [ + "Alpha transparency is not supported." + ] + } + ], + "opera": { + "version_added": "1" + }, + "opera_android": "mirror", + "safari": { + "version_added": "1" + }, + "safari_ios": "mirror", + "samsunginternet_android": "mirror" + }, + "status": { + "experimental": false, + "standard_track": true, + "deprecated": false + } + }, + "animation": { + "__compat": { + "description": "Animation support (APNG)", + "spec_url": "https://wiki.mozilla.org/APNG_Specification", + "support": { + "chrome": { + "version_added": "1" + }, + "chrome_android": "mirror", + "edge": { + "version_added": "12" + }, + "firefox": { + "version_added": "3" + }, + "firefox_android": "mirror", + "opera": "mirror", + "opera_android": "mirror", + "safari": { + "version_added": "8" + }, + "safari_ios": "mirror", + "samsunginternet_android": "mirror" + }, + "status": { + "experimental": false, + "standard_track": true, + "deprecated": false + } + } + } + }, + "svg": { + "__compat": { + "description": "Scalable Vector Graphics (SVG)", + "mdn_url": "https://developer.mozilla.org/docs/Web/Media/Guides/Formats/Image_types#svg_scalable_vector_graphics", + "spec_url": "https://svgwg.org/svg2-draft/intro.html#AboutSVG", + "support": { + "chrome": { + "version_added": "1" + }, + "chrome_android": "mirror", + "edge": [ + { + "version_added": "79" + }, + { + "version_added": "12", + "version_removed": "79", + "partial_implementation": true, + "notes": "Does not scale properly." + } + ], + "firefox": { + "version_added": "4" + }, + "firefox_android": "mirror", + "ie": { + "version_added": "9", + "partial_implementation": true, + "notes": [ + "Animation is not supported.", + "Does not scale properly." + ] + }, + "opera": "mirror", + "opera_android": "mirror", + "safari": { + "version_added": "4" + }, + "safari_ios": "mirror", + "samsunginternet_android": "mirror" + }, + "status": { + "experimental": false, + "standard_track": true, + "deprecated": false + } + } + }, + "tiff": { + "__compat": { + "description": "Tagged Image File Format (TIFF)", + "mdn_url": "https://developer.mozilla.org/docs/Web/Media/Guides/Formats/Image_types#tiff_tagged_image_file_format", + "spec_url": "https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/", + "support": { + "chrome": { + "version_added": false + }, + "chrome_android": "mirror", + "edge": "mirror", + "firefox": { + "version_added": false + }, + "firefox_android": "mirror", + "opera": "mirror", + "opera_android": "mirror", + "safari": { + "version_added": "1" + }, + "safari_ios": "mirror", + "samsunginternet_android": "mirror" + }, + "status": { + "experimental": false, + "standard_track": true, + "deprecated": false + } + } + }, + "webp": { + "__compat": { + "description": "WebP image", + "mdn_url": "https://developer.mozilla.org/docs/Web/Media/Guides/Formats/Image_types#webp_image", + "spec_url": [ + "https://developers.google.com/speed/webp/docs/riff_container", + "https://datatracker.ietf.org/doc/html/rfc6386", + "https://developers.google.com/speed/webp/docs/webp_lossless_bitstream_specification" + ], + "support": { + "chrome": [ + { + "version_added": "23" + }, + { + "version_added": "17", + "version_removed": "23", + "partial_implementation": true, + "notes": "Lossless compression and alpha transparency are not supported." + } + ], + "chrome_android": "mirror", + "edge": "mirror", + "firefox": { + "version_added": "65" + }, + "firefox_android": "mirror", + "opera": { + "version_added": "11.5" + }, + "opera_android": "mirror", + "safari": { + "version_added": "14" + }, + "safari_ios": "mirror", + "samsunginternet_android": "mirror" + }, + "status": { + "experimental": false, + "standard_track": true, + "deprecated": false + } + }, + "alpha": { + "__compat": { + "description": "Alpha transparency", + "support": { + "chrome": { + "version_added": "23" + }, + "chrome_android": "mirror", + "edge": "mirror", + "firefox": { + "version_added": "65" + }, + "firefox_android": "mirror", + "opera": { + "version_added": "12.1" + }, + "opera_android": "mirror", + "safari": { + "version_added": "14" + }, + "safari_ios": "mirror", + "samsunginternet_android": "mirror" + }, + "status": { + "experimental": false, + "standard_track": true, + "deprecated": false + } + } + }, + "animation": { + "__compat": { + "description": "Animation support", + "support": { + "chrome": { + "version_added": "32" + }, + "chrome_android": "mirror", + "edge": "mirror", + "firefox": { + "version_added": "65" + }, + "firefox_android": "mirror", + "opera": "mirror", + "opera_android": "mirror", + "safari": { + "version_added": "14" + }, + "safari_ios": "mirror", + "samsunginternet_android": "mirror" + }, + "status": { + "experimental": false, + "standard_track": true, + "deprecated": false + } + } + }, + "lossless": { + "__compat": { + "description": "Lossless compression", + "support": { + "chrome": { + "version_added": "23" + }, + "chrome_android": "mirror", + "edge": "mirror", + "firefox": { + "version_added": "65" + }, + "firefox_android": "mirror", + "opera": { + "version_added": "12.1" + }, + "opera_android": "mirror", + "safari": { + "version_added": "14" + }, + "safari_ios": "mirror", + "samsunginternet_android": "mirror" + }, + "status": { + "experimental": false, + "standard_track": true, + "deprecated": false + } + } + }, + "lossy": { + "__compat": { + "description": "Lossy compression", + "support": { + "chrome": { + "version_added": "17" + }, + "chrome_android": "mirror", + "edge": "mirror", + "firefox": { + "version_added": "65" + }, + "firefox_android": "mirror", + "opera": { + "version_added": "12.1" + }, + "opera_android": "mirror", + "safari": { + "version_added": "14" + }, + "safari_ios": "mirror", + "samsunginternet_android": "mirror" + }, + "status": { + "experimental": false, + "standard_track": true, + "deprecated": false + } + } + } + } + } + } + } +} diff --git a/schemas/compat-data-schema.md b/schemas/compat-data-schema.md index 22084f379eb5d5..bc64587e43edfb 100644 --- a/schemas/compat-data-schema.md +++ b/schemas/compat-data-schema.md @@ -22,6 +22,8 @@ Compatibility data is organized in top-level directories for each broad area cov - [mathml/](../mathml) contains data for [MathML](https://developer.mozilla.org/docs/Web/MathML) elements, attributes, and global attributes. +- [media/](../media) contains data for [Media types and formats](https://developer.mozilla.org/docs/Web/Media/Guides/Formats). + - [svg/](../svg) contains data for [SVG](https://developer.mozilla.org/en-US/docs/Web/SVG) elements, attributes, and global attributes. - [webdriver/](../webdriver) contains data for [WebDriver](https://developer.mozilla.org/en-US/docs/Web/WebDriver) commands.