duckstation

duckstation, but archived from the revision just before upstream changed it to a proprietary software project, this version is the libre one
git clone https://git.neptards.moe/u3shit/duckstation.git
Log | Files | Refs | README | LICENSE

downmix_info.h (3235B)


      1 /*
      2  * Copyright (c) 2014 Tim Walker <tdskywalker@gmail.com>
      3  *
      4  * This file is part of FFmpeg.
      5  *
      6  * FFmpeg 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  * FFmpeg 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 FFmpeg; 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  * If the side data is absent, it is created and added to the frame.
     99  *
    100  * @param frame the frame for which the side data is to be obtained or created
    101  *
    102  * @return the AVDownmixInfo structure to be edited by the caller, or NULL if
    103  *         the structure cannot be allocated.
    104  */
    105 AVDownmixInfo *av_downmix_info_update_side_data(AVFrame *frame);
    106 
    107 /**
    108  * @}
    109  */
    110 
    111 /**
    112  * @}
    113  */
    114 
    115 #endif /* AVUTIL_DOWNMIX_INFO_H */