tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

downmix_info.h (3162B)


      1 /*
      2 * Copyright (c) 2014 Tim Walker <tdskywalker@gmail.com>
      3 *
      4 * This file is part of Libav.
      5 *
      6 * Libav is free software; you can redistribute it and/or
      7 * modify it under the terms of the GNU Lesser General Public
      8 * License as published by the Free Software Foundation; either
      9 * version 2.1 of the License, or (at your option) any later version.
     10 *
     11 * Libav is distributed in the hope that it will be useful,
     12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
     13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14 * Lesser General Public License for more details.
     15 *
     16 * You should have received a copy of the GNU Lesser General Public
     17 * License along with Libav; if not, write to the Free Software
     18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
     19 */
     20 
     21 #ifndef AVUTIL_DOWNMIX_INFO_H
     22 #define AVUTIL_DOWNMIX_INFO_H
     23 
     24 #include "frame.h"
     25 
     26 /**
     27 * @file
     28 * audio downmix medatata
     29 */
     30 
     31 /**
     32 * @addtogroup lavu_audio
     33 * @{
     34 */
     35 
     36 /**
     37 * @defgroup downmix_info Audio downmix metadata
     38 * @{
     39 */
     40 
     41 /**
     42 * Possible downmix types.
     43 */
     44 enum AVDownmixType {
     45    AV_DOWNMIX_TYPE_UNKNOWN, /**< Not indicated. */
     46    AV_DOWNMIX_TYPE_LORO,    /**< Lo/Ro 2-channel downmix (Stereo). */
     47    AV_DOWNMIX_TYPE_LTRT,    /**< Lt/Rt 2-channel downmix, Dolby Surround compatible. */
     48    AV_DOWNMIX_TYPE_DPLII,   /**< Lt/Rt 2-channel downmix, Dolby Pro Logic II compatible. */
     49    AV_DOWNMIX_TYPE_NB       /**< Number of downmix types. Not part of ABI. */
     50 };
     51 
     52 /**
     53 * This structure describes optional metadata relevant to a downmix procedure.
     54 *
     55 * All fields are set by the decoder to the value indicated in the audio
     56 * bitstream (if present), or to a "sane" default otherwise.
     57 */
     58 typedef struct AVDownmixInfo {
     59    /**
     60     * Type of downmix preferred by the mastering engineer.
     61     */
     62    enum AVDownmixType preferred_downmix_type;
     63 
     64    /**
     65     * Absolute scale factor representing the nominal level of the center
     66     * channel during a regular downmix.
     67     */
     68    double center_mix_level;
     69 
     70    /**
     71     * Absolute scale factor representing the nominal level of the center
     72     * channel during an Lt/Rt compatible downmix.
     73     */
     74    double center_mix_level_ltrt;
     75 
     76    /**
     77     * Absolute scale factor representing the nominal level of the surround
     78     * channels during a regular downmix.
     79     */
     80    double surround_mix_level;
     81 
     82    /**
     83     * Absolute scale factor representing the nominal level of the surround
     84     * channels during an Lt/Rt compatible downmix.
     85     */
     86    double surround_mix_level_ltrt;
     87 
     88    /**
     89     * Absolute scale factor representing the level at which the LFE data is
     90     * mixed into L/R channels during downmixing.
     91     */
     92    double lfe_mix_level;
     93 } AVDownmixInfo;
     94 
     95 /**
     96 * Get a frame's AV_FRAME_DATA_DOWNMIX_INFO side data for editing.
     97 *
     98 * The side data is created and added to the frame if it's absent.
     99 *
    100 * @param frame the frame for which the side data is to be obtained.
    101 *
    102 * @return the AVDownmixInfo structure to be edited by the caller.
    103 */
    104 AVDownmixInfo *av_downmix_info_update_side_data(AVFrame *frame);
    105 
    106 /**
    107 * @}
    108 */
    109 
    110 /**
    111 * @}
    112 */
    113 
    114 #endif /* AVUTIL_DOWNMIX_INFO_H */