Merge commit 'c98f3169bfb578c1a4e407b44524f0bfa3b4dc0c'
* 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>
This commit is contained in:
		
						commit
						a2bc6c116d
					
				| @ -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                                                           \
 | ||||||
|  | |||||||
							
								
								
									
										38
									
								
								libavutil/downmix_info.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								libavutil/downmix_info.c
									
									
									
									
									
										Normal file
									
								
							| @ -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; | ||||||
|  | } | ||||||
							
								
								
									
										114
									
								
								libavutil/downmix_info.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								libavutil/downmix_info.h
									
									
									
									
									
										Normal file
									
								
							| @ -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_MINOR  64 | ||||||
| #define LIBAVUTIL_VERSION_MICRO 101 | #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, \ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user