Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 13 Sep 2012 13:35:50 +0000 (15:35 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 13 Sep 2012 13:35:50 +0000 (15:35 +0200)
* qatar/master:
  os_support: Choose between direct.h and io.h using a configure check
  os_support: Include io.h instead of direct.h on mingw32ce
  x86: ac3dsp: Only refer to the ac3_downmix_sse symbol if it has been declared
  swscale: Remove two bogus asserts
  ac3: move ac3_downmix() from dsputil to ac3dsp
  lavr/audio_mix_matrix: acknowledge the existence of LFE2.
  mlp_parser: avoid mapping multiple disctinct TrueHD channels to the same Libav channel.
  lavu/audioconvert: add a second low frequency channel.

Conflicts:
doc/APIchanges
libavcodec/ac3dsp.c
libavcodec/ac3dsp.h
libavcodec/mlp_parser.c
libavutil/audioconvert.c
libavutil/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
16 files changed:
1  2 
configure
doc/APIchanges
libavcodec/ac3dec.c
libavcodec/ac3dec.h
libavcodec/ac3dsp.c
libavcodec/ac3dsp.h
libavcodec/dsputil.c
libavcodec/dsputil.h
libavcodec/mlp_parser.c
libavcodec/x86/ac3dsp_init.c
libavcodec/x86/dsputil_mmx.c
libavformat/os_support.h
libavutil/audioconvert.c
libavutil/audioconvert.h
libavutil/version.h
libswscale/swscale.c

diff --cc configure
+++ b/configure
@@@ -3502,13 -3175,12 +3503,14 @@@ check_func_headers windows.h GetSystemT
  check_func_headers windows.h MapViewOfFile
  check_func_headers windows.h Sleep
  check_func_headers windows.h VirtualAlloc
 +check_func_headers glob.h glob
  
+ check_header direct.h
  check_header dlfcn.h
  check_header dxva.h
 -check_header dxva2api.h
 +check_header dxva2api.h -D_WIN32_WINNT=0x0600
  check_header io.h
 +check_header libcrystalhd/libcrystalhd_if.h
  check_header malloc.h
  check_header poll.h
  check_header sys/mman.h
diff --cc doc/APIchanges
@@@ -15,74 -13,9 +15,77 @@@ libavutil:     2011-04-1
  
  API changes, most recent first:
  
 +2012-09-01 - xxxxxxx - lavu 51.72.100 - parseutils.h
 +  Add av_small_strptime() time parsing function.
 +
 +  Can be used as a stripped-down replacement for strptime(), on
 +  systems which do not support it.
 +
 +2012-08-13 - xxxxxxx - lavfi 3.8.100 - avfilter.h
 +  Add avfilter_get_class() function, and priv_class field to AVFilter
 +  struct.
 +
 +2012-08-13 - xxxxxxx - lavu 51.69.100 - opt.h
 +  Add AV_OPT_FLAG_FILTERING_PARAM symbol in opt.h.
 +
 +2012-07-31 - xxxxxxx - lavc 54.46.100
 +  Add channels field to AVFrame.
 +
 +2012-07-30 - xxxxxxx - lavu 51.66.100
 +  Add av_get_channel_description()
 +  and av_get_standard_channel_layout() functions.
 +
 +2012-07-20 - xxxxxxx - lavc 54.43.100
 +  Add decode_error_flags field to AVFrame.
 +
 +2012-07-20 - xxxxxxx - lavf 54.18.100
 +  Add avformat_match_stream_specifier() function.
 +
 +2012-07-14 - xxxxxxx - lavc 54.38.100 - avcodec.h
 +  Add metadata to AVFrame, and the accessor functions
 +  av_frame_get_metadata() and av_frame_set_metadata().
 +
 +2012-07-10 - xxxxxxx - lavc 54.33.100
 +  Add av_fast_padded_mallocz().
 +
 +2012-07-10 - xxxxxxx - lavfi 3.2.0 - avfilter.h
 +  Add init_opaque() callback to AVFilter struct.
 +
 +2012-06-26 - xxxxxxx - lavu 51.63.100 - imgutils.h
 +  Add functions to libavutil/imgutils.h:
 +  av_image_get_buffer_size()
 +  av_image_fill_arrays()
 +  av_image_copy_to_buffer()
 +
 +2012-06-24 - xxxxxxx - lavu 51.62.100 - version.h
 +  version moved from avutil.h to version.h
 +
 +2012-04-11 - xxxxxxx - lavu 51.58.100 - error.h
 +  Add av_make_error_string() and av_err2str() utilities to
 +  libavutil/error.h.
 +
 +2012-06-05 - xxxxxxx - lavc 54.24.100
 +  Add pkt_duration field to AVFrame.
 +
 +2012-05-24 - xxxxxxx - lavu 51.54.100
 +  Move AVPALETTE_SIZE and AVPALETTE_COUNT macros from
 +  libavcodec/avcodec.h to libavutil/pixfmt.h.
 +
 +2012-05-07 - xxxxxxx - lavf 54.5.100
 +  Add av_guess_sample_aspect_ratio() function.
 +
 +2012-04-20 - xxxxxxx - lavfi 2.70.100
 +  Add avfilter_unref_bufferp() to avfilter.h.
 +
 +2012-04-12 - xxxxxxx - lavfi 2.68.100
 +  Install libavfilter/asrc_abuffer.h public header.
 +
 +2012-03-26 - a67d9cf - lavfi 2.66.100
 +  Add avfilter_fill_frame_from_{audio_,}buffer_ref() functions.
 +
+ 2012-09-12 - xxxxxxx - lavu 51.41.0 - audioconvert.h
+   Added AV_CH_LOW_FREQUENCY_2 channel mask value.
  2012-09-04 - xxxxxxx - lavu 51.40.0 - opt.h
    Reordered the fields in default_val in AVOption, changed which
    default_val field is used for which AVOptionType.
Simple merge
Simple merge
@@@ -172,48 -171,31 +172,73 @@@ static void ac3_extract_exponents_c(uin
      }
  }
  
 +static void ac3_sum_square_butterfly_int32_c(int64_t sum[4],
 +                                             const int32_t *coef0,
 +                                             const int32_t *coef1,
 +                                             int len)
 +{
 +    int i;
 +
 +    sum[0] = sum[1] = sum[2] = sum[3] = 0;
 +
 +    for (i = 0; i < len; i++) {
 +        int lt = coef0[i];
 +        int rt = coef1[i];
 +        int md = lt + rt;
 +        int sd = lt - rt;
 +        MAC64(sum[0], lt, lt);
 +        MAC64(sum[1], rt, rt);
 +        MAC64(sum[2], md, md);
 +        MAC64(sum[3], sd, sd);
 +    }
 +}
 +
 +static void ac3_sum_square_butterfly_float_c(float sum[4],
 +                                             const float *coef0,
 +                                             const float *coef1,
 +                                             int len)
 +{
 +    int i;
 +
 +    sum[0] = sum[1] = sum[2] = sum[3] = 0;
 +
 +    for (i = 0; i < len; i++) {
 +        float lt = coef0[i];
 +        float rt = coef1[i];
 +        float md = lt + rt;
 +        float sd = lt - rt;
 +        sum[0] += lt * lt;
 +        sum[1] += rt * rt;
 +        sum[2] += md * md;
 +        sum[3] += sd * sd;
 +    }
 +}
 +
+ static void ac3_downmix_c(float (*samples)[256], float (*matrix)[2],
+                           int out_ch, int in_ch, int len)
+ {
+     int i, j;
+     float v0, v1;
+     if (out_ch == 2) {
+         for (i = 0; i < len; i++) {
+             v0 = v1 = 0.0f;
+             for (j = 0; j < in_ch; j++) {
+                 v0 += samples[j][i] * matrix[j][0];
+                 v1 += samples[j][i] * matrix[j][1];
+             }
+             samples[0][i] = v0;
+             samples[1][i] = v1;
+         }
+     } else if (out_ch == 1) {
+         for (i = 0; i < len; i++) {
+             v0 = 0.0f;
+             for (j = 0; j < in_ch; j++)
+                 v0 += samples[j][i] * matrix[j][0];
+             samples[0][i] = v0;
+         }
+     }
+ }
  av_cold void ff_ac3dsp_init(AC3DSPContext *c, int bit_exact)
  {
      c->ac3_exponent_min = ac3_exponent_min_c;
      c->update_bap_counts = ac3_update_bap_counts_c;
      c->compute_mantissa_size = ac3_compute_mantissa_size_c;
      c->extract_exponents = ac3_extract_exponents_c;
 +    c->sum_square_butterfly_int32 = ac3_sum_square_butterfly_int32_c;
 +    c->sum_square_butterfly_float = ac3_sum_square_butterfly_float_c;
+     c->downmix = ac3_downmix_c;
  
      if (ARCH_ARM)
          ff_ac3dsp_init_arm(c, bit_exact);
@@@ -126,11 -126,8 +126,14 @@@ typedef struct AC3DSPContext 
  
      void (*extract_exponents)(uint8_t *exp, int32_t *coef, int nb_coefs);
  
 +    void (*sum_square_butterfly_int32)(int64_t sum[4], const int32_t *coef0,
 +                                       const int32_t *coef1, int len);
 +
 +    void (*sum_square_butterfly_float)(float sum[4], const float *coef0,
 +                                       const float *coef1, int len);
++
+     void (*downmix)(float (*samples)[256], float (*matrix)[2], int out_ch,
+                     int in_ch, int len);
  } AC3DSPContext;
  
  void ff_ac3dsp_init    (AC3DSPContext *c, int bit_exact);
@@@ -36,9 -36,7 +36,8 @@@
  #include "mathops.h"
  #include "mpegvideo.h"
  #include "config.h"
- #include "ac3dec.h"
  #include "vorbis.h"
 +#include "diracdsp.h"
  
  uint8_t ff_cropTbl[256 + 2 * MAX_NEG_CROP] = {0, };
  uint32_t ff_squareTbl[512] = {0, };
Simple merge
Simple merge
Simple merge
  #include "libavcodec/h264dsp.h"
  #include "libavcodec/mpegvideo.h"
  #include "libavcodec/simple_idct.h"
- #include "libavcodec/ac3dec.h"
  #include "dsputil_mmx.h"
  #include "idct_xvid.h"
 +#include "diracdsp_mmx.h"
  
  //#undef NDEBUG
  //#include <assert.h>
Simple merge
  #include "avstring.h"
  #include "avutil.h"
  #include "audioconvert.h"
 +#include "bprint.h"
  #include "common.h"
  
 -static const char * const channel_names[] = {
 -    [0]  = "FL",        /* front left */
 -    [1]  = "FR",        /* front right */
 -    [2]  = "FC",        /* front center */
 -    [3]  = "LFE",       /* low frequency */
 -    [4]  = "BL",        /* back left */
 -    [5]  = "BR",        /* back right */
 -    [6]  = "FLC",       /* front left-of-center  */
 -    [7]  = "FRC",       /* front right-of-center */
 -    [8]  = "BC",        /* back-center */
 -    [9]  = "SL",        /* side left */
 -    [10] = "SR",        /* side right */
 -    [11] = "TC",        /* top center */
 -    [12] = "TFL",       /* top front left */
 -    [13] = "TFC",       /* top front center */
 -    [14] = "TFR",       /* top front right */
 -    [15] = "TBL",       /* top back left */
 -    [16] = "TBC",       /* top back center */
 -    [17] = "TBR",       /* top back right */
 -    [29] = "DL",        /* downmix left */
 -    [30] = "DR",        /* downmix right */
 -    [31] = "WL",        /* wide left */
 -    [32] = "WR",        /* wide right */
 -    [33] = "SDL",       /* surround direct left */
 -    [34] = "SDR",       /* surround direct right */
 -    [35] = "LFE2",      /* low frequency 2 */
 +struct channel_name {
 +    const char *name;
 +    const char *description;
 +};
 +
 +static const struct channel_name channel_names[] = {
 +     [0] = { "FL",        "front left"            },
 +     [1] = { "FR",        "front right"           },
 +     [2] = { "FC",        "front center"          },
 +     [3] = { "LFE",       "low frequency"         },
 +     [4] = { "BL",        "back left"             },
 +     [5] = { "BR",        "back right"            },
 +     [6] = { "FLC",       "front left-of-center"  },
 +     [7] = { "FRC",       "front right-of-center" },
 +     [8] = { "BC",        "back center"           },
 +     [9] = { "SL",        "side left"             },
 +    [10] = { "SR",        "side right"            },
 +    [11] = { "TC",        "top center"            },
 +    [12] = { "TFL",       "top front left"        },
 +    [13] = { "TFC",       "top front center"      },
 +    [14] = { "TFR",       "top front right"       },
 +    [15] = { "TBL",       "top back left"         },
 +    [16] = { "TBC",       "top back center"       },
 +    [17] = { "TBR",       "top back right"        },
 +    [29] = { "DL",        "downmix left"          },
 +    [30] = { "DR",        "downmix right"         },
 +    [31] = { "WL",        "wide left"             },
 +    [32] = { "WR",        "wide right"            },
 +    [33] = { "SDL",       "surround direct left"  },
 +    [34] = { "SDR",       "surround direct right" },
++    [35] = { "LFE2",      "low frequency 2"       },
  };
  
  static const char *get_channel_name(int channel_id)
Simple merge
@@@ -39,8 -37,8 +39,8 @@@
   */
  
  #define LIBAVUTIL_VERSION_MAJOR 51
- #define LIBAVUTIL_VERSION_MINOR 72
 -#define LIBAVUTIL_VERSION_MINOR 41
 -#define LIBAVUTIL_VERSION_MICRO  0
++#define LIBAVUTIL_VERSION_MINOR 73
 +#define LIBAVUTIL_VERSION_MICRO 100
  
  #define LIBAVUTIL_VERSION_INT   AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
                                                 LIBAVUTIL_VERSION_MINOR, \
Simple merge