You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	Merge commit '7e244c68600f479270e979258e389ed5240885fb'
* commit '7e244c68600f479270e979258e389ed5240885fb': avframe: add codec-independent stereoscopic metadata Conflicts: Changelog libavutil/Makefile libavutil/version.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		| @@ -13,6 +13,7 @@ version <next> | ||||
| - remove mp3_header_compress bitstream filters | ||||
| - Windows resource files for shared libraries | ||||
| - aeval filter | ||||
| - stereoscopic 3d metadata handling | ||||
|  | ||||
|  | ||||
| version 2.1: | ||||
|   | ||||
| @@ -21,6 +21,10 @@ API changes, most recent first: | ||||
|   Moves version.h to libavutil/ffversion.h. | ||||
|   Install ffversion.h and make it public. | ||||
|  | ||||
| 2013-11-xx - xxxxxxx- - lavu 52.20.0 - frame.h | ||||
|   Add AV_FRAME_DATA_STEREO3D value to the AVFrameSideDataType enum and | ||||
|   stereo3d.h API, that identify codec-independent stereo3d information. | ||||
|  | ||||
| 2013-11-xx - xxxxxxx- - lavu 52.19.0 - frame.h | ||||
|   Add AV_FRAME_DATA_A53_CC value to the AVFrameSideDataType enum, which | ||||
|   identifies ATSC A53 Part 4 Closed Captions data. | ||||
|   | ||||
| @@ -47,6 +47,7 @@ HEADERS = adler32.h                                                     \ | ||||
|           samplefmt.h                                                   \ | ||||
|           sha.h                                                         \ | ||||
|           sha512.h                                                      \ | ||||
|           stereo3d.h                                                    \ | ||||
|           time.h                                                        \ | ||||
|           timecode.h                                                    \ | ||||
|           timestamp.h                                                   \ | ||||
| @@ -110,6 +111,7 @@ OBJS = adler32.o                                                        \ | ||||
|        samplefmt.o                                                      \ | ||||
|        sha.o                                                            \ | ||||
|        sha512.o                                                         \ | ||||
|        stereo3d.o                                                       \ | ||||
|        time.o                                                           \ | ||||
|        timecode.o                                                       \ | ||||
|        tree.o                                                           \ | ||||
|   | ||||
| @@ -64,6 +64,11 @@ enum AVFrameSideDataType { | ||||
|      * The number of bytes of CC data is AVFrameSideData.size. | ||||
|      */ | ||||
|     AV_FRAME_DATA_A53_CC, | ||||
|     /** | ||||
|      * Stereoscopic 3d metadata. | ||||
|      * The data is the AVStereo3D struct defined in libavutil/stereo3d.h. | ||||
|      */ | ||||
|     AV_FRAME_DATA_STEREO3D, | ||||
| }; | ||||
|  | ||||
| typedef struct AVFrameSideData { | ||||
|   | ||||
							
								
								
									
										40
									
								
								libavutil/stereo3d.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								libavutil/stereo3d.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | ||||
| /* | ||||
|  * Copyright (c) 2013 Vittorio Giovara <vittorio.giovara@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 <stdint.h> | ||||
|  | ||||
| #include "mem.h" | ||||
| #include "stereo3d.h" | ||||
|  | ||||
| AVStereo3D *av_stereo3d_alloc(void) | ||||
| { | ||||
|     return av_mallocz(sizeof(AVStereo3D)); | ||||
| } | ||||
|  | ||||
| AVStereo3D *av_stereo3d_create_side_data(AVFrame *frame) | ||||
| { | ||||
|     AVFrameSideData *side_data = av_frame_new_side_data(frame, | ||||
|                                                         AV_FRAME_DATA_STEREO3D, | ||||
|                                                         sizeof(AVStereo3D)); | ||||
|     if (!side_data) | ||||
|         return NULL; | ||||
|  | ||||
|     return (AVStereo3D *)side_data->data; | ||||
| } | ||||
							
								
								
									
										147
									
								
								libavutil/stereo3d.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										147
									
								
								libavutil/stereo3d.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,147 @@ | ||||
| /* | ||||
|  * Copyright (c) 2013 Vittorio Giovara <vittorio.giovara@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 <stdint.h> | ||||
|  | ||||
| #include "frame.h" | ||||
|  | ||||
| /** | ||||
|  * List of possible 3D Types | ||||
|  */ | ||||
| enum AVStereo3DType { | ||||
|     /** | ||||
|      * Video is not stereoscopic (and metadata has to be there). | ||||
|      */ | ||||
|     AV_STEREO3D_2D, | ||||
|  | ||||
|     /** | ||||
|      * Views are next to each other. | ||||
|      * | ||||
|      *    LLLLRRRR | ||||
|      *    LLLLRRRR | ||||
|      *    LLLLRRRR | ||||
|      *    ... | ||||
|      */ | ||||
|     AV_STEREO3D_SIDEBYSIDE, | ||||
|  | ||||
|     /** | ||||
|      * Views are on top of each other. | ||||
|      * | ||||
|      *    LLLLLLLL | ||||
|      *    LLLLLLLL | ||||
|      *    RRRRRRRR | ||||
|      *    RRRRRRRR | ||||
|      */ | ||||
|     AV_STEREO3D_TOPBOTTOM, | ||||
|  | ||||
|     /** | ||||
|      * Views are alternated temporally. | ||||
|      * | ||||
|      *     frame0   frame1   frame2   ... | ||||
|      *    LLLLLLLL RRRRRRRR LLLLLLLL | ||||
|      *    LLLLLLLL RRRRRRRR LLLLLLLL | ||||
|      *    LLLLLLLL RRRRRRRR LLLLLLLL | ||||
|      *    ...      ...      ... | ||||
|      */ | ||||
|     AV_STEREO3D_FRAMESEQUENCE, | ||||
|  | ||||
|     /** | ||||
|      * Views are packed in a checkerboard-like structure per pixel. | ||||
|      * | ||||
|      *    LRLRLRLR | ||||
|      *    RLRLRLRL | ||||
|      *    LRLRLRLR | ||||
|      *    ... | ||||
|      */ | ||||
|     AV_STEREO3D_CHECKERBOARD, | ||||
|  | ||||
|     /** | ||||
|      * Views are next to each other, but when upscaling | ||||
|      * apply a checkerboard pattern. | ||||
|      * | ||||
|      *     LLLLRRRR          L L L L    R R R R | ||||
|      *     LLLLRRRR    =>     L L L L  R R R R | ||||
|      *     LLLLRRRR          L L L L    R R R R | ||||
|      *     LLLLRRRR           L L L L  R R R R | ||||
|      */ | ||||
|     AV_STEREO3D_SIDEBYSIDE_QUINCUNX, | ||||
|  | ||||
|     /** | ||||
|      * Views are packed per line, as if interlaced. | ||||
|      * | ||||
|      *    LLLLLLLL | ||||
|      *    RRRRRRRR | ||||
|      *    LLLLLLLL | ||||
|      *    ... | ||||
|      */ | ||||
|     AV_STEREO3D_LINES, | ||||
|  | ||||
|     /** | ||||
|      * Views are packed per column. | ||||
|      * | ||||
|      *    LRLRLRLR | ||||
|      *    LRLRLRLR | ||||
|      *    LRLRLRLR | ||||
|      *    ... | ||||
|      */ | ||||
|     AV_STEREO3D_COLUMNS, | ||||
| }; | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Inverted views, Right/Bottom represents the left view. | ||||
|  */ | ||||
| #define AV_STEREO3D_FLAG_INVERT     (1 << 0) | ||||
|  | ||||
| /** | ||||
|  * Stereo 3D type: this structure describes how two videos are packed | ||||
|  * within a single video surface, with additional information as needed. | ||||
|  * | ||||
|  * @note The struct must be allocated with av_stereo3d_alloc() and | ||||
|  *       its size is not a part of the public ABI. | ||||
|  */ | ||||
| typedef struct AVStereo3D { | ||||
|     /** | ||||
|      * How views are packed within the video. | ||||
|      */ | ||||
|     enum AVStereo3DType type; | ||||
|  | ||||
|     /** | ||||
|      * Additional information about the frame packing. | ||||
|      */ | ||||
|     int flags; | ||||
| } AVStereo3D; | ||||
|  | ||||
| /** | ||||
|  * Allocate an AVStereo3D structure and set its fields to default values. | ||||
|  * The resulting struct can be freed using av_freep(). | ||||
|  * | ||||
|  * @return An AVStereo3D filled with default values or NULL on failure. | ||||
|  */ | ||||
| AVStereo3D *av_stereo3d_alloc(void); | ||||
|  | ||||
| /** | ||||
|  * Allocate a complete AVFrameSideData and add it to the frame. | ||||
|  * | ||||
|  * @param The frame on which the side data is added to. | ||||
|  * | ||||
|  * @return The AVStereo3D structure to be filled by caller. | ||||
|  */ | ||||
| AVStereo3D *av_stereo3d_create_side_data(AVFrame *frame); | ||||
| @@ -75,7 +75,7 @@ | ||||
|  */ | ||||
|  | ||||
| #define LIBAVUTIL_VERSION_MAJOR  52 | ||||
| #define LIBAVUTIL_VERSION_MINOR  57 | ||||
| #define LIBAVUTIL_VERSION_MINOR  58 | ||||
| #define LIBAVUTIL_VERSION_MICRO 100 | ||||
|  | ||||
| #define LIBAVUTIL_VERSION_INT   AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user