Merge commit '728685f37ab333ca35980bd01766c78d197f784a'
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 27 Jan 2015 17:02:42 +0000 (18:02 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 27 Jan 2015 17:03:43 +0000 (18:03 +0100)
* commit '728685f37ab333ca35980bd01766c78d197f784a':
  Add a side data type for audio service type.

Conflicts:
doc/APIchanges
libavcodec/avcodec.h
libavcodec/version.h
libavutil/frame.h
libavutil/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
doc/APIchanges
libavcodec/avcodec.h
libavcodec/utils.c
libavcodec/version.h
libavfilter/af_ashowinfo.c
libavutil/frame.h
libavutil/version.h

diff --cc doc/APIchanges
@@@ -15,43 -13,33 +15,47 @@@ libavutil:     2014-08-0
  
  API changes, most recent first:
  
 -2014-11-xx - xxxxxxx - lavc 56.12.0, lavu 54.8.0 - avcodec.h, frame.h
++2015-01-xx - xxxxxxx - lavc 56.12.0, lavu 54.8.0 - avcodec.h, frame.h
+   Add AV_PKT_DATA_AUDIO_SERVICE_TYPE and AV_FRAME_DATA_AUDIO_SERVICE_TYPE for
+   storing the audio service type as side data.
 -201x-xx-xx - xxxxxxx - lavc 56.10.0 - vdpau.h
 +2015-01-11 - 007c33d - lavd 56.4.100 - avdevice.h
 +  Add avdevice_list_input_sources().
 +  Add avdevice_list_output_sinks().
 +
 +2014-12-27 - d7aaeea / c220a60 - lavc 56.19.100 / 56.10.0 - vdpau.h
    Add av_vdpau_get_surface_parameters().
  
 -201x-xx-xx - xxxxxxx - lavc 56.9.0 - avcodec.h
 +2014-12-27 - ddb9a24 / 6c99c92 - lavc 56.18.100 / 56.9.0 - avcodec.h
    Add AV_HWACCEL_FLAG_ALLOW_HIGH_DEPTH flag to av_vdpau_bind_context().
  
 -201x-xx-xx - xxxxxxx - lavc 56.8.0 - avcodec.h
 +2014-12-27 - d16079a / 57b6704 - lavc 56.17.100 / 56.8.0 - avcodec.h
    Add AVCodecContext.sw_pix_fmt.
  
 -2014-11-xx - xxxxxxx - lavu 54.6.0 - imgutils.h
 -  Add utility functions for image manipulation: av_image_get_buffer_size()
 -  av_image_fill_arrays() and av_image_copy_to_buffer().
 +2014-12-04 - 6e9ac02 - lavc 56.14.100 - dv_profile.h
 +  Add av_dv_codec_profile2().
  
 -2014-11-xx - xxxxxxx - lavf 56.06.3 - avformat.h
 -  Add AVFormatContext.avoid_negative_ts.
 +-------- 8< --------- FFmpeg 2.5 was cut here -------- 8< ---------
  
 -2014-11-xx - xxxxxxx - lavc 56.6.0 - vorbis_parser.h
 -  Add a public API for parsing vorbis packets.
 +2014-11-21 - ab922f9 - lavu 54.15.100 - dict.h
 +   Add av_dict_get_string().
 +
 +2014-11-18 - a54a51c - lavu 54.14.100 - float_dsp.h
 +  Add avpriv_float_dsp_alloc().
  
 -2014-10-xx - xxxxxxx - lavu 54.5.0 - time.h
 -  Add av_gettime_relative().
 +2014-11-16 - 6690d4c3 - lavf 56.13.100 - avformat.h
 +  Add AVStream.recommended_encoder_configuration with accessors.
 +
 +2014-11-16 - bee5844d - lavu 54.13.100 - opt.h
 +  Add av_opt_serialize().
 +
 +2014-11-16 - eec69332 - lavu 54.12.100 - opt.h
 +  Add av_opt_is_set_to_default().
 +
 +2014-11-06 - 44fa267 / 5e80fb7 - lavc 56.11.100 / 56.6.0 - vorbis_parser.h
 +  Add a public API for parsing vorbis packets.
  
 -2014-10-xx - xxxxxxx - lavc 56.5.0 - avcodec.h
 +2014-10-15 - 17085a0 / 7ea1b34 - lavc 56.7.100 / 56.5.0 - avcodec.h
    Replace AVCodecContext.time_base used for decoding
    with AVCodecContext.framerate.
  
@@@ -1032,68 -919,10 +1032,74 @@@ enum AVPacketSideDataType 
      AV_PKT_DATA_STEREO3D,
  
      /**
+      * This side data should be associated with an audio stream and corresponds
+      * to enum AVAudioServiceType.
+      */
+     AV_PKT_DATA_AUDIO_SERVICE_TYPE,
++
++    /**
 +     * Recommmends skipping the specified number of samples
 +     * @code
 +     * u32le number of samples to skip from start of this packet
 +     * u32le number of samples to skip from end of this packet
 +     * u8    reason for start skip
 +     * u8    reason for end   skip (0=padding silence, 1=convergence)
 +     * @endcode
 +     */
 +    AV_PKT_DATA_SKIP_SAMPLES=70,
 +
 +    /**
 +     * An AV_PKT_DATA_JP_DUALMONO side data packet indicates that
 +     * the packet may contain "dual mono" audio specific to Japanese DTV
 +     * and if it is true, recommends only the selected channel to be used.
 +     * @code
 +     * u8    selected channels (0=mail/left, 1=sub/right, 2=both)
 +     * @endcode
 +     */
 +    AV_PKT_DATA_JP_DUALMONO,
 +
 +    /**
 +     * A list of zero terminated key/value strings. There is no end marker for
 +     * the list, so it is required to rely on the side data size to stop.
 +     */
 +    AV_PKT_DATA_STRINGS_METADATA,
 +
 +    /**
 +     * Subtitle event position
 +     * @code
 +     * u32le x1
 +     * u32le y1
 +     * u32le x2
 +     * u32le y2
 +     * @endcode
 +     */
 +    AV_PKT_DATA_SUBTITLE_POSITION,
 +
 +    /**
 +     * Data found in BlockAdditional element of matroska container. There is
 +     * no end marker for the data, so it is required to rely on the side data
 +     * size to recognize the end. 8 byte id (as found in BlockAddId) followed
 +     * by data.
 +     */
 +    AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL,
 +
 +    /**
 +     * The optional first identifier line of a WebVTT cue.
 +     */
 +    AV_PKT_DATA_WEBVTT_IDENTIFIER,
 +
 +    /**
 +     * The optional settings (rendering instructions) that immediately
 +     * follow the timestamp specifier of a WebVTT cue.
 +     */
 +    AV_PKT_DATA_WEBVTT_SETTINGS,
 +
 +    /**
 +     * A list of zero terminated key/value strings. There is no end marker for
 +     * the list, so it is required to rely on the side data size to stop. This
 +     * side data includes updated metadata which appeared in the stream.
 +     */
 +    AV_PKT_DATA_METADATA_UPDATE,
  };
  
  typedef struct AVPacketSideData {
@@@ -746,49 -569,55 +746,50 @@@ int ff_init_buffer_info(AVCodecContext 
          { AV_PKT_DATA_REPLAYGAIN ,   AV_FRAME_DATA_REPLAYGAIN },
          { AV_PKT_DATA_DISPLAYMATRIX, AV_FRAME_DATA_DISPLAYMATRIX },
          { AV_PKT_DATA_STEREO3D,      AV_FRAME_DATA_STEREO3D },
+         { AV_PKT_DATA_AUDIO_SERVICE_TYPE, AV_FRAME_DATA_AUDIO_SERVICE_TYPE },
      };
  
 -    frame->color_primaries = avctx->color_primaries;
 -    frame->color_trc       = avctx->color_trc;
 -    frame->colorspace      = avctx->colorspace;
 -    frame->color_range     = avctx->color_range;
 -    frame->chroma_location = avctx->chroma_sample_location;
 -
 -    frame->reordered_opaque = avctx->reordered_opaque;
 -    if (!pkt) {
 -        frame->pkt_pts = AV_NOPTS_VALUE;
 -        return 0;
 -    }
 -
 -    frame->pkt_pts = pkt->pts;
 -
 -    for (i = 0; i < FF_ARRAY_ELEMS(sd); i++) {
 -        int size;
 -        uint8_t *packet_sd = av_packet_get_side_data(pkt, sd[i].packet, &size);
 -        if (packet_sd) {
 -            AVFrameSideData *frame_sd = av_frame_new_side_data(frame,
 -                                                               sd[i].frame,
 -                                                               size);
 -            if (!frame_sd)
 -                return AVERROR(ENOMEM);
 -
 -            memcpy(frame_sd->data, packet_sd, size);
 +    if (pkt) {
 +        frame->pkt_pts = pkt->pts;
 +        av_frame_set_pkt_pos     (frame, pkt->pos);
 +        av_frame_set_pkt_duration(frame, pkt->duration);
 +        av_frame_set_pkt_size    (frame, pkt->size);
 +
 +        for (i = 0; i < FF_ARRAY_ELEMS(sd); i++) {
 +            int size;
 +            uint8_t *packet_sd = av_packet_get_side_data(pkt, sd[i].packet, &size);
 +            if (packet_sd) {
 +                AVFrameSideData *frame_sd = av_frame_new_side_data(frame,
 +                                                                   sd[i].frame,
 +                                                                   size);
 +                if (!frame_sd)
 +                    return AVERROR(ENOMEM);
 +
 +                memcpy(frame_sd->data, packet_sd, size);
 +            }
          }
 +    } else {
 +        frame->pkt_pts = AV_NOPTS_VALUE;
 +        av_frame_set_pkt_pos     (frame, -1);
 +        av_frame_set_pkt_duration(frame, 0);
 +        av_frame_set_pkt_size    (frame, -1);
      }
 +    frame->reordered_opaque = avctx->reordered_opaque;
  
 -    return 0;
 -}
 -
 -int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags)
 -{
 -    const AVHWAccel *hwaccel = avctx->hwaccel;
 -    int override_dimensions = 1;
 -    int ret;
 -
 -    switch (avctx->codec_type) {
 +    if (frame->color_primaries == AVCOL_PRI_UNSPECIFIED)
 +        frame->color_primaries = avctx->color_primaries;
 +    if (frame->color_trc == AVCOL_TRC_UNSPECIFIED)
 +        frame->color_trc = avctx->color_trc;
 +    if (av_frame_get_colorspace(frame) == AVCOL_SPC_UNSPECIFIED)
 +        av_frame_set_colorspace(frame, avctx->colorspace);
 +    if (av_frame_get_color_range(frame) == AVCOL_RANGE_UNSPECIFIED)
 +        av_frame_set_color_range(frame, avctx->color_range);
 +    if (frame->chroma_location == AVCHROMA_LOC_UNSPECIFIED)
 +        frame->chroma_location = avctx->chroma_sample_location;
 +
 +    switch (avctx->codec->type) {
      case AVMEDIA_TYPE_VIDEO:
 -        if (frame->width <= 0 || frame->height <= 0) {
 -            frame->width  = FFMAX(avctx->width, avctx->coded_width);
 -            frame->height = FFMAX(avctx->height, avctx->coded_height);
 -            override_dimensions = 0;
 -        }
 -        if (frame->format < 0)
 -            frame->format              = avctx->pix_fmt;
 +        frame->format              = avctx->pix_fmt;
          if (!frame->sample_aspect_ratio.num)
              frame->sample_aspect_ratio = avctx->sample_aspect_ratio;
  
@@@ -29,8 -29,8 +29,8 @@@
  #include "libavutil/version.h"
  
  #define LIBAVCODEC_VERSION_MAJOR 56
- #define LIBAVCODEC_VERSION_MINOR  20
 -#define LIBAVCODEC_VERSION_MINOR 12
 -#define LIBAVCODEC_VERSION_MICRO  0
++#define LIBAVCODEC_VERSION_MINOR  21
 +#define LIBAVCODEC_VERSION_MICRO 100
  
  #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
                                                 LIBAVCODEC_VERSION_MINOR, \
Simple merge
@@@ -84,28 -84,15 +84,34 @@@ enum AVFrameSideDataType 
      AV_FRAME_DATA_DISPLAYMATRIX,
      /**
       * Active Format Description data consisting of a single byte as specified
 -     * in ETSI TS 101 154 using enum AVActiveFormatDescription.
 +     * in ETSI TS 101 154 using AVActiveFormatDescription enum.
       */
      AV_FRAME_DATA_AFD,
 +    /**
 +     * Motion vectors exported by some codecs (on demand through the export_mvs
 +     * flag set in the libavcodec AVCodecContext flags2 option).
 +     * The data is the AVMotionVector struct defined in
 +     * libavutil/motion_vector.h.
 +     */
 +    AV_FRAME_DATA_MOTION_VECTORS,
 +    /**
 +     * Recommmends skipping the specified number of samples. This is exported
 +     * only if the "skip_manual" AVOption is set in libavcodec.
 +     * This has the same format as AV_PKT_DATA_SKIP_SAMPLES.
 +     * @code
 +     * u32le number of samples to skip from start of this packet
 +     * u32le number of samples to skip from end of this packet
 +     * u8    reason for start skip
 +     * u8    reason for end   skip (0=padding silence, 1=convergence)
 +     * @endcode
 +     */
 +    AV_FRAME_DATA_SKIP_SAMPLES,
+     /**
+      * This side data must be associated with an audio frame and corresponds to
+      * enum AVAudioServiceType defined in avcodec.h.
+      */
+     AV_FRAME_DATA_AUDIO_SERVICE_TYPE,
  };
  
  enum AVActiveFormatDescription {
@@@ -55,9 -53,9 +55,9 @@@
   * @{
   */
  
 -#define LIBAVUTIL_VERSION_MAJOR 54
 -#define LIBAVUTIL_VERSION_MINOR  8
 -#define LIBAVUTIL_VERSION_MICRO  0
 +#define LIBAVUTIL_VERSION_MAJOR  54
- #define LIBAVUTIL_VERSION_MINOR  17
++#define LIBAVUTIL_VERSION_MINOR  18
 +#define LIBAVUTIL_VERSION_MICRO 100
  
  #define LIBAVUTIL_VERSION_INT   AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
                                                 LIBAVUTIL_VERSION_MINOR, \