* commit 'c98f3169bfb578c1a4e407b44524f0bfa3b4dc0c': lavu: add AV_FRAME_DATA_DOWNMIX_INFO side data type. Conflicts: doc/APIchanges libavutil/version.h Merged-by: Michael Niedermayer <michaelni@gmx.at>tags/n2.2-rc1
@@ -15,6 +15,10 @@ libavutil: 2012-10-22 | |||||
API changes, most recent first: | API changes, most recent first: | ||||
2014-02-xx - xxxxxxx - lavu 53.3.0 - frame.h | |||||
Add AV_FRAME_DATA_DOWNMIX_INFO value to the AVFrameSideDataType enum and | |||||
downmix_info.h API, which identify downmix-related metadata. | |||||
2014-02-11 - 1b05ac2 - lavf 55.32.100 - avformat.h | 2014-02-11 - 1b05ac2 - lavf 55.32.100 - avformat.h | ||||
Add av_write_uncoded_frame() and av_interleaved_write_uncoded_frame(). | Add av_write_uncoded_frame() and av_interleaved_write_uncoded_frame(). | ||||
@@ -19,6 +19,7 @@ HEADERS = adler32.h \ | |||||
common.h \ | common.h \ | ||||
cpu.h \ | cpu.h \ | ||||
crc.h \ | crc.h \ | ||||
downmix_info.h \ | |||||
error.h \ | error.h \ | ||||
eval.h \ | eval.h \ | ||||
fifo.h \ | fifo.h \ | ||||
@@ -80,6 +81,7 @@ OBJS = adler32.o \ | |||||
cpu.o \ | cpu.o \ | ||||
crc.o \ | crc.o \ | ||||
des.o \ | des.o \ | ||||
downmix_info.o \ | |||||
error.o \ | error.o \ | ||||
eval.o \ | eval.o \ | ||||
fifo.o \ | fifo.o \ | ||||
@@ -0,0 +1,38 @@ | |||||
/* | |||||
* Copyright (c) 2014 Tim Walker <tdskywalker@gmail.com> | |||||
* | |||||
* This file is part of FFmpeg. | |||||
* | |||||
* FFmpeg is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 2.1 of the License, or (at your option) any later version. | |||||
* | |||||
* FFmpeg is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public | |||||
* License along with FFmpeg; if not, write to the Free Software | |||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||||
*/ | |||||
#include "downmix_info.h" | |||||
#include "frame.h" | |||||
AVDownmixInfo *av_downmix_info_update_side_data(AVFrame *frame) | |||||
{ | |||||
AVFrameSideData *side_data; | |||||
side_data = av_frame_get_side_data(frame, AV_FRAME_DATA_DOWNMIX_INFO); | |||||
if (!side_data) | |||||
side_data = av_frame_new_side_data(frame, AV_FRAME_DATA_DOWNMIX_INFO, | |||||
sizeof(AVDownmixInfo)); | |||||
if (!side_data) | |||||
return NULL; | |||||
return (AVDownmixInfo*)side_data->data; | |||||
} |
@@ -0,0 +1,114 @@ | |||||
/* | |||||
* Copyright (c) 2014 Tim Walker <tdskywalker@gmail.com> | |||||
* | |||||
* This file is part of FFmpeg. | |||||
* | |||||
* FFmpeg is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 2.1 of the License, or (at your option) any later version. | |||||
* | |||||
* FFmpeg is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public | |||||
* License along with FFmpeg; if not, write to the Free Software | |||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||||
*/ | |||||
#ifndef AVUTIL_DOWNMIX_INFO_H | |||||
#define AVUTIL_DOWNMIX_INFO_H | |||||
#include "frame.h" | |||||
/** | |||||
* @file | |||||
* audio downmix medatata | |||||
*/ | |||||
/** | |||||
* @addtogroup lavu_audio | |||||
* @{ | |||||
*/ | |||||
/** | |||||
* @defgroup downmix_info Audio downmix metadata | |||||
* @{ | |||||
*/ | |||||
/** | |||||
* Possible downmix types. | |||||
*/ | |||||
enum AVDownmixType { | |||||
AV_DOWNMIX_TYPE_UNKNOWN, /**< Not indicated. */ | |||||
AV_DOWNMIX_TYPE_LORO, /**< Lo/Ro 2-channel downmix (Stereo). */ | |||||
AV_DOWNMIX_TYPE_LTRT, /**< Lt/Rt 2-channel downmix, Dolby Surround compatible. */ | |||||
AV_DOWNMIX_TYPE_DPLII, /**< Lt/Rt 2-channel downmix, Dolby Pro Logic II compatible. */ | |||||
AV_DOWNMIX_TYPE_NB /**< Number of downmix types. Not part of ABI. */ | |||||
}; | |||||
/** | |||||
* This structure describes optional metadata relevant to a downmix procedure. | |||||
* | |||||
* All fields are set by the decoder to the value indicated in the audio | |||||
* bitstream (if present), or to a "sane" default otherwise. | |||||
*/ | |||||
typedef struct AVDownmixInfo { | |||||
/** | |||||
* Type of downmix preferred by the mastering engineer. | |||||
*/ | |||||
enum AVDownmixType preferred_downmix_type; | |||||
/** | |||||
* Absolute scale factor representing the nominal level of the center | |||||
* channel during a regular downmix. | |||||
*/ | |||||
double center_mix_level; | |||||
/** | |||||
* Absolute scale factor representing the nominal level of the center | |||||
* channel during an Lt/Rt compatible downmix. | |||||
*/ | |||||
double center_mix_level_ltrt; | |||||
/** | |||||
* Absolute scale factor representing the nominal level of the surround | |||||
* channels during a regular downmix. | |||||
*/ | |||||
double surround_mix_level; | |||||
/** | |||||
* Absolute scale factor representing the nominal level of the surround | |||||
* channels during an Lt/Rt compatible downmix. | |||||
*/ | |||||
double surround_mix_level_ltrt; | |||||
/** | |||||
* Absolute scale factor representing the level at which the LFE data is | |||||
* mixed into L/R channels during downmixing. | |||||
*/ | |||||
double lfe_mix_level; | |||||
} AVDownmixInfo; | |||||
/** | |||||
* Get a frame's AV_FRAME_DATA_DOWNMIX_INFO side data for editing. | |||||
* | |||||
* The side data is created and added to the frame if it's absent. | |||||
* | |||||
* @param frame the frame for which the side data is to be obtained. | |||||
* | |||||
* @return the AVDownmixInfo structure to be edited by the caller. | |||||
*/ | |||||
AVDownmixInfo *av_downmix_info_update_side_data(AVFrame *frame); | |||||
/** | |||||
* @} | |||||
*/ | |||||
/** | |||||
* @} | |||||
*/ | |||||
#endif /* AVUTIL_DOWNMIX_INFO_H */ |
@@ -87,6 +87,11 @@ enum AVFrameSideDataType { | |||||
* The data is the AVMatrixEncoding enum defined in libavutil/channel_layout.h. | * The data is the AVMatrixEncoding enum defined in libavutil/channel_layout.h. | ||||
*/ | */ | ||||
AV_FRAME_DATA_MATRIXENCODING, | AV_FRAME_DATA_MATRIXENCODING, | ||||
/** | |||||
* Metadata relevant to a downmix procedure. | |||||
* The data is the AVDownmixInfo struct defined in libavutil/downmix_info.h. | |||||
*/ | |||||
AV_FRAME_DATA_DOWNMIX_INFO, | |||||
}; | }; | ||||
typedef struct AVFrameSideData { | typedef struct AVFrameSideData { | ||||
@@ -56,8 +56,8 @@ | |||||
*/ | */ | ||||
#define LIBAVUTIL_VERSION_MAJOR 52 | #define LIBAVUTIL_VERSION_MAJOR 52 | ||||
#define LIBAVUTIL_VERSION_MINOR 63 | |||||
#define LIBAVUTIL_VERSION_MICRO 101 | |||||
#define LIBAVUTIL_VERSION_MINOR 64 | |||||
#define LIBAVUTIL_VERSION_MICRO 100 | |||||
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ | #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ | ||||
LIBAVUTIL_VERSION_MINOR, \ | LIBAVUTIL_VERSION_MINOR, \ | ||||