Media/multichannel: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(Multiple channel support)
 
Line 18: Line 18:


== Status tracking ==
== Status tracking ==
Insert bug lists here
<bugzilla>
 
    {
        "blocks":"1073786",
        "status":["RESLOVE FIXED", "NEW", "ASSIGNED", "REOPENED"],
        "include_fields": "id, summary, product, component, resolution, assigned_to, depends_on, blocks, whiteboard, target_milestone"
    }
</bugzilla>


== Multiple Channel Support ==
== Multiple Channel Support ==

Revision as of 08:45, 30 November 2016

Overview

Current Overall Status

  1. Implement multiple channel support in cubeb on Windows
  2. Implement mixing module for cubeb and add the mixing test
  3. Make multiple channel works in Firefox Windows
  4. Survey a more robust way to test the multiple channel support

Roadmap

  1. Implement multiple channel support in cubeb on Windows
  2. Support multiple channel for Firefox Windows based on previous cubeb's work
  3. Repeat the work for OSX, Linux, ... and other platforms.

Timeline

Evaluate dates here.


Status tracking

Full Query
ID Summary Product Component Resolution Assigned to Depends on Blocks Whiteboard Target milestone
1619726 Use the new Rust audio mixer in cubeb windows Core Audio/Video: cubeb C.M.Chang[:chunmin] 1073786, 1368938 ---
1300024 Support audio 5.1 on Android Core Audio/Video: cubeb C.M.Chang[:chunmin] 1073786, 1286101 ---
1368938 Support audio 5.1 with non-SMPTE layout devices Core Audio/Video: cubeb Paul Adenot (:padenot) 1619726 1073786, 1325023 ---
1627827 Audio goes wrong channel with Motu 828 mkii Core Audio/Video: cubeb C.M.Chang[:chunmin] 1628132 1073786 [media-audio] ---

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


Multiple Channel Support

Supported channels

To support more channels beyond Stereo(who has left and right channels), we need to define what channels we use:

Code Channel Name
Mono
L Left(Front Left)
R Right(Front Right)
C Center(Front Center)
LS Left Surround(Side Left)
RS Right Surround(Side Right)
RLS Rear Left Surround(Back Left)
RRC Rear Center(Back Center)
RRS Rear Right Surround(Bake Right)
LFE Low Frequency Effects

Channel Layout

Channel layout specifies the order of input/output channel data in audio buffer. For example, if the layout is stereo, then we have two channel data. The first data is for left channel, the second one is right channel.

Channel layout has various definitions, but SMPTE's format is most common:

Name Channels
DUAL-MONO L R
DUAL-MONO-LFE L R LFE
MONO M
MONO-LFE M LFE
STEREO L R
STEREO-LFE L R LFE
3F L R C
3F-LFE L R C LFE
2F1 L R RC
2F1-LFE L R LFE RC
3F1 L R C RC
3F1-LFE L R C LFE RC
2F2 L R LS RS
2F2-LFE L R LFE LS RS
3F2 L R C LS RS
3F2-LFE L R C LFE LS RS
3F3R-LFE L R C LFE RC LS RS
3F4-LFE L R C LFE RLS RRS LS RS

Mixing

When the number of audio input channels is different from the number of audio output channels, we need to convert the audio input data to fit the audio output's configuration.

Downmix

When input channels is larger than output channels, we need to compress the audio input data.

Upmix

When input channels is smaller than output channels, we need to expand the audio input data.

Bypass

When input channels is equal to output channels but they have different layout, we need to bypass the audio input data.