mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +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:
commit
7a60348053
@ -13,6 +13,7 @@ version <next>
|
|||||||
- remove mp3_header_compress bitstream filters
|
- remove mp3_header_compress bitstream filters
|
||||||
- Windows resource files for shared libraries
|
- Windows resource files for shared libraries
|
||||||
- aeval filter
|
- aeval filter
|
||||||
|
- stereoscopic 3d metadata handling
|
||||||
|
|
||||||
|
|
||||||
version 2.1:
|
version 2.1:
|
||||||
|
@ -21,6 +21,10 @@ API changes, most recent first:
|
|||||||
Moves version.h to libavutil/ffversion.h.
|
Moves version.h to libavutil/ffversion.h.
|
||||||
Install ffversion.h and make it public.
|
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
|
2013-11-xx - xxxxxxx- - lavu 52.19.0 - frame.h
|
||||||
Add AV_FRAME_DATA_A53_CC value to the AVFrameSideDataType enum, which
|
Add AV_FRAME_DATA_A53_CC value to the AVFrameSideDataType enum, which
|
||||||
identifies ATSC A53 Part 4 Closed Captions data.
|
identifies ATSC A53 Part 4 Closed Captions data.
|
||||||
|
@ -47,6 +47,7 @@ HEADERS = adler32.h \
|
|||||||
samplefmt.h \
|
samplefmt.h \
|
||||||
sha.h \
|
sha.h \
|
||||||
sha512.h \
|
sha512.h \
|
||||||
|
stereo3d.h \
|
||||||
time.h \
|
time.h \
|
||||||
timecode.h \
|
timecode.h \
|
||||||
timestamp.h \
|
timestamp.h \
|
||||||
@ -110,6 +111,7 @@ OBJS = adler32.o \
|
|||||||
samplefmt.o \
|
samplefmt.o \
|
||||||
sha.o \
|
sha.o \
|
||||||
sha512.o \
|
sha512.o \
|
||||||
|
stereo3d.o \
|
||||||
time.o \
|
time.o \
|
||||||
timecode.o \
|
timecode.o \
|
||||||
tree.o \
|
tree.o \
|
||||||
|
@ -64,6 +64,11 @@ enum AVFrameSideDataType {
|
|||||||
* The number of bytes of CC data is AVFrameSideData.size.
|
* The number of bytes of CC data is AVFrameSideData.size.
|
||||||
*/
|
*/
|
||||||
AV_FRAME_DATA_A53_CC,
|
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 {
|
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_MAJOR 52
|
||||||
#define LIBAVUTIL_VERSION_MINOR 57
|
#define LIBAVUTIL_VERSION_MINOR 58
|
||||||
#define LIBAVUTIL_VERSION_MICRO 100
|
#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, \
|
||||||
|
Loading…
Reference in New Issue
Block a user