Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 22 Jul 2012 03:01:09 +0000 (05:01 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 22 Jul 2012 03:05:02 +0000 (05:05 +0200)
* qatar/master:
  x86: swscale: Place inline assembly code under appropriate #ifdefs
  rtsp: remove terminal comma in FF_RTP_FLAG_OPTS macro.
  configure: Remove redundant RTMPT/RTMPTS dependencies
  configure: add filtering of host cflags/ldflags
  configure: initialise all flag filters at the same place
  configure: add filtering of linker flags
  configure: name some variables more consistently
  configure: remove filter_cppflags
  configure: set icc_version where it is needed
  mpegenc: remove disabled code

Conflicts:
configure
libavformat/movenc.c
libswscale/x86/swscale_mmx.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
configure
libavformat/movenc.c
libavformat/mpegenc.c
libavformat/rtpenc.c
libavformat/rtpenc.h
libavformat/rtsp.c
libswscale/x86/rgb2rgb.c
libswscale/x86/swscale_mmx.c
libswscale/x86/yuv2rgb_mmx.c

diff --cc configure
+++ b/configure
@@@ -635,15 -589,11 +635,15 @@@ add_cppflags()
  }
  
  add_cflags(){
-     append CFLAGS $($filter_cflags "$@")
+     append CFLAGS $($cflags_filter "$@")
  }
  
-     append CXXFLAGS $($filter_cflags "$@")
 +add_cxxflags(){
++    append CXXFLAGS $($cflags_filter "$@")
 +}
 +
  add_asflags(){
-     append ASFLAGS $($filter_asflags "$@")
+     append ASFLAGS $($asflags_filter "$@")
  }
  
  add_ldflags(){
@@@ -715,7 -664,9 +723,9 @@@ check_ld()
      for f; do
          test "${f}" = "${f#-l}" && flags="$flags $f" || libs="$libs $f"
      done
-     check_$type $($filter_cflags $flags) || return
 -    check_cc $($cflags_filter $flags) || return
++    check_$type $($cflags_filter $flags) || return
+     flags=$($ldflags_filter $flags)
+     libs=$($ldflags_filter $libs)
      check_cmd $ld $LDFLAGS $flags -o $TMPE $TMPO $libs $extralibs
  }
  
@@@ -749,17 -699,9 +758,17 @@@ int x
  EOF
  }
  
-     set -- $($filter_cflags "$@")
 +check_cxxflags(){
 +    log check_cxxflags "$@"
++    set -- $($cflags_filter "$@")
 +    check_cxx "$@" <<EOF && append CXXFLAGS "$@"
 +int x;
 +EOF
 +}
 +
  test_ldflags(){
      log test_ldflags "$@"
 -    check_ld "$@" <<EOF
 +    check_ld "cc" "$@" <<EOF
  int main(void){ return 0; }
  EOF
  }
@@@ -1941,9 -1715,12 +1949,13 @@@ LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LI
  SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
  SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
  
+ asflags_filter=echo
+ cflags_filter=echo
+ ldflags_filter=echo
  AS_O='-o $@'
  CC_O='-o $@'
 +CXX_O='-o $@'
  
  host_cflags='-D_ISOC99_SOURCE -D_XOPEN_SOURCE=600 -O3 -g'
  host_libs='-lm'
@@@ -52,8 -51,8 +52,8 @@@ static const AVOption options[] = 
      { "separate_moof", "Write separate moof/mdat atoms for each track", 0, AV_OPT_TYPE_CONST, {.dbl = FF_MOV_FLAG_SEPARATE_MOOF}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" },
      { "frag_custom", "Flush fragments on caller requests", 0, AV_OPT_TYPE_CONST, {.dbl = FF_MOV_FLAG_FRAG_CUSTOM}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" },
      { "isml", "Create a live smooth streaming feed (for pushing to a publishing point)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_MOV_FLAG_ISML}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" },
-     FF_RTP_FLAG_OPTS(MOVMuxContext, rtp_flags)
+     FF_RTP_FLAG_OPTS(MOVMuxContext, rtp_flags),
 -    { "skip_iods", "Skip writing iods atom.", offsetof(MOVMuxContext, iods_skip), AV_OPT_TYPE_INT, {.dbl = 0}, 0, 1, AV_OPT_FLAG_ENCODING_PARAM},
 +    { "skip_iods", "Skip writing iods atom.", offsetof(MOVMuxContext, iods_skip), AV_OPT_TYPE_INT, {.dbl = 1}, 0, 1, AV_OPT_FLAG_ENCODING_PARAM},
      { "iods_audio_profile", "iods audio profile atom.", offsetof(MOVMuxContext, iods_audio_profile), AV_OPT_TYPE_INT, {.dbl = -1}, -1, 255, AV_OPT_FLAG_ENCODING_PARAM},
      { "iods_video_profile", "iods video profile atom.", offsetof(MOVMuxContext, iods_video_profile), AV_OPT_TYPE_INT, {.dbl = -1}, -1, 255, AV_OPT_FLAG_ENCODING_PARAM},
      { "frag_duration", "Maximum fragment duration", offsetof(MOVMuxContext, max_fragment_duration), AV_OPT_TYPE_INT, {.dbl = 0}, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM},
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -201,67 -201,8 +203,69 @@@ void updateMMXDitherTables(SwsContext *
      }
  }
  
 +#if HAVE_MMX2
 +static void yuv2yuvX_sse3(const int16_t *filter, int filterSize,
 +                           const int16_t **src, uint8_t *dest, int dstW,
 +                           const uint8_t *dither, int offset)
 +{
 +    if(((int)dest) & 15){
 +        return yuv2yuvX_MMX2(filter, filterSize, src, dest, dstW, dither, offset);
 +    }
 +    if (offset) {
 +        __asm__ volatile("movq       (%0), %%xmm3\n\t"
 +                         "movdqa    %%xmm3, %%xmm4\n\t"
 +                         "psrlq       $24, %%xmm3\n\t"
 +                         "psllq       $40, %%xmm4\n\t"
 +                         "por       %%xmm4, %%xmm3\n\t"
 +                         :: "r"(dither)
 +                         );
 +    } else {
 +        __asm__ volatile("movq       (%0), %%xmm3\n\t"
 +                         :: "r"(dither)
 +                         );
 +    }
 +    __asm__ volatile(
 +        "pxor      %%xmm0, %%xmm0\n\t"
 +        "punpcklbw %%xmm0, %%xmm3\n\t"
 +        "psraw        $4, %%xmm3\n\t"
 +        "movdqa    %%xmm3, %%xmm4\n\t"
 +        "movdqa    %%xmm3, %%xmm7\n\t"
 +        "movl %3, %%ecx\n\t"
 +        "mov                                 %0, %%"REG_d"  \n\t"\
 +        "mov                        (%%"REG_d"), %%"REG_S"  \n\t"\
 +        ".p2align                             4             \n\t" /* FIXME Unroll? */\
 +        "1:                                                 \n\t"\
 +        "movddup                  8(%%"REG_d"), %%xmm0      \n\t" /* filterCoeff */\
 +        "movdqa              (%%"REG_S", %%"REG_c", 2), %%xmm2      \n\t" /* srcData */\
 +        "movdqa            16(%%"REG_S", %%"REG_c", 2), %%xmm5      \n\t" /* srcData */\
 +        "add                                $16, %%"REG_d"  \n\t"\
 +        "mov                        (%%"REG_d"), %%"REG_S"  \n\t"\
 +        "test                         %%"REG_S", %%"REG_S"  \n\t"\
 +        "pmulhw                           %%xmm0, %%xmm2      \n\t"\
 +        "pmulhw                           %%xmm0, %%xmm5      \n\t"\
 +        "paddw                            %%xmm2, %%xmm3      \n\t"\
 +        "paddw                            %%xmm5, %%xmm4      \n\t"\
 +        " jnz                                1b             \n\t"\
 +        "psraw                               $3, %%xmm3      \n\t"\
 +        "psraw                               $3, %%xmm4      \n\t"\
 +        "packuswb                         %%xmm4, %%xmm3      \n\t"
 +        "movntdq                          %%xmm3, (%1, %%"REG_c")\n\t"
 +        "add                         $16, %%"REG_c"         \n\t"\
 +        "cmp                          %2, %%"REG_c"         \n\t"\
 +        "movdqa    %%xmm7, %%xmm3\n\t"
 +        "movdqa    %%xmm7, %%xmm4\n\t"
 +        "mov                                 %0, %%"REG_d"  \n\t"\
 +        "mov                        (%%"REG_d"), %%"REG_S"  \n\t"\
 +        "jb                                  1b             \n\t"\
 +        :: "g" (filter),
 +           "r" (dest-offset), "g" ((x86_reg)(dstW+offset)), "m" (offset)
 +        : "%"REG_d, "%"REG_S, "%"REG_c
 +    );
 +}
 +#endif
 +
+ #endif /* HAVE_INLINE_ASM */
  #define SCALE_FUNC(filter_n, from_bpc, to_bpc, opt) \
  extern void ff_hscale ## from_bpc ## to ## to_bpc ## _ ## filter_n ## _ ## opt( \
                                                  SwsContext *c, int16_t *data, \
@@@ -372,11 -310,8 +377,12 @@@ void ff_sws_init_swScale_mmx(SwsContex
  #if HAVE_MMX2
      if (cpu_flags & AV_CPU_FLAG_MMX2)
          sws_init_swScale_MMX2(c);
 +    if (cpu_flags & AV_CPU_FLAG_SSE3){
 +        if(c->use_mmx_vfilter && !(c->flags & SWS_ACCURATE_RND))
 +            c->yuv2planeX = yuv2yuvX_sse3;
 +    }
  #endif
+ #endif /* HAVE_INLINE_ASM */
  
  #if HAVE_YASM
  #define ASSIGN_SCALE_FUNC2(hscalefn, filtersize, opt1, opt2) do { \
@@@ -64,10 -66,17 +66,13 @@@ DECLARE_ASM_CONST(8, uint64_t, pb_07) 
  #include "yuv2rgb_template.c"
  #endif /* HAVE_MMX2 */
  
+ #endif /* HAVE_INLINE_ASM */
  SwsFunc ff_yuv2rgb_init_mmx(SwsContext *c)
  {
+ #if HAVE_INLINE_ASM
      int cpu_flags = av_get_cpu_flags();
  
 -    if (c->srcFormat != PIX_FMT_YUV420P &&
 -        c->srcFormat != PIX_FMT_YUVA420P)
 -        return NULL;
 -
  #if HAVE_MMX2
      if (cpu_flags & AV_CPU_FLAG_MMX2) {
          switch (c->dstFormat) {