content/media/fmp4/demuxer/channel_layout.h

Thu, 15 Jan 2015 15:55:04 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 15 Jan 2015 15:55:04 +0100
branch
TOR_BUG_9701
changeset 9
a63d609f5ebe
permissions
-rw-r--r--

Back out 97036ab72558 which inappropriately compared turds to third parties.

     1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
     2 // Use of this source code is governed by a BSD-style license that can be
     3 // found in the LICENSE file.
     5 #ifndef MEDIA_BASE_CHANNEL_LAYOUT_H_
     6 #define MEDIA_BASE_CHANNEL_LAYOUT_H_
     9 namespace mp4_demuxer {
    11 // Enumerates the various representations of the ordering of audio channels.
    12 // Logged to UMA, so never reuse a value, always add new/greater ones!
    13 enum ChannelLayout {
    14   CHANNEL_LAYOUT_NONE = 0,
    15   CHANNEL_LAYOUT_UNSUPPORTED = 1,
    17   // Front C
    18   CHANNEL_LAYOUT_MONO = 2,
    20   // Front L, Front R
    21   CHANNEL_LAYOUT_STEREO = 3,
    23   // Front L, Front R, Back C
    24   CHANNEL_LAYOUT_2_1 = 4,
    26   // Front L, Front R, Front C
    27   CHANNEL_LAYOUT_SURROUND = 5,
    29   // Front L, Front R, Front C, Back C
    30   CHANNEL_LAYOUT_4_0 = 6,
    32   // Front L, Front R, Side L, Side R
    33   CHANNEL_LAYOUT_2_2 = 7,
    35   // Front L, Front R, Back L, Back R
    36   CHANNEL_LAYOUT_QUAD = 8,
    38   // Front L, Front R, Front C, Side L, Side R
    39   CHANNEL_LAYOUT_5_0 = 9,
    41   // Front L, Front R, Front C, Side L, Side R, LFE
    42   CHANNEL_LAYOUT_5_1 = 10,
    44   // Front L, Front R, Front C, Back L, Back R
    45   CHANNEL_LAYOUT_5_0_BACK = 11,
    47   // Front L, Front R, Front C, Back L, Back R, LFE
    48   CHANNEL_LAYOUT_5_1_BACK = 12,
    50   // Front L, Front R, Front C, Side L, Side R, Back L, Back R
    51   CHANNEL_LAYOUT_7_0 = 13,
    53   // Front L, Front R, Front C, Side L, Side R, LFE, Back L, Back R
    54   CHANNEL_LAYOUT_7_1 = 14,
    56   // Front L, Front R, Front C, Side L, Side R, LFE, Front LofC, Front RofC
    57   CHANNEL_LAYOUT_7_1_WIDE = 15,
    59   // Stereo L, Stereo R
    60   CHANNEL_LAYOUT_STEREO_DOWNMIX = 16,
    62   // Stereo L, Stereo R, LFE
    63   CHANNEL_LAYOUT_2POINT1 = 17,
    65   // Stereo L, Stereo R, Front C, LFE
    66   CHANNEL_LAYOUT_3_1 = 18,
    68   // Stereo L, Stereo R, Front C, Rear C, LFE
    69   CHANNEL_LAYOUT_4_1 = 19,
    71   // Stereo L, Stereo R, Front C, Side L, Side R, Back C
    72   CHANNEL_LAYOUT_6_0 = 20,
    74   // Stereo L, Stereo R, Side L, Side R, Front LofC, Front RofC
    75   CHANNEL_LAYOUT_6_0_FRONT = 21,
    77   // Stereo L, Stereo R, Side L, Side R, Front C, Rear C.
    78   CHANNEL_LAYOUT_HEXAGONAL = 22,
    80   // Stereo L, Stereo R, Side L, Side R, Front C, Rear Center, LFE
    81   CHANNEL_LAYOUT_6_1 = 23,
    83   // Stereo L, Stereo R, Back L, Back R, Front C, Rear Center, LFE
    84   CHANNEL_LAYOUT_6_1_BACK = 24,
    86   // Stereo L, Stereo R, Side L, Side R, Front LofC, Front RofC, LFE
    87   CHANNEL_LAYOUT_6_1_FRONT = 25,
    89   // Front L, Front R, Front C, Side L, Side R, Front LofC, Front RofC
    90   CHANNEL_LAYOUT_7_0_FRONT = 26,
    92   // Front L, Front R, Front C, Back L, Back R, LFE, Front LofC, Front RofC
    93   CHANNEL_LAYOUT_7_1_WIDE_BACK = 27,
    95   // Front L, Front R, Front C, Side L, Side R, Rear C, Back L, Back R.
    96   CHANNEL_LAYOUT_OCTAGONAL = 28,
    98   // Channels are not explicitly mapped to speakers.
    99   CHANNEL_LAYOUT_DISCRETE = 29,
   101   // Total number of layouts.
   102   CHANNEL_LAYOUT_MAX  // Must always be last!
   103 };
   105 enum Channels {
   106   LEFT = 0,
   107   RIGHT,
   108   CENTER,
   109   LFE,
   110   BACK_LEFT,
   111   BACK_RIGHT,
   112   LEFT_OF_CENTER,
   113   RIGHT_OF_CENTER,
   114   BACK_CENTER,
   115   SIDE_LEFT,
   116   SIDE_RIGHT,
   117   CHANNELS_MAX
   118 };
   120 // Returns the expected channel position in an interleaved stream.  Values of -1
   121 // mean the channel at that index is not used for that layout.  Values range
   122 // from 0 to CHANNELS_MAX - 1.
   123 int ChannelOrder(ChannelLayout layout, Channels channel);
   125 // Returns the number of channels in a given ChannelLayout.
   126 int ChannelLayoutToChannelCount(ChannelLayout layout);
   128 // Given the number of channels, return the best layout,
   129 // or return CHANNEL_LAYOUT_UNSUPPORTED if there is no good match.
   130 ChannelLayout GuessChannelLayout(int channels);
   132 }  // namespace mp4_demuxer
   134 #endif  // MEDIA_BASE_CHANNEL_LAYOUT_H_

mercurial