Fennec/Features/imgscale

From MozillaWiki
Jump to navigation Jump to search
Please use "Edit with form" above to edit this page.

Status

High-quality image scaling
Stage Landed
Status Complete
Release target Firefox 7
Health OK
Status note Landed in Firefox 6 for NEON devices, and in Firefox 7 for non-NEON (Tegra) devices.

{{#set:Feature name=High-quality image scaling

|Feature stage=Landed |Feature status=Complete |Feature version=Firefox 7 |Feature health=OK |Feature status note=Landed in Firefox 6 for NEON devices, and in Firefox 7 for non-NEON (Tegra) devices. }}

Team

Product manager Thomas Arend
Directly Responsible Individual Jeff
Lead engineer Matt Brubeck
Security lead `
Privacy lead `
Localization lead `
Accessibility lead `
QA lead Andreea Pod [e-mail]
UX lead `
Product marketing lead `
Operations lead `
Additional members `

{{#set:Feature product manager=Thomas Arend

|Feature feature manager=Jeff |Feature lead engineer=Matt Brubeck |Feature security lead=` |Feature privacy lead=` |Feature localization lead=` |Feature accessibility lead=` |Feature qa lead=Andreea Pod [e-mail] |Feature ux lead=` |Feature product marketing lead=` |Feature operations lead=` |Feature additional members=` }}

Open issues/risks

`

Stage 1: Definition

1. Feature overview

Mobile Firefox 5 and earlier always used nearest-neighbor interpolation because its high-quality scaling algorithms weren't fast enough to keep up with fast scrolling or zooming on ARM-based mobile hardware. This feature is about switching to high-quality image scaling while balancing the impact on page rendering speed.

Firefox 6 (currently on the beta channel) now has a high-quality "bilinear" interpolation algorithm implemented in optimized assembly using NEON, a SIMD instruction set supported by most recent ARM cores except for the Nvidia Tegra core found in the most other Honeycomb tablets, and also some recent high-end phones). Images look much nicer in Firefox 6 on most current Android phones, but not on Tegra-based tablets or phones. For some details, see bug 598736.

For Tegra devices like the Xoom, we don't have fast bilinear interpolation code. On the Aurora channel for Firefox 7 we are switching to bilinear scaling anyway; this makes images look nicer but the also take longer to render when scrolling or zooming. See bug 669851 for discussion of this change.

It may also be possible to do high-quality scaling on all devices without regressing our rendering speed, either by writing separate optimized ARM code for Tegra devices, or by turning on OpenGL accelaration and doing image scaling on the GPU bug 650988.

2. Users & use cases

`

3. Dependencies

`

4. Requirements

`

Non-goals

`

Stage 2: Design

5. Functional specification

`

6. User experience design

`

Stage 3: Planning

7. Implementation plan

`

8. Reviews

Security review

`

Privacy review

`

Localization review

`

Accessibility

`

Quality Assurance review

Operations review

`

Stage 4: Development

9. Implementation

Stage 5: Release

10. Landing criteria

` {{#set:Feature open issues and risks=` |Feature overview=Mobile Firefox 5 and earlier always used nearest-neighbor interpolation because its high-quality scaling algorithms weren't fast enough to keep up with fast scrolling or zooming on ARM-based mobile hardware. This feature is about switching to high-quality image scaling while balancing the impact on page rendering speed.

Firefox 6 (currently on the beta channel) now has a high-quality "bilinear" interpolation algorithm implemented in optimized assembly using NEON, a SIMD instruction set supported by most recent ARM cores except for the Nvidia Tegra core found in the most other Honeycomb tablets, and also some recent high-end phones). Images look much nicer in Firefox 6 on most current Android phones, but not on Tegra-based tablets or phones. For some details, see bug 598736.

For Tegra devices like the Xoom, we don't have fast bilinear interpolation code. On the Aurora channel for Firefox 7 we are switching to bilinear scaling anyway; this makes images look nicer but the also take longer to render when scrolling or zooming. See bug 669851 for discussion of this change.

It may also be possible to do high-quality scaling on all devices without regressing our rendering speed, either by writing separate optimized ARM code for Tegra devices, or by turning on OpenGL accelaration and doing image scaling on the GPU bug 650988. |Feature users and use cases=` |Feature dependencies=` |Feature requirements=` |Feature non-goals=` |Feature functional spec=` |Feature ux design=` |Feature implementation plan=` |Feature security review=` |Feature privacy review=` |Feature localization review=` |Feature accessibility review=` |Feature qa review=* Fennec/Features/imgscale/testplan |Feature operations review=` |Feature implementation notes=* bug 598736 (FIXED for Firefox 6) - Use higher-quality software scaling on devices with NEON support

|Feature landing criteria=` }}

Feature details

Priority P1
Rank 999
Theme / Goal Experience
Roadmap Firefox Mobile
Secondary roadmap `
Feature list Mobile
Project `
Engineering team Graphics

{{#set:Feature priority=P1

|Feature rank=999 |Feature theme=Experience |Feature roadmap=Firefox Mobile |Feature secondary roadmap=` |Feature list=Mobile |Feature project=` |Feature engineering team=Graphics }}

Team status notes

  status notes
Products ` `
Engineering ` `
Security fuzzing fuzzing?
Privacy ` `
Localization ` `
Accessibility ` `
Quality assurance ` `
User experience ` `
Product marketing ` `
Operations ` `

{{#set:Feature products status=`

|Feature products notes=` |Feature engineering status=` |Feature engineering notes=` |Feature security status=fuzzing |Feature security health=` |Feature security notes=fuzzing? |Feature privacy status=` |Feature privacy notes=` |Feature localization status=` |Feature localization notes=` |Feature accessibility status=` |Feature accessibility notes=` |Feature qa status=` |Feature qa notes=` |Feature ux status=` |Feature ux notes=` |Feature product marketing status=` |Feature product marketing notes=` |Feature operations status=` |Feature operations notes=` }}