Merge commit '7e244c68600f479270e979258e389ed5240885fb'
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 9 Dec 2013 20:33:51 +0000 (21:33 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 9 Dec 2013 20:33:51 +0000 (21:33 +0100)
* commit '7e244c68600f479270e979258e389ed5240885fb':
  avframe: add codec-independent stereoscopic metadata

Conflicts:
Changelog
libavutil/Makefile
libavutil/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
Changelog
doc/APIchanges
libavutil/Makefile
libavutil/frame.h
libavutil/stereo3d.c
libavutil/stereo3d.h
libavutil/version.h

diff --cc Changelog
+++ b/Changelog
  Entries are sorted chronologically from oldest to youngest within each release,
  releases are sorted from youngest to oldest.
  
 -version 10:
 -- av_strnstr
 -- support ID3v2 tags in ASF files
 +version <next>
 +
 +- HNM version 4 demuxer and video decoder
 +- Live HDS muxer
 +- setsar/setdar filters now support variables in ratio expressions
 +- elbg filter
 +- string validation in ffprobe
 +- support for decoding through VDPAU in ffmpeg (the -hwaccel option)
 +- complete Voxware MetaSound decoder
 +- remove mp3_header_compress bitstream filters
 +- Windows resource files for shared libraries
 +- aeval filter
++- stereoscopic 3d metadata handling
 +
 +
 +version 2.1:
 +
 +- aecho filter
 +- perspective filter ported from libmpcodecs
 +- ffprobe -show_programs option
 +- compand filter
 +- RTMP seek support
 +- when transcoding with ffmpeg (i.e. not streamcopying), -ss is now accurate
 +  even when used as an input option. Previous behavior can be restored with
 +  the -noaccurate_seek option.
 +- ffmpeg -t option can now be used for inputs, to limit the duration of
 +  data read from an input file
 +- incomplete Voxware MetaSound decoder
 +- read EXIF metadata from JPEG
 +- DVB teletext decoder
 +- phase filter ported from libmpcodecs
 +- w3fdif filter
 +- Opus support in Matroska
 +- FFV1 version 1.3 is stable and no longer experimental
 +- FFV1: YUVA(444,422,420) 9, 10 and 16 bit support
 +- changed DTS stream id in lavf mpeg ps muxer from 0x8a to 0x88, to be
 +  more consistent with other muxers.
 +- adelay filter
 +- pullup filter ported from libmpcodecs
 +- ffprobe -read_intervals option
 +- Lossless and alpha support for WebP decoder
 +- Error Resilient AAC syntax (ER AAC LC) decoding
 +- Low Delay AAC (ER AAC LD) decoding
 +- mux chapters in ASF files
 +- SFTP protocol (via libssh)
 +- libx264: add ability to encode in YUVJ422P and YUVJ444P
 +- Fraps: use BT.709 colorspace by default for yuv, as reference fraps decoder does
 +- make decoding alpha optional for prores, ffv1 and vp6 by setting
 +  the skip_alpha flag.
 +- ladspa wrapper filter
 +- native VP9 decoder
 +- dpx parser
 +- max_error_rate parameter in ffmpeg
 +- PulseAudio output device
 +- ReplayGain scanner
 +- Enhanced Low Delay AAC (ER AAC ELD) decoding (no LD SBR support)
 +- Linux framebuffer output device
 +- HEVC decoder
 +- raw HEVC, HEVC in MOV/MP4, HEVC in Matroska, HEVC in MPEG-TS demuxing
 +- mergeplanes filter
 +
 +
 +version 2.0:
 +
 +- curves filter
  - reference-counting for AVFrame and AVPacket data
 -- avconv now fails when input options are used for output file
 +- ffmpeg now fails when input options are used for output file
    or vice versa
 -- new avconv options -filter_script and -filter_complex_script, which allow a
 +- support for Monkey's Audio versions from 3.93
 +- perms and aperms filters
 +- audio filtering support in ffplay
 +- 10% faster aac encoding on x86 and MIPS
 +- sine audio filter source
 +- WebP demuxing and decoding support
 +- new ffmpeg options -filter_script and -filter_complex_script, which allow a
    filtergraph description to be read from a file
 +- OpenCL support
 +- audio phaser filter
 +- separatefields filter
 +- libquvi demuxer
  - uniform options syntax across all filters
 +- telecine filter
  - new interlace filter
 -- JPEG 2000 decoder
 -- new asetpts filter (same as setpts, but for audio)
 -- new trim and atrim filters
 -- avconv -t and -ss (output-only) options are now sample-accurate when
 +- smptehdbars source
 +- inverse telecine filters (fieldmatch and decimate)
 +- colorbalance filter
 +- colorchannelmixer filter
 +- The matroska demuxer can now output proper verbatim ASS packets. It will
 +  become the default at the next libavformat major bump.
 +- decent native animated GIF encoding
 +- asetrate filter
 +- interleave filter
 +- timeline editing with filters
 +- vidstabdetect and vidstabtransform filters for video stabilization using
 +  the vid.stab library
 +- astats filter
 +- trim and atrim filters
 +- ffmpeg -t and -ss (output-only) options are now sample-accurate when
    transcoding audio
  - Matroska muxer can now put the index at the beginning of the file.
 -- avconv -deinterlace option removed, the yadif filter should be used instead
 +- extractplanes filter
 +- avectorscope filter
 +- ADPCM DTK decoder
 +- ADP demuxer
 +- RSD demuxer
 +- RedSpark demuxer
 +- ADPCM IMA Radical decoder
 +- zmq filters
 +- DCT denoiser filter (dctdnoiz)
 +- Wavelet denoiser filter ported from libmpcodecs as owdenoise (formerly "ow")
  - Apple Intermediate Codec decoder
  - Escape 130 video decoder
 +- FTP protocol support
 +- V4L2 output device
 +- 3D LUT filter (lut3d)
 +- SMPTE 302M audio encoder
  - support for slice multithreading in libavfilter
 +- Hald CLUT support (generation and filtering)
  - VC-1 interlaced B-frame support
  - support for WavPack muxing (raw and in Matroska)
 +- XVideo output device
 +- vignette filter
 +- True Audio (TTA) encoder
  - Go2Webinar decoder
 +- mcdeint filter ported from libmpcodecs
 +- sab filter ported from libmpcodecs
 +- ffprobe -show_chapters option
  - WavPack encoding through libwavpack
 -- Added the -n parameter to avconv
 -- RTMP seek support
 -- when transcoding with avconv (i.e. not streamcopying), -ss is now accurate
 -  even when used as an input option. Previous behavior can be restored with
 -  the -noaccurate_seek option.
 -- avconv -t option can now be used for inputs, to limit the duration of
 -  data read from an input file
 -- Voxware MetaSound decoder
 -- WebP decoder
 -- Error Resilient AAC syntax (ER AAC LC) decoding
 -- Low Delay AAC (ER AAC LD) decoding
 -- mux chapters in ASF files
 -- Opus in Ogg demuxing
 -- Enhanced Low Delay AAC (ER AAC ELD) decoding (no LD SBR support)
 -- F4V muxer
 -- HNM version 4 demuxer and video decoder
 -- HEVC decoder
 -- raw HEVC, HEVC in MOV/MP4, HEVC in Matroska, HEVC in MPEG-TS demuxing
 -- remove avplay -vismv option, which has not worked for a long time
 -- Live HDS muxer
 -- setsar/setdar filters now support variables in ratio expressions
 -- dar variable in the scale filter now returns the actual DAR (i.e. a * sar)
 -- VP9 decoder
 -- support for decoding through VDPAU in avconv (the -hwaccel option)
 -- remove mp3_header_(de)compress bitstream filters
 -- stereoscopic 3d metadata handling
 +- rotate filter
 +- spp filter ported from libmpcodecs
 +- libgme support
 +- psnr filter
  
  
 -version 9:
 -- av_basename and av_dirname
 -- adobe and limelight publisher authentication in RTMP
 +version 1.2:
 +
  - VDPAU hardware acceleration through normal hwaccel
  - SRTP support
 +- Error diffusion dither in Swscale
 +- Chained Ogg support
 +- Theora Midstream reconfiguration support
 +- EVRC decoder
 +- audio fade filter
 +- filtering audio with unknown channel layout
 +- allpass, bass, bandpass, bandreject, biquad, equalizer, highpass, lowpass
 +  and treble audio filter
 +- improved showspectrum filter, with multichannel support and sox-like colors
 +- histogram filter
 +- tee muxer
 +- il filter ported from libmpcodecs
 +- support ID3v2 tags in ASF files
 +- encrypted TTA stream decoding support
 +- RF64 support in WAV muxer
 +- noise filter ported from libmpcodecs
 +- Subtitles character encoding conversion
 +- blend filter
 +- stereo3d filter ported from libmpcodecs
 +
  
 +version 1.1:
  
 -version 9_beta3:
 -- ashowinfo audio filter
 +- stream disposition information printing in ffprobe
 +- filter for loudness analysis following EBU R128
 +- Opus encoder using libopus
 +- ffprobe -select_streams option
 +- Pinnacle TARGA CineWave YUV16 decoder
 +- TAK demuxer, decoder and parser
 +- DTS-HD demuxer
 +- remove -same_quant, it hasn't worked for years
 +- FFM2 support
 +- X-Face image encoder and decoder
  - 24-bit FLAC encoding
 -- audio volume filter
 -- deprecated the avconv -vol option. the volume filter is to be used instead.
  - multi-channel ALAC encoding up to 7.1
 -- TAK demuxer, parser, and decoder
 -- adaptive frame-level multithreading for H.264
 -
 -
 -version 9_beta2:
  - metadata (INFO tag) support in WAV muxer
 +- subtitles raw text decoder
  - support for building DLLs using MSVC
 -- remove avserver daemon mode
 +- LVF demuxer
 +- ffescape tool
 +- metadata (info chunk) support in CAF muxer
 +- field filter ported from libmpcodecs
 +- AVR demuxer
 +- geq filter ported from libmpcodecs
 +- remove ffserver daemon mode
 +- AST muxer/demuxer
 +- new expansion syntax for drawtext
 +- BRender PIX image decoder
 +- ffprobe -show_entries option
 +- ffprobe -sections option
 +- ADPCM IMA Dialogic decoder
 +- BRSTM demuxer
 +- animated GIF decoder and demuxer
 +- PVF demuxer
 +- subtitles filter
 +- IRCAM muxer/demuxer
 +- Paris Audio File demuxer
 +- Virtual concatenation demuxer
 +- VobSub demuxer
 +- JSON captions for TED talks decoding support
 +- SOX Resampler support in libswresample
 +- aselect filter
 +- SGI RLE 8-bit decoder
 +- Silicon Graphics Motion Video Compressor 1 & 2 decoder
 +- Silicon Graphics Movie demuxer
 +- apad filter
 +- Resolution & pixel format change support with multithreading for H.264
 +- documentation split into per-component manuals
 +- pp (postproc) filter ported from MPlayer
 +- NIST Sphere demuxer
 +- MPL2, VPlayer, MPlayer, AQTitle, PJS and SubViewer v1 subtitles demuxers and decoders
 +- Sony Wave64 muxer
 +- adobe and limelight publisher authentication in RTMP
 +- data: URI scheme
  - support building on the Plan 9 operating system
 -- ffv1: support version 1.3
 +- kerndeint filter ported from MPlayer
 +- histeq filter ported from VirtualDub
 +- Megalux Frame demuxer
 +- 012v decoder
 +- Improved AVC Intra decoding support
  
  
 -version 9_beta1:
 +version 1.0:
  
 -- XWD encoder and decoder
 -- Support for fragmentation in the mov/mp4 muxer
 -- ISMV (Smooth Streaming) muxer
 -- CDXL demuxer and decoder
 -- Apple ProRes encoder
 -- Sun Rasterfile Encoder
 -- remove libpostproc
 -- ID3v2 attached pictures reading and writing
 -- WMA Lossless decoder
 -- XBM encoder
 -- RealAudio Lossless decoder
 -- ZeroCodec decoder
 -- drop support for avconv without libavfilter
 -- add libavresample audio conversion library
 -- audio filters support in libavfilter and avconv
 -- add fps filter
 -- audio split filter
 -- audio mix filter
 -- avprobe output is now standard INI or JSON. The old format can still
 -  be used with -of old.
 +- INI and flat output in ffprobe
 +- Scene detection in libavfilter
  - Indeo Audio decoder
  - channelsplit audio filter
 +- setnsamples audio filter
 +- atempo filter
 +- ffprobe -show_data option
  - RTMPT protocol support
  - iLBC encoding/decoding via libilbc
  - Microsoft Screen 1 decoder
diff --cc doc/APIchanges
@@@ -14,13 -12,11 +14,17 @@@ libavutil:     2012-10-2
  
  
  API changes, most recent first:
 +2013-12-xx - xxxxxxx - lavu 52.57.100 - opencl.h
 +  Add av_opencl_benchmark() function.
 +
 +2013-11-xx - xxxxxxx - lavu 52.56.100 - ffversion.h
 +  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.
@@@ -43,13 -39,10 +43,14 @@@ HEADERS = adler32.
            pixfmt.h                                                      \
            random_seed.h                                                 \
            rational.h                                                    \
 +          ripemd.h                                                      \
            samplefmt.h                                                   \
            sha.h                                                         \
 +          sha512.h                                                      \
+           stereo3d.h                                                    \
            time.h                                                        \
 +          timecode.h                                                    \
 +          timestamp.h                                                   \
            version.h                                                     \
            xtea.h                                                        \
  
@@@ -106,15 -92,12 +107,16 @@@ OBJS = adler32.
         random_seed.o                                                    \
         rational.o                                                       \
         rc4.o                                                            \
 +       ripemd.o                                                         \
         samplefmt.o                                                      \
         sha.o                                                            \
 +       sha512.o                                                         \
+        stereo3d.o                                                       \
         time.o                                                           \
 +       timecode.o                                                       \
         tree.o                                                           \
         utils.o                                                          \
 +       xga_font_data.o                                                  \
         xtea.o                                                           \
  
  OBJS-$(CONFIG_LZO)                      += lzo.o
Simple merge
index 0000000,850fd75..a44af21
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,40 +1,40 @@@
 - * This file is part of Libav.
+ /*
+  * Copyright (c) 2013 Vittorio Giovara <vittorio.giovara@gmail.com>
+  *
 - * Libav is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
+  *
 - * Libav is distributed in the hope that it will be useful,
++ * 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.
+  *
 - * License along with Libav; if not, write to the Free Software
++ * 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;
+ }
index 0000000,e27dc16..b384ad4
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,147 +1,147 @@@
 - * This file is part of Libav.
+ /*
+  * Copyright (c) 2013 Vittorio Giovara <vittorio.giovara@gmail.com>
+  *
 - * Libav is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
+  *
 - * Libav is distributed in the hope that it will be useful,
++ * 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.
+  *
 - * License along with Libav; if not, write to the Free Software
++ * 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);
@@@ -74,9 -36,9 +74,9 @@@
   * @{
   */
  
 -#define LIBAVUTIL_VERSION_MAJOR 52
 -#define LIBAVUTIL_VERSION_MINOR 20
 -#define LIBAVUTIL_VERSION_MICRO  0
 +#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, \
                                                 LIBAVUTIL_VERSION_MINOR, \