Difference between revisions of "Platform/2023PlannedWork"
From MozillaWiki
< Platform
(more from 115-119) |
(more from 120, 121, and downgrade warning) |
||
Line 3: | Line 3: | ||
=Gecko Planned Work For 2023= | =Gecko Planned Work For 2023= | ||
− | {{ | + | {{|This page in-progress and is .}} |
Related Links: | Related Links: | ||
Line 19: | Line 19: | ||
* <code>dirname</code> attribute on <code>input</code> & <code>textarea</code> ([https://bugzil.la/675943 675943]) | * <code>dirname</code> attribute on <code>input</code> & <code>textarea</code> ([https://bugzil.la/675943 675943]) | ||
* <code>inert</code> attribute ([https://bugzil.la/1764263 1764263]) | * <code>inert</code> attribute ([https://bugzil.la/1764263 1764263]) | ||
+ | |||
* <code>media</code> attribute on <code><source></code> elements within <code><audio></code>, <code><video></code>, <code><picture></code> ([https://bugzil.la/1836128 1836128]) | * <code>media</code> attribute on <code><source></code> elements within <code><audio></code>, <code><video></code>, <code><picture></code> ([https://bugzil.la/1836128 1836128]) | ||
* <code>rel=modulepreload</code> ([https://bugzil.la/1425310 1425310] | * <code>rel=modulepreload</code> ([https://bugzil.la/1425310 1425310] | ||
* <code><search></code> element ([https://bugzil.la/1824121 1824121]) | * <code><search></code> element ([https://bugzil.la/1824121 1824121]) | ||
* <code>translate</code> attribute ([https://bugzil.la/1418449 1418449]) | * <code>translate</code> attribute ([https://bugzil.la/1418449 1418449]) | ||
− | + | ||
=== ARIA === | === ARIA === | ||
* <code>image</code> role alias for <code>img</code> ([https://bugzil.la/1829269 1829269]) | * <code>image</code> role alias for <code>img</code> ([https://bugzil.la/1829269 1829269]) | ||
− | |||
== CSS == | == CSS == | ||
Line 42: | Line 42: | ||
* <code>font-size-adjust:from-font</code> ([https://bugzil.la/1708240 1708240]) | * <code>font-size-adjust:from-font</code> ([https://bugzil.la/1708240 1708240]) | ||
* <code>font-synthesis-position</code> property and <code>font-synthesis:position</code> [https://bugzil.la/1849010 1849010]) | * <code>font-synthesis-position</code> property and <code>font-synthesis:position</code> [https://bugzil.la/1849010 1849010]) | ||
− | * <code>:has</code> pseudo-class ([https://bugzil.la/418039 meta 418039]) | + | * <code>:has</code> pseudo-class ([https://bugzil.la/418039 meta 418039]) |
* <code>@import</code> <code>supports()</code> function <code>supports-conditions</code> feature ([https://bugzil.la/1830779 1830779]) | * <code>@import</code> <code>supports()</code> function <code>supports-conditions</code> feature ([https://bugzil.la/1830779 1830779]) | ||
* <code>:lang()</code> pseudo-class support string-matching semantics (including * wildcards) for matching language codes and comma-separated lists of languages ([https://bugzil.la/1121792 1121792]) | * <code>:lang()</code> pseudo-class support string-matching semantics (including * wildcards) for matching language codes and comma-separated lists of languages ([https://bugzil.la/1121792 1121792]) | ||
Line 48: | Line 48: | ||
* <code>lh</code> and <code>rlh</code> line height units ([https://bugzil.la/1310170 1310170]) | * <code>lh</code> and <code>rlh</code> line height units ([https://bugzil.la/1310170 1310170]) | ||
* math functions: <code>abs()</code>, <code>sign()</code>, <code>round()</code>, <code>mod()</code>, <code>rem()</code>, <code>pow()</code>, <code>sqrt()</code>, <code>hypot()</code>, <code>log()</code>, <code>exp()</code> ([https://bugzil.la/1814589 1814589]) | * math functions: <code>abs()</code>, <code>sign()</code>, <code>round()</code>, <code>mod()</code>, <code>rem()</code>, <code>pow()</code>, <code>sqrt()</code>, <code>hypot()</code>, <code>log()</code>, <code>exp()</code> ([https://bugzil.la/1814589 1814589]) | ||
− | * <code>math-style</code>, <code>math-depth</code> properties, and <code>font-size:math<code> ([https://bugzil.la/1845516 1845516]). | + | * <code>math-style</code>, <code>math-depth</code> properties, and <code>font-size:math<code> ([https://bugzil.la/1845516 1845516]). |
* Nesting Module ([https://bugzil.la/id=1648037 1648037]) | * Nesting Module ([https://bugzil.la/id=1648037 1648037]) | ||
* <code>:nth-child</code> selector supports children based on An+B rule that also matches a defined selector. See ([https://bugzil.la/1808229 1808229]) | * <code>:nth-child</code> selector supports children based on An+B rule that also matches a defined selector. See ([https://bugzil.la/1808229 1808229]) | ||
Line 55: | Line 55: | ||
* <code>scripting</code> media feature support ([https://bugzil.la/1166581 1166581]) | * <code>scripting</code> media feature support ([https://bugzil.la/1166581 1166581]) | ||
* system-color values <code>Mark</code>, <code>MarkText</code>, and <code>ButtonBorder</code> ([https://bugzil.la/1638052 1638052]) | * system-color values <code>Mark</code>, <code>MarkText</code>, and <code>ButtonBorder</code> ([https://bugzil.la/1638052 1638052]) | ||
+ | |||
+ | |||
* <code>transform-box</code> values <code>content-box</code>, <code>stroke-box</code> ([https://bugzil.la/1819464 1819464]) | * <code>transform-box</code> values <code>content-box</code>, <code>stroke-box</code> ([https://bugzil.la/1819464 1819464]) | ||
* <code>-webkit-text-security</code> property ([https://bugzil.la/1826629 1826629]) | * <code>-webkit-text-security</code> property ([https://bugzil.la/1826629 1826629]) | ||
Line 64: | Line 66: | ||
* <code><length></code> CSS Level 3 data types for all SVG attributes that accept a length value ([https://bugzil.la/1287054 1287054]) | * <code><length></code> CSS Level 3 data types for all SVG attributes that accept a length value ([https://bugzil.la/1287054 1287054]) | ||
* <code><script></code> element with <code>type="module"</code>, <code>defer</code>, and <code>async</code> attributes in inline SVGs ([https://bugzil.la/1839954 1839954]) | * <code><script></code> element with <code>type="module"</code>, <code>defer</code>, and <code>async</code> attributes in inline SVGs ([https://bugzil.la/1839954 1839954]) | ||
− | |||
== JS == | == JS == | ||
− | |||
* <code>Array.fromAsync()</code> ([https://bugzil.la/1795816 1795816]) | * <code>Array.fromAsync()</code> ([https://bugzil.la/1795816 1795816]) | ||
* <code>Array.toReversed() .toSorted() .toSpliced() .with(), TypedArrays.toReversed() .toSorted() .with()</code> ([https://bugzil.la/1811057 1811057]) | * <code>Array.toReversed() .toSorted() .toSpliced() .with(), TypedArrays.toReversed() .toSorted() .with()</code> ([https://bugzil.la/1811057 1811057]) | ||
* <code>CanvasRenderingContext2D.reset()</code> ([https://bugzil.la/1709347 1709347]) | * <code>CanvasRenderingContext2D.reset()</code> ([https://bugzil.la/1709347 1709347]) | ||
* Compression Streams API, including compress and decompress data using the <code>gzip</code> and <code>deflate</code> formats ([https://bugzil.la/1823619 1823619]) | * Compression Streams API, including compress and decompress data using the <code>gzip</code> and <code>deflate</code> formats ([https://bugzil.la/1823619 1823619]) | ||
− | * <code>Date.parse()</code> additional date formats ([https://bugzil.la/1557650 1557650], [https://bugzil.la/449921 449921], [https://bugzil.la/1852422 1852422]) | + | * <code>Date.parse()</code> additional date formats ([https://bugzil.la/1557650 1557650], [https://bugzil.la/449921 449921], [https://bugzil.la/1852422 1852422]) |
* <code>Intl.NumberFormat</code> constructor options <code>roundingIncrement</code>, <code>roundingMode</code>, <code>roundingPriority</code>, <code>trailingZeroDisplay</code>, <code>useGrouping</code>, and methods <code>formatRange()</code> & <code>formatRangeToParts()</code> ([https://bugzil.la/1795756 1795756]) | * <code>Intl.NumberFormat</code> constructor options <code>roundingIncrement</code>, <code>roundingMode</code>, <code>roundingPriority</code>, <code>trailingZeroDisplay</code>, <code>useGrouping</code>, and methods <code>formatRange()</code> & <code>formatRangeToParts()</code> ([https://bugzil.la/1795756 1795756]) | ||
* <code>Intl.PluralRules</code> constructor options <code>roundingIncrement</code>, <code>roundingMode</code>, <code>roundingPriority</code>, <code>trailingZeroDisplay</code>, and the <code>selectRange()</code> method ([https://bugzil.la/1795756 1795756]) | * <code>Intl.PluralRules</code> constructor options <code>roundingIncrement</code>, <code>roundingMode</code>, <code>roundingPriority</code>, <code>trailingZeroDisplay</code>, and the <code>selectRange()</code> method ([https://bugzil.la/1795756 1795756]) | ||
Line 78: | Line 78: | ||
* <code>Object.groupBy()</code> ([https://bugzil.la/1792650 1792650]) | * <code>Object.groupBy()</code> ([https://bugzil.la/1792650 1792650]) | ||
* <code>OffscreenCanvasRenderingContext2D.reset()</code> ([https://bugzil.la/1709347 1709347]) | * <code>OffscreenCanvasRenderingContext2D.reset()</code> ([https://bugzil.la/1709347 1709347]) | ||
+ | |||
* <code>String.prototype.isWellFormed()</code> and <code>String.prototype.toWellFormed()</code> ([https://bugzil.la/1850755 1850755]) | * <code>String.prototype.isWellFormed()</code> and <code>String.prototype.toWellFormed()</code> ([https://bugzil.la/1850755 1850755]) | ||
* Workers support loading ECMAScript modules. ([https://bugzil.la/1812591 1812591]) | * Workers support loading ECMAScript modules. ([https://bugzil.la/1812591 1812591]) | ||
* Worklets support <code>import</code> to statically import ECMAscript/JavaScript modules ([https://bugzil.la/1812591 1812591]) | * Worklets support <code>import</code> to statically import ECMAscript/JavaScript modules ([https://bugzil.la/1812591 1812591]) | ||
− | |||
== APIs == | == APIs == | ||
Line 93: | Line 93: | ||
* Compression Streams ([https://bugzil.la/1823619 1823619]) | * Compression Streams ([https://bugzil.la/1823619 1823619]) | ||
* <code>MediaDevices.selectAudioOutput()</code>, <code>MediaDevices.enumerateDevices()</code>, <code>HTMLMediaElement.setSinkId()</code>, <code>HTMLMediaElement.sinkId</code>, and <code>Permissions-Policy: speaker-selection</code> ([https://bugzil.la/1498512 1498512]) | * <code>MediaDevices.selectAudioOutput()</code>, <code>MediaDevices.enumerateDevices()</code>, <code>HTMLMediaElement.setSinkId()</code>, <code>HTMLMediaElement.sinkId</code>, and <code>Permissions-Policy: speaker-selection</code> ([https://bugzil.la/1498512 1498512]) | ||
+ | |||
* Opaque Response Blocking (<abbr>ORB</abbr>, [https://bugzil.la/1532642 1532642]) | * Opaque Response Blocking (<abbr>ORB</abbr>, [https://bugzil.la/1532642 1532642]) | ||
+ | |||
* <code>PublicKeyCredential</code>: <code>parseCreationOptionsFromJSON()</code>, <code>parseRequestOptionsFromJSON()</code>, <code>toJSON() methods</code> ([https://bugzil.la/1823782 1823782]) | * <code>PublicKeyCredential</code>: <code>parseCreationOptionsFromJSON()</code>, <code>parseRequestOptionsFromJSON()</code>, <code>toJSON() methods</code> ([https://bugzil.la/1823782 1823782]) | ||
* <code>ReadableStream.from()</code> [https://bugzil.la/1772772 1772772] | * <code>ReadableStream.from()</code> [https://bugzil.la/1772772 1772772] | ||
Line 103: | Line 105: | ||
* <code>URL.canParse()</code> ([https://bugzil.la/1823354 1823354]) | * <code>URL.canParse()</code> ([https://bugzil.la/1823354 1823354]) | ||
* <code>URLSearchParams.has()</code> and <code>URLSearchParams.delete()</code> methods support optional <code>value</code> argument ([https://bugzil.la/1831587 1831587]) | * <code>URLSearchParams.has()</code> and <code>URLSearchParams.delete()</code> methods support optional <code>value</code> argument ([https://bugzil.la/1831587 1831587]) | ||
+ | |||
* WebTransport API ([https://bugzil.la/1692754 1692754], [https://bugzil.la/1818754 1818754], [https://bugzil.la/1791835 1791835]) | * WebTransport API ([https://bugzil.la/1692754 1692754], [https://bugzil.la/1818754 1818754], [https://bugzil.la/1791835 1791835]) | ||
+ | |||
* <code>Window.print()</code> print dialog on Android, to print current document ([https://bugzil.la/1809922 1809922]) | * <code>Window.print()</code> print dialog on Android, to print current document ([https://bugzil.la/1809922 1809922]) | ||
− | |||
=== DOM === | === DOM === | ||
− | |||
* <code>CSSContainerRule</code> ([https://bugzil.la/1787173 1787173]) | * <code>CSSContainerRule</code> ([https://bugzil.la/1787173 1787173]) | ||
+ | |||
* <code>scrollend</code> events ([https://bugzil.la/1797013 1797013], [https://bugzil.la/1803435 1803435]) | * <code>scrollend</code> events ([https://bugzil.la/1797013 1797013], [https://bugzil.la/1803435 1803435]) | ||
* <code>TextMetrics.fontBoundingBox*</code> ([https://bugzil.la/1102584 1102584]) | * <code>TextMetrics.fontBoundingBox*</code> ([https://bugzil.la/1102584 1102584]) | ||
* <code>TextMetrics.fontBoundingBoxAscent</code> and <code>TextMetrics.fontBoundingBoxDescent</code> ([https://bugzil.la/1801198 1801198]) | * <code>TextMetrics.fontBoundingBoxAscent</code> and <code>TextMetrics.fontBoundingBoxDescent</code> ([https://bugzil.la/1801198 1801198]) | ||
− | |||
=== WebRTC === | === WebRTC === | ||
− | |||
* <code>RTCRtpSender.getCapabilities()</code> ([https://bugzil.la/1531460 1531460]) | * <code>RTCRtpSender.getCapabilities()</code> ([https://bugzil.la/1531460 1531460]) | ||
* <code>RTCRtpReceiver.getCapabilities()</code> ([https://bugzil.la/1531461 1531461]) | * <code>RTCRtpReceiver.getCapabilities()</code> ([https://bugzil.la/1531461 1531461]) | ||
Line 125: | Line 126: | ||
* <code>RTCPeerConnectionStats</code> ([https://bugzil.la/1531087 1265827]) | * <code>RTCPeerConnectionStats</code> ([https://bugzil.la/1531087 1265827]) | ||
* <code>RTCRtpReceiver.jitterBufferTarget</code> ([https://bugzil.la/1592988 1592988]) | * <code>RTCRtpReceiver.jitterBufferTarget</code> ([https://bugzil.la/1592988 1592988]) | ||
− | |||
== HTTP == | == HTTP == | ||
Line 133: | Line 133: | ||
* <code>Permissions-Policy</code> header <code>publickey-credentials-get</code> directive ([https://bugzil.la/1460986 1460986]) | * <code>Permissions-Policy</code> header <code>publickey-credentials-get</code> directive ([https://bugzil.la/1460986 1460986]) | ||
* <code>Range</code> header is a CORS-safelisted request header when the value is a single byte range ([https://bugzil.la/1733981 1733981]) | * <code>Range</code> header is a CORS-safelisted request header when the value is a single byte range ([https://bugzil.la/1733981 1733981]) | ||
+ | |||
* <code>Sec-Purpose</code> HTTP header included in requests to Prefetch resources ([https://bugzil.la/1836328 1836328]) | * <code>Sec-Purpose</code> HTTP header included in requests to Prefetch resources ([https://bugzil.la/1836328 1836328]) | ||
− | |||
== Media == | == Media == | ||
− | |||
* AV1 video codec support on Android with hardware accelerated decoding if available ([https://bugzil.la/1672276 1672276]) | * AV1 video codec support on Android with hardware accelerated decoding if available ([https://bugzil.la/1672276 1672276]) | ||
− | |||
== See Also == | == See Also == |
Latest revision as of 03:54, 19 June 2024
This article is a stub. You can help MozillaWiki by expanding it.
Gecko Planned Work For 2023
Note: This page may have in-progress sections and is not fully complete.
Related Links:
- Firefox Release Calendar (future)
- Firefox release notes for developers (past)
- Pocket Guide: Shipping Firefox
These are areas of work planned for Gecko in 2023 for the Web Platform.
For current web platform documentation of these areas, see the subsections at:
HTML
-
autocapitalize
attribute (1692007) -
dirname
attribute oninput
&textarea
(675943) -
inert
attribute (1764263) -
<iframe>
loading
attribute andHTMLIFrameElement.loading
(1622090) -
media
attribute on<source>
elements within<audio>
,<video>
,<picture>
(1836128) -
rel=modulepreload
(1425310 -
<search>
element (1824121) -
translate
attribute (1418449)
ARIA
-
image
role alias forimg
(1829269)
CSS
-
animation-composition
property (1293490, 1823862) -
attr()
function fallback value (1448248) -
calc()
supportinfinity
andNaN
constants (1830759) - Color functions:
color()
,lab()
andlch()
,oklab()
andoklch()
(meta 1293490) -
color-gamut
(1422237) - Constructable Stylesheets (meta 1520690)
- Container Queries (meta 1744221)
-
contain-intrinsic-size: auto none
(1835813) -
content
property support all image types including<gradient>
,image-set()
,url()
. (1684958) -
content-visibility
property (meta 1660384) - CSS Nesting module and
&
nesting selector (1835066, 1840781) -
font-size-adjust:from-font
(1708240) -
font-synthesis-position
property andfont-synthesis:position
1849010) -
:has
pseudo-class selector (meta 418039) -
@import
supports()
functionsupports-conditions
feature (1830779) -
:lang()
pseudo-class support string-matching semantics (including * wildcards) for matching language codes and comma-separated lists of languages (1121792) -
light-dark()
function (1856999) -
lh
andrlh
line height units (1310170) - math functions:
abs()
,sign()
,round()
,mod()
,rem()
,pow()
,sqrt()
,hypot()
,log()
,exp()
(1814589) -
math-style
,math-depth
properties, andfont-size:math
(1845516). - Nesting Module (1648037)
-
:nth-child
selector supports children based on An+B rule that also matches a defined selector. See (1808229) -
offset-path
property syntax updates (1598156, 1837305) -
@page
named pages withpage
property (1787947) -
scripting
media feature support (1166581) - system-color values
Mark
,MarkText
, andButtonBorder
(1638052) -
text-indent
valueseach-line
andhanging
, and multiple values (784648) -
text-wrap<code> values <code>balance
andstable
(1731541) -
transform-box
valuescontent-box
,stroke-box
(1819464) -
-webkit-text-security
property (1826629)
SVG
-
context-stroke
andcontext-fill
values inside<marker>
(752638) -
crossorigin
attribute support in<image>
and<feImage>
(1240357) -
q
unit (1836995) -
<length>
CSS Level 3 data types for all SVG attributes that accept a length value (1287054) -
<script>
element withtype="module"
,defer
, andasync
attributes in inline SVGs (1839954)
JS
-
Array.fromAsync()
(1795816) -
Array.toReversed() .toSorted() .toSpliced() .with(), TypedArrays.toReversed() .toSorted() .with()
(1811057) -
CanvasRenderingContext2D.reset()
(1709347) - Compression Streams API, including compress and decompress data using the
gzip
anddeflate
formats (1823619) -
Date.parse()
additional date formats (1557650, 449921, 1852422, 1858851, 1863489, 1863125, 1617562,) -
Intl.NumberFormat
constructor optionsroundingIncrement
,roundingMode
,roundingPriority
,trailingZeroDisplay
,useGrouping
, and methodsformatRange()
&formatRangeToParts()
(1795756) -
Intl.PluralRules
constructor optionsroundingIncrement
,roundingMode
,roundingPriority
,trailingZeroDisplay
, and theselectRange()
method (1795756) -
Map.groupBy()
(1792650) -
Object.groupBy()
(1792650) -
OffscreenCanvasRenderingContext2D.reset()
(1709347) -
Promise.withResolvers()
static method,resolve
andreject
callback functions in same scope as returnedPromise
(1845586) -
String.prototype.isWellFormed()
andString.prototype.toWellFormed()
(1850755) - Workers support loading ECMAScript modules. (1812591)
- Worklets support
import
to statically import ECMAscript/JavaScript modules (1812591)
APIs
-
AuthenticatorAttestationResponse
:getAuthenticatorData()
,getPublicKeyAlgorithm()
,getPublicKey()
methods (1816519, 1816520) -
CanvasRenderingContext2D.getContextAttributes()
(1517786) - Credential Properties Extension (
credProps
) of the Web Authentication API (1844437) -
CSSImportRule.supportsText
support getting anysupports()
conditions specified using@import
(1829590) -
getAutoplayPolicy()
(1773551) -
getDirectory()
for OPFS with File System Access API (1785123) -
roundRect()
(1756175) - Compression Streams (1823619)
-
MediaDevices.selectAudioOutput()
,MediaDevices.enumerateDevices()
,HTMLMediaElement.setSinkId()
,HTMLMediaElement.sinkId
, andPermissions-Policy: speaker-selection
(1498512) -
Navigator.userActivation
property andUserActivation
interface (1791079) - Opaque Response Blocking (ORB, 1532642)
-
PublicKeyCredential.authenticatorAttachment
property (1810851) -
PublicKeyCredential
:parseCreationOptionsFromJSON()
,parseRequestOptionsFromJSON()
,toJSON() methods
(1823782) -
ReadableStream.from()
1772772 -
Response: json()
static method (1758943) -
RTCRtpScriptTransform
,RTCRtpScriptTransformer
,RTCRtpSender.transform
,RTCRtpReceiver.transform
,RTCEncodedVideoFrame
,RTCEncodedAudioFrame
, and theRTCTransformEvent
and workerrtctransform
event (1631263) -
RTCRtpTransceiver.currentDirection
andRTCRtpTransceiver.direction
properties support"stopped"
value (1568296) -
sendOrder
property inside options toWebTransport.createBidirectionalStream()
WebTransport.createUnidirectionalStream()
(1816925) -
TextMetrics.emHeightDescent
andTextMetrics.emHeightAscent
properties (1841692) -
URL.canParse()
(1823354) -
URLSearchParams.has()
andURLSearchParams.delete()
methods support optionalvalue
argument (1831587) - Web Authentication API
minPinLength
(1844450) - WebTransport API (1692754, 1818754, 1791835)
-
WebTransportSendStream.sendOrder
property (1853444) -
Window.print()
print dialog on Android, to print current document (1809922)
DOM
-
CSSContainerRule
(1787173) -
HTMLInputElement.showPicker()
support<input type="week">
and<input type="month">
(1853797) -
scrollend
events (1797013, 1803435) -
TextMetrics.fontBoundingBox*
(1102584) -
TextMetrics.fontBoundingBoxAscent
andTextMetrics.fontBoundingBoxDescent
(1801198)
WebRTC
-
RTCRtpSender.getCapabilities()
(1531460) -
RTCRtpReceiver.getCapabilities()
(1531461) -
RTCRtpSender.setStreams()
(1510802) -
RTCSctpTransport
,RTCPeerConnection.sctp
(1278299) -
RTCMediaSourceStats
(1804678) -
RTCPeerConnection.connectionState
(1265827) -
RTCPeerConnectionStats
(1265827) -
RTCRtpReceiver.jitterBufferTarget
(1592988)
HTTP
-
103 Early Hints
response status code (1858712) - CSP
'unsafe-hashes'
value for source directives (1343950), specifying external JavaScript files to be whitelisted using hashes (1409200) -
Cross-Origin-Embedder-Policy
HTTP response headercredentialless
directive (1851467) -
Permissions-Policy
headerpublickey-credentials-get
directive (1460986) -
Range
header is a CORS-safelisted request header when the value is a single byte range (1733981) -
Sec-GPC
HTTP request header along withNavigator.globalPrivacyControl
andWorkerNavigator.globalPrivacyControl
properties (1856029) -
Sec-Purpose
HTTP header included in requests to Prefetch resources (1836328)
Media
- AV1 video codec support on Android with hardware accelerated decoding if available (1672276)