Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 28 Jul 2012 23:56:31 +0000 (01:56 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 29 Jul 2012 00:16:26 +0000 (02:16 +0200)
* qatar/master: (35 commits)
  h264_idct_10bit: port x86 assembly to cpuflags.
  x86inc: clip num_args to 7 on x86-32.
  x86inc: sync to latest version from x264.
  fft: rename "z" to "zc" to prevent name collision.
  wv: return meaningful error codes.
  wv: return AVERROR_EOF on EOF, not EIO.
  mp3dec: forward errors for av_get_packet().
  mp3dec: remove a pointless local variable.
  mp3dec: remove commented out cruft.
  lavfi: bump minor to mark stabilizing the ABI.
  FATE: add tests for yadif.
  FATE: add a test for delogo video filter.
  FATE: add a test for amix audio filter.
  audiogen: allow specifying random seed as a commandline parameter.
  vc1dec: Override invalid macroblock quantizer
  vc1: avoid reading beyond the last line in vc1_draw_sprites()
  vc1dec: check that coded slice positions and interlacing match.
  vc1dec: Do not ignore ff_vc1_parse_frame_header_adv return value
  configure: Move parts that should not be user-selectable to CONFIG_EXTRA
  lavf: remove commented out cruft in avformat_find_stream_info()
  ...

Conflicts:
Makefile
configure
libavcodec/vc1dec.c
libavcodec/x86/h264_deblock.asm
libavcodec/x86/h264_deblock_10bit.asm
libavcodec/x86/h264dsp_mmx.c
libavfilter/version.h
libavformat/mp3dec.c
libavformat/utils.c
libavformat/wv.c
libavutil/x86/x86inc.asm

Merged-by: Michael Niedermayer <michaelni@gmx.at>
39 files changed:
1  2 
common.mak
configure
libavcodec/vc1dec.c
libavcodec/x86/dsputil_mmx.c
libavcodec/x86/fft_mmx.asm
libavcodec/x86/h264_deblock.asm
libavcodec/x86/h264_deblock_10bit.asm
libavcodec/x86/h264_idct_10bit.asm
libavcodec/x86/h264dsp_mmx.c
libavcodec/x86/rv34dsp.asm
libavcodec/x86/vp3dsp.asm
libavcodec/x86/vp3dsp_init.c
libavcodec/x86/vp56dsp.asm
libavcodec/x86/vp56dsp_init.c
libavdevice/Makefile
libavdevice/alldevices.c
libavdevice/avdevice.h
libavdevice/fbdev.c
libavdevice/jack_audio.c
libavdevice/oss_audio.c
libavdevice/x11grab.c
libavfilter/version.h
libavformat/hls.c
libavformat/mp3dec.c
libavformat/rtpdec.c
libavformat/rtsp.c
libavformat/rtspdec.c
libavformat/rtspenc.c
libavformat/sapenc.c
libavformat/tls.c
libavformat/utils.c
libavformat/wv.c
libavutil/x86/x86inc.asm
library.mak
tests/audiogen.c
tests/fate/filter.mak
tests/ref/fate/filter-delogo
tests/ref/fate/filter-yadif-mode0
tests/ref/fate/filter-yadif-mode1

diff --cc common.mak
@@@ -5,75 -5,6 +5,75 @@@
  # first so "all" becomes default target
  all: all-yes
  
- SILENT = DEPCC DEPAS DEPHOSTCC YASMDEP RM RANLIB
 +ifndef SUBDIR
 +
 +ifndef V
 +Q      = @
 +ECHO   = printf "$(1)\t%s\n" $(2)
 +BRIEF  = CC CXX AS YASM AR LD HOSTCC STRIP CP
-        $($(1)) $($(1)FLAGS) $($(1)_DEPFLAGS) -c $($(1)_O) $<
++SILENT = DEPCC DEPAS DEPHOSTCC DEPYASM RM RANLIB
 +MSG    = $@
 +M      = @$(call ECHO,$(TAG),$@);
 +$(foreach VAR,$(BRIEF), \
 +    $(eval override $(VAR) = @$$(call ECHO,$(VAR),$$(MSG)); $($(VAR))))
 +$(foreach VAR,$(SILENT),$(eval override $(VAR) = @$($(VAR))))
 +$(eval INSTALL = @$(call ECHO,INSTALL,$$(^:$(SRC_DIR)/%=%)); $(INSTALL))
 +endif
 +
 +ALLFFLIBS = avcodec avdevice avfilter avformat avresample avutil postproc swscale swresample
 +
 +# NASM requires -I path terminated with /
 +IFLAGS     := -I. -I$(SRC_PATH)/
 +CPPFLAGS   := $(IFLAGS) $(CPPFLAGS)
 +CFLAGS     += $(ECFLAGS)
 +CCFLAGS     = $(CPPFLAGS) $(CFLAGS)
 +ASFLAGS    := $(CPPFLAGS) $(ASFLAGS)
 +CXXFLAGS   := $(CFLAGS) $(CXXFLAGS)
 +YASMFLAGS  += $(IFLAGS) -I$(SRC_PATH)/libavutil/x86/ -Pconfig.asm
 +HOSTCCFLAGS = $(IFLAGS) $(HOSTCFLAGS)
 +LDFLAGS    := $(ALLFFLIBS:%=-Llib%) $(LDFLAGS)
 +
 +define COMPILE
 +       $(call $(1)DEP,$(1))
-       $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ -x c $<
++       $($(1)) $($(1)FLAGS) $($(1)_DEPFLAGS) $($(1)_C) $($(1)_O) $<
 +endef
 +
 +COMPILE_C = $(call COMPILE,CC)
 +COMPILE_CXX = $(call COMPILE,CXX)
 +COMPILE_S = $(call COMPILE,AS)
 +
 +%.o: %.c
 +      $(COMPILE_C)
 +
 +%.o: %.cpp
 +      $(COMPILE_CXX)
 +
 +%.s: %.c
 +      $(CC) $(CPPFLAGS) $(CFLAGS) -S -o $@ $<
 +
 +%.o: %.S
 +      $(COMPILE_S)
 +
 +%.ho: %.h
++      $(CC) $(CCFLAGS) -c $(CC_O) -x c $<
 +
 +%.ver: %.v
 +      $(Q)sed 's/$$MAJOR/$($(basename $(@F))_VERSION_MAJOR)/' $^ > $@
 +
 +%.c %.h: TAG = GEN
 +
 +# Dummy rule to stop make trying to rebuild removed or renamed headers
 +%.h:
 +      @:
 +
 +# Disable suffix rules.  Most of the builtin rules are suffix rules,
 +# so this saves some time on slow systems.
 +.SUFFIXES:
 +
 +# Do not delete intermediate files from chains of implicit rules
 +$(OBJS):
 +endif
 +
  include $(SRC_PATH)/arch.mak
  
  OBJS      += $(OBJS-yes)
diff --cc configure
+++ b/configure
@@@ -677,16 -630,9 +681,16 @@@ check_cc()
      log check_cc "$@"
      cat > $TMPC
      log_file $TMPC
-     check_cmd $cc $CPPFLAGS $CFLAGS "$@" -c $(cc_o $TMPO) $TMPC
+     check_cmd $cc $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPC
  }
  
 +check_cxx(){
 +    log check_cxx "$@"
 +    cat > $TMPCPP
 +    log_file $TMPCPP
 +    check_cmd $cxx $CPPFLAGS $CFLAGS $CXXFLAGS "$@" -c -o $TMPO $TMPCPP
 +}
 +
  check_cpp(){
      log check_cpp "$@"
      cat > $TMPC
@@@ -1056,12 -951,9 +1059,11 @@@ CONFIG_LIST=
      doc
      dwt
      dxva2
 +    fast_unaligned
      fastdiv
      fft
 +    fontconfig
      frei0r
-     gcrypt
      gnutls
      gpl
      gray
      lsp
      mdct
      memalign_hack
-     mpegaudiodsp
-     nettle
 +    memory_poisoning
      network
      nonfree
 +    openal
      openssl
      pic
 +    postproc
      rdft
-     rtpdec
      runtime_cpudetect
      safe_bitstream_reader
      shared
@@@ -1738,10 -1549,9 +1742,10 @@@ v4l_indev_deps="linux_videodev_h
  v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
  vfwcap_indev_deps="capCreateCaptureWindow vfwcap_defines"
  vfwcap_indev_extralibs="-lavicap32"
- x11_grab_device_indev_deps="x11grab"
 -x11grab_indev_deps="x11grab XShmCreateImage"
++x11grab_indev_deps="x11grab"
  
  # protocols
 +bluray_protocol_deps="libbluray"
  ffrtmpcrypt_protocol_deps="!librtmp_protocol"
  ffrtmpcrypt_protocol_deps_any="gcrypt nettle openssl"
  ffrtmpcrypt_protocol_select="tcp_protocol"
@@@ -1968,10 -1736,13 +1972,14 @@@ asflags_filter=ech
  cflags_filter=echo
  ldflags_filter=echo
  
+ AS_C='-c'
  AS_O='-o $@'
+ CC_C='-c'
+ CC_E='-E -o $@'
  CC_O='-o $@'
 +CXX_O='-o $@'
  LD_O='-o $@'
+ HOSTCC_C='-c'
  HOSTCC_O='-o $@'
  
  host_cflags='-D_ISOC99_SOURCE -D_XOPEN_SOURCE=600 -O3 -g'
@@@ -3874,22 -3423,21 +3886,24 @@@ DEPCCFLAGS=$DEPCCFLAGS \$(CPPFLAGS
  DEPAS=$as
  DEPASFLAGS=$DEPASFLAGS \$(CPPFLAGS)
  YASM=$yasmexe
YASMDEP=$yasmexe
DEPYASM=$yasmexe
  AR=$ar
  RANLIB=$ranlib
 +CP=cp -p
  LN_S=$ln_s
 +STRIP=$strip
  CPPFLAGS=$CPPFLAGS
  CFLAGS=$CFLAGS
 +CXXFLAGS=$CXXFLAGS
  ASFLAGS=$ASFLAGS
+ AS_C=$AS_C
  AS_O=$AS_O
+ CC_C=$CC_C
  CC_O=$CC_O
 +CXX_O=$CXX_O
  LD_O=$LD_O
 -DLLTOOL=$dlltool
  LDFLAGS=$LDFLAGS
 -AVSERVERLDFLAGS=$AVSERVERLDFLAGS
 +FFSERVERLDFLAGS=$FFSERVERLDFLAGS
  SHFLAGS=$SHFLAGS
  YASMFLAGS=$YASMFLAGS
  BUILDSUF=$build_suffix
Simple merge
Simple merge
Simple merge
@@@ -384,12 -384,10 +384,12 @@@ cglobal deblock_h_luma_8, 5,
      RET
  %endmacro
  
- INIT_XMM
- DEBLOCK_LUMA sse2
+ INIT_XMM sse2
+ DEBLOCK_LUMA
 +%if HAVE_AVX
- INIT_AVX
- DEBLOCK_LUMA avx
+ INIT_XMM avx
+ DEBLOCK_LUMA
 +%endif
  
  %else
  
@@@ -503,14 -501,12 +503,14 @@@ cglobal deblock_h_luma_8, 0,
      RET
  %endmacro ; DEBLOCK_LUMA
  
- INIT_MMX
- DEBLOCK_LUMA mmxext, v8, 8
- INIT_XMM
- DEBLOCK_LUMA sse2, v, 16
+ INIT_MMX mmx2
+ DEBLOCK_LUMA v8, 8
+ INIT_XMM sse2
+ DEBLOCK_LUMA v, 16
 +%if HAVE_AVX
- INIT_AVX
- DEBLOCK_LUMA avx, v, 16
+ INIT_XMM avx
+ DEBLOCK_LUMA v, 16
 +%endif
  
  %endif ; ARCH
  
@@@ -779,18 -775,16 +779,18 @@@ cglobal deblock_h_luma_intra_8, 2,
  %endif ; ARCH_X86_64
  %endmacro ; DEBLOCK_LUMA_INTRA
  
- INIT_XMM
- DEBLOCK_LUMA_INTRA sse2, v
+ INIT_XMM sse2
+ DEBLOCK_LUMA_INTRA v
 +%if HAVE_AVX
- INIT_AVX
- DEBLOCK_LUMA_INTRA avx , v
+ INIT_XMM avx
+ DEBLOCK_LUMA_INTRA v
 +%endif
  %if ARCH_X86_64 == 0
- INIT_MMX
- DEBLOCK_LUMA_INTRA mmxext, v8
+ INIT_MMX mmx2
+ DEBLOCK_LUMA_INTRA v8
  %endif
  
- INIT_MMX
+ INIT_MMX mmx2
  
  %macro CHROMA_V_START 0
      dec    r2d      ; alpha-1
@@@ -377,10 -376,10 +376,10 @@@ cglobal deblock_v_luma_10, 5,5,1
      jg .loop
      REP_RET
  
- cglobal deblock_h_luma_10_%1, 5,7,15
+ cglobal deblock_h_luma_10, 5,7,15
      shl        r2d, 2
      shl        r3d, 2
 -    LOAD_AB    m12, m13, r2, r3
 +    LOAD_AB    m12, m13, r2d, r3d
      mov         r2, r1
      add         r2, r1
      add         r2, r1
      REP_RET
  %endmacro
  
- INIT_XMM
- DEBLOCK_LUMA_64 sse2
+ INIT_XMM sse2
+ DEBLOCK_LUMA_64
 +%if HAVE_AVX
- INIT_AVX
- DEBLOCK_LUMA_64 avx
+ INIT_XMM avx
+ DEBLOCK_LUMA_64
  %endif
 +%endif
  
  %macro SWAPMOVA 2
  %ifid %1
@@@ -714,12 -711,10 +713,12 @@@ cglobal deblock_h_luma_intra_10, 4,7,1
      RET
  %endmacro
  
- INIT_XMM
- DEBLOCK_LUMA_INTRA_64 sse2
+ INIT_XMM sse2
+ DEBLOCK_LUMA_INTRA_64
 +%if HAVE_AVX
- INIT_AVX
- DEBLOCK_LUMA_INTRA_64 avx
+ INIT_XMM avx
+ DEBLOCK_LUMA_INTRA_64
 +%endif
  
  %endif
  
@@@ -797,18 -792,16 +796,18 @@@ cglobal deblock_h_luma_intra_10, 4,7,8*
  %endmacro
  
  %if ARCH_X86_64 == 0
- INIT_MMX
- DEBLOCK_LUMA mmxext
- DEBLOCK_LUMA_INTRA mmxext
- INIT_XMM
- DEBLOCK_LUMA sse2
- DEBLOCK_LUMA_INTRA sse2
+ INIT_MMX mmx2
+ DEBLOCK_LUMA
+ DEBLOCK_LUMA_INTRA
+ INIT_XMM sse2
+ DEBLOCK_LUMA
+ DEBLOCK_LUMA_INTRA
 +%if HAVE_AVX
- INIT_AVX
- DEBLOCK_LUMA avx
- DEBLOCK_LUMA_INTRA avx
+ INIT_XMM avx
+ DEBLOCK_LUMA
+ DEBLOCK_LUMA_INTRA
  %endif
 +%endif
  
  ; in: %1=p0, %2=q0, %3=p1, %4=q1, %5=mask, %6=tmp, %7=tmp
  ; out: %1=p0', %2=q0'
@@@ -914,12 -907,10 +913,12 @@@ cglobal deblock_v_chroma_intra_10, 4,6-
  %endmacro
  
  %if ARCH_X86_64 == 0
- INIT_MMX
- DEBLOCK_CHROMA mmxext
+ INIT_MMX mmx2
+ DEBLOCK_CHROMA
  %endif
- INIT_XMM
- DEBLOCK_CHROMA sse2
+ INIT_XMM sse2
+ DEBLOCK_CHROMA
 +%if HAVE_AVX
- INIT_AVX
- DEBLOCK_CHROMA avx
+ INIT_XMM avx
+ DEBLOCK_CHROMA
 +%endif
Simple merge
@@@ -275,20 -275,20 +275,20 @@@ LF_IFUNC(v,  chroma_intra, depth,  avx
  LF_FUNCS( uint8_t,  8)
  LF_FUNCS(uint16_t, 10)
  
 -#if ARCH_X86_32
 +#if ARCH_X86_32 && HAVE_YASM
- LF_FUNC (v8, luma,             8, mmxext)
- static void ff_deblock_v_luma_8_mmxext(uint8_t *pix, int stride, int alpha, int beta, int8_t *tc0)
+ LF_FUNC (v8, luma,             8, mmx2)
+ static void ff_deblock_v_luma_8_mmx2(uint8_t *pix, int stride, int alpha, int beta, int8_t *tc0)
  {
      if((tc0[0] & tc0[1]) >= 0)
-         ff_deblock_v8_luma_8_mmxext(pix+0, stride, alpha, beta, tc0);
+         ff_deblock_v8_luma_8_mmx2(pix+0, stride, alpha, beta, tc0);
      if((tc0[2] & tc0[3]) >= 0)
-         ff_deblock_v8_luma_8_mmxext(pix+8, stride, alpha, beta, tc0+2);
+         ff_deblock_v8_luma_8_mmx2(pix+8, stride, alpha, beta, tc0+2);
  }
- LF_IFUNC(v8, luma_intra,        8, mmxext)
- static void ff_deblock_v_luma_intra_8_mmxext(uint8_t *pix, int stride, int alpha, int beta)
+ LF_IFUNC(v8, luma_intra,        8, mmx2)
+ static void ff_deblock_v_luma_intra_8_mmx2(uint8_t *pix, int stride, int alpha, int beta)
  {
-     ff_deblock_v8_luma_intra_8_mmxext(pix+0, stride, alpha, beta);
-     ff_deblock_v8_luma_intra_8_mmxext(pix+8, stride, alpha, beta);
+     ff_deblock_v8_luma_intra_8_mmx2(pix+0, stride, alpha, beta);
+     ff_deblock_v8_luma_intra_8_mmx2(pix+8, stride, alpha, beta);
  }
  #endif /* ARCH_X86_32 */
  
@@@ -46,10 -46,10 +46,10 @@@ SECTION .tex
  %endmacro
  
  %macro rv34_idct 1
- cglobal rv34_idct_%1_mmx2, 1, 2, 0
+ cglobal rv34_idct_%1, 1, 2, 0
      movsx   r1, word [r0]
      IDCT_DC r1
 -    movd    m0, r1
 +    movd    m0, r1d
      pshufw  m0, m0, 0
      movq    [r0+ 0], m0
      movq    [r0+ 8], m0
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -29,13 -19,11 +29,13 @@@ OBJS-$(CONFIG_OPENAL_INDEV
  OBJS-$(CONFIG_OSS_INDEV)                 += oss_audio.o
  OBJS-$(CONFIG_OSS_OUTDEV)                += oss_audio.o
  OBJS-$(CONFIG_PULSE_INDEV)               += pulse.o
 +OBJS-$(CONFIG_SDL_OUTDEV)                += sdl.o
  OBJS-$(CONFIG_SNDIO_INDEV)               += sndio_common.o sndio_dec.o
  OBJS-$(CONFIG_SNDIO_OUTDEV)              += sndio_common.o sndio_enc.o
 -OBJS-$(CONFIG_V4L2_INDEV)                += v4l2.o
 +OBJS-$(CONFIG_V4L2_INDEV)                += v4l2.o timefilter.o
 +OBJS-$(CONFIG_V4L_INDEV)                 += v4l.o
  OBJS-$(CONFIG_VFWCAP_INDEV)              += vfwcap.o
- OBJS-$(CONFIG_X11_GRAB_DEVICE_INDEV)     += x11grab.o
+ OBJS-$(CONFIG_X11GRAB_INDEV)             += x11grab.o
  
  # external libraries
  OBJS-$(CONFIG_LIBCDIO_INDEV)             += libcdio.o
@@@ -40,22 -41,15 +40,22 @@@ void avdevice_register_all(void
      /* devices */
      REGISTER_INOUTDEV (ALSA, alsa);
      REGISTER_INDEV    (BKTR, bktr);
 +    REGISTER_OUTDEV   (CACA, caca);
 +    REGISTER_INDEV    (DSHOW, dshow);
      REGISTER_INDEV    (DV1394, dv1394);
      REGISTER_INDEV    (FBDEV, fbdev);
 +    REGISTER_INDEV    (IEC61883, iec61883);
      REGISTER_INDEV    (JACK, jack);
 +    REGISTER_INDEV    (LAVFI, lavfi);
 +    REGISTER_INDEV    (OPENAL, openal);
      REGISTER_INOUTDEV (OSS, oss);
      REGISTER_INDEV    (PULSE, pulse);
 +    REGISTER_OUTDEV   (SDL, sdl);
      REGISTER_INOUTDEV (SNDIO, sndio);
      REGISTER_INDEV    (V4L2, v4l2);
 +//    REGISTER_INDEV    (V4L, v4l
      REGISTER_INDEV    (VFWCAP, vfwcap);
-     REGISTER_INDEV    (X11_GRAB_DEVICE, x11_grab_device);
+     REGISTER_INDEV    (X11GRAB, x11grab);
  
      /* external libraries */
      REGISTER_INDEV    (LIBCDIO, libcdio);
Simple merge
  #include "libavutil/log.h"
  #include "libavutil/mem.h"
  #include "libavutil/opt.h"
+ #include "libavutil/time.h"
  #include "libavutil/parseutils.h"
  #include "libavutil/pixdesc.h"
 -#include "libavformat/avformat.h"
 +#include "avdevice.h"
  #include "libavformat/internal.h"
  
  struct rgb_pixfmt_map_entry {
Simple merge
@@@ -36,8 -36,9 +36,9 @@@
  
  #include "libavutil/log.h"
  #include "libavutil/opt.h"
+ #include "libavutil/time.h"
  #include "libavcodec/avcodec.h"
 -#include "libavformat/avformat.h"
 +#include "avdevice.h"
  #include "libavformat/internal.h"
  
  #define AUDIO_BLOCK_SIZE 4096
@@@ -578,10 -582,10 +578,10 @@@ x11grab_read_close(AVFormatContext *s1
      return 0;
  }
  
- #define OFFSET(x) offsetof(struct x11_grab, x)
+ #define OFFSET(x) offsetof(struct x11grab, x)
  #define DEC AV_OPT_FLAG_DECODING_PARAM
  static const AVOption options[] = {
 -    { "video_size", "A string describing frame size, such as 640x480 or hd720.", OFFSET(video_size), AV_OPT_TYPE_STRING, {.str = "vga"}, 0, 0, DEC },
 +    { "video_size", "A string describing frame size, such as 640x480 or hd720.", OFFSET(width), AV_OPT_TYPE_IMAGE_SIZE, {.str = "vga"}, 0, 0, DEC },
      { "framerate", "", OFFSET(framerate), AV_OPT_TYPE_STRING, {.str = "ntsc"}, 0, 0, DEC },
      { "draw_mouse", "Draw the mouse pointer.", OFFSET(draw_mouse), AV_OPT_TYPE_INT, { 1 }, 0, 1, DEC },
      { "follow_mouse", "Move the grabbing region when the mouse pointer reaches within specified amount of pixels to the edge of region.",
@@@ -29,8 -29,8 +29,8 @@@
  #include "libavutil/avutil.h"
  
  #define LIBAVFILTER_VERSION_MAJOR  3
- #define LIBAVFILTER_VERSION_MINOR  4
 -#define LIBAVFILTER_VERSION_MINOR  1
 -#define LIBAVFILTER_VERSION_MICRO  0
++#define LIBAVFILTER_VERSION_MINOR  5
 +#define LIBAVFILTER_VERSION_MICRO 100
  
  #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
                                                 LIBAVFILTER_VERSION_MINOR, \
Simple merge
@@@ -193,27 -185,15 +193,26 @@@ static int mp3_read_header(AVFormatCont
  
  static int mp3_read_packet(AVFormatContext *s, AVPacket *pkt)
  {
 -    int ret;
 -
 -    ret = av_get_packet(s->pb, pkt, MP3_PACKET_SIZE);
 -    if (ret < 0)
 -        return ret;
 +    MP3Context *mp3 = s->priv_data;
 +    int ret, size;
 +    int64_t pos;
-     //    AVStream *st = s->streams[0];
 +
 +    size= MP3_PACKET_SIZE;
 +    pos = avio_tell(s->pb);
 +    if(mp3->filesize > ID3v1_TAG_SIZE && pos < mp3->filesize)
 +        size= FFMIN(size, mp3->filesize - pos);
 +
 +    ret= av_get_packet(s->pb, pkt, size);
-     pkt->flags &= ~AV_PKT_FLAG_CORRUPT;
-     pkt->stream_index = 0;
 +    if (ret <= 0) {
 +        if(ret<0)
 +            return ret;
 +        return AVERROR_EOF;
 +    }
  
 -    if (ret > ID3v1_TAG_SIZE &&
++    pkt->flags &= ~AV_PKT_FLAG_CORRUPT;
+     pkt->stream_index = 0;
 +    if (ret >= ID3v1_TAG_SIZE &&
          memcmp(&pkt->data[ret - ID3v1_TAG_SIZE], "TAG", 3) == 0)
          ret -= ID3v1_TAG_SIZE;
  
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -37,7 -35,7 +37,8 @@@
  #include "libavutil/avstring.h"
  #include "libavutil/mathematics.h"
  #include "libavutil/parseutils.h"
+ #include "libavutil/time.h"
 +#include "libavutil/timestamp.h"
  #include "riff.h"
  #include "audiointerleave.h"
  #include "url.h"
@@@ -2762,33 -2462,19 +2763,31 @@@ int avformat_find_stream_info(AVFormatC
              // the check for tb_unreliable() is not completely correct, since this is not about handling
              // a unreliable/inexact time base, but a time base that is finer than necessary, as e.g.
              // ipmovie.c produces.
 -            if (tb_unreliable(st->codec) && st->info->duration_count > 15 && st->info->duration_gcd > 1 && !st->r_frame_rate.num)
 +            if (tb_unreliable(st->codec) && st->info->duration_count > 15 && st->info->duration_gcd > FFMAX(1, st->time_base.den/(500LL*st->time_base.num)) && !st->r_frame_rate.num)
                  av_reduce(&st->r_frame_rate.num, &st->r_frame_rate.den, st->time_base.den, st->time_base.num * st->info->duration_gcd, INT_MAX);
              if (st->info->duration_count && !st->r_frame_rate.num
-                && tb_unreliable(st->codec) /*&&
-                //FIXME we should not special-case MPEG-2, but this needs testing with non-MPEG-2 ...
-                st->time_base.num*duration_sum[i]/st->info->duration_count*101LL > st->time_base.den*/){
+                 && tb_unreliable(st->codec)) {
                  int num = 0;
 -                double best_error= 2*av_q2d(st->time_base);
 -                best_error = best_error*best_error*st->info->duration_count*1000*12*30;
 -
 -                for (j=1; j<FF_ARRAY_ELEMS(st->info->duration_error); j++) {
 -                    double error = st->info->duration_error[j] * get_std_framerate(j);
 -                    if(error < best_error){
 -                        best_error= error;
 -                        num = get_std_framerate(j);
 +                double best_error= 0.01;
 +
 +                for (j=0; j<FF_ARRAY_ELEMS(st->info->duration_error[0][0]); j++) {
 +                    int k;
 +
 +                    if(st->info->codec_info_duration && st->info->codec_info_duration*av_q2d(st->time_base) < (1001*12.0)/get_std_framerate(j))
 +                        continue;
 +                    if(!st->info->codec_info_duration && 1.0 < (1001*12.0)/get_std_framerate(j))
 +                        continue;
 +                    for(k=0; k<2; k++){
 +                        int n= st->info->duration_count;
 +                        double a= st->info->duration_error[k][0][j] / n;
 +                        double error= st->info->duration_error[k][1][j]/n - a*a;
 +
 +                        if(error < best_error && best_error> 0.000000001){
 +                            best_error= error;
 +                            num = get_std_framerate(j);
 +                        }
 +                        if(error < 0.02)
 +                            av_log(NULL, AV_LOG_DEBUG, "rfps: %f %f\n", get_std_framerate(j) / 12.0/1001, error);
                      }
                  }
                  // do not increase frame rate by more than 1 % in order to match a standard rate.
@@@ -253,11 -254,11 +254,11 @@@ static int wv_read_packet(AVFormatConte
      int64_t pos;
      uint32_t block_samples;
  
 -    if (s->pb->eof_reached)
 +    if (url_feof(s->pb))
-         return AVERROR(EIO);
+         return AVERROR_EOF;
      if(wc->block_parsed){
-         if(wv_read_block_header(s, s->pb, 0) < 0)
-             return -1;
+         if ((ret = wv_read_block_header(s, s->pb, 0)) < 0)
+             return ret;
      }
  
      pos = wc->pos;
      %define mangle(x) x
  %endif
  
- ; FIXME: All of the 64bit asm functions that take a stride as an argument
- ; via register, assume that the high dword of that register is filled with 0.
- ; This is true in practice (since we never do any 64bit arithmetic on strides,
- ; and x264's strides are all positive), but is not guaranteed by the ABI.
  ; Name of the .rodata section.
 -; Kludge: Something on OS X fails to align .rodata even given an align attribute,
 -; so use a different read-only section.
  %macro SECTION_RODATA 0-1 16
 -    %ifidn __OUTPUT_FORMAT__,macho64
 -        SECTION .text align=%1
 -    %elifidn __OUTPUT_FORMAT__,macho
 -        SECTION .text align=%1
 -        fakegot:
 -    %elifidn __OUTPUT_FORMAT__,aout
 +    ; Kludge: Something on OS X fails to align .rodata even given an align
 +    ; attribute, so use a different read-only section. This has been fixed in
 +    ; yasm 0.8.0 and nasm 2.6.
 +    %ifdef __YASM_VERSION_ID__
 +        %if __YASM_VERSION_ID__ < 00080000h
 +            %define NEED_MACHO_RODATA_KLUDGE
 +        %endif
 +    %elifdef __NASM_VERSION_ID__
 +        %if __NASM_VERSION_ID__ < 02060000h
 +            %define NEED_MACHO_RODATA_KLUDGE
 +        %endif
 +    %endif
 +
 +    %ifidn __OUTPUT_FORMAT__,aout
          section .text
      %else
 -        SECTION .rodata align=%1
 +        %ifndef NEED_MACHO_RODATA_KLUDGE
 +            SECTION .rodata align=%1
 +        %else
 +            %ifidn __OUTPUT_FORMAT__,macho64
 +                SECTION .text align=%1
 +            %elifidn __OUTPUT_FORMAT__,macho
 +                SECTION .text align=%1
 +                fakegot:
 +            %else
 +                SECTION .rodata align=%1
 +            %endif
 +        %endif
      %endif
 +
 +    %undef NEED_MACHO_RODATA_KLUDGE
  %endmacro
  
  ; aout does not support align=
@@@ -155,20 -128,21 +151,21 @@@ CPU amdno
  ; rNm is the original location of arg N (a register or on the stack), dword
  ; rNmp is native size
  
- %macro DECLARE_REG 5-6
+ %macro DECLARE_REG 2-3
      %define r%1q %2
-     %define r%1d %3
-     %define r%1w %4
-     %define r%1b %5
-     %if %0 == 5
-         %define r%1m  %3
+     %define r%1d %2d
+     %define r%1w %2w
+     %define r%1b %2b
+     %define r%1h %2h
+     %if %0 == 2
+         %define r%1m  %2d
          %define r%1mp %2
      %elif ARCH_X86_64 ; memory
-         %define r%1m [rsp + stack_offset + %6]
+         %define r%1m [rsp + stack_offset + %3]
 -        %define r%1mp qword r %+ %1m
 +        %define r%1mp qword r %+ %1 %+ m
      %else
-         %define r%1m [esp + stack_offset + %6]
+         %define r%1m [esp + stack_offset + %3]
 -        %define r%1mp dword r %+ %1m
 +        %define r%1mp dword r %+ %1 %+ m
      %endif
      %define r%1  %2
  %endmacro
diff --cc library.mak
@@@ -17,10 -17,10 +17,10 @@@ $(SUBDIR)%-test.o: $(SUBDIR)%.
        $(COMPILE_C)
  
  $(SUBDIR)x86/%.o: $(SUBDIR)x86/%.asm
-       $(YASMDEP) $(YASMFLAGS) -I $(<D)/ -M -o $@ $< > $(@:.o=.d)
+       $(DEPYASM) $(YASMFLAGS) -I $(<D)/ -M -o $@ $< > $(@:.o=.d)
        $(YASM) $(YASMFLAGS) -I $(<D)/ -o $@ $<
  
 -$(OBJS) $(SUBDIR)%.ho $(TESTOBJS): CPPFLAGS += -DHAVE_AV_CONFIG_H
 +$(OBJS) $(OBJS:.o=.s) $(SUBDIR)%.ho $(TESTOBJS): CPPFLAGS += -DHAVE_AV_CONFIG_H
  $(TESTOBJS): CPPFLAGS += -DTEST
  
  $(SUBDIR)$(LIBNAME): $(OBJS)
Simple merge
@@@ -1,6 -1,28 +1,28 @@@
 -fate-filter-amix-simple: CMD = avconv -filter_complex amix -i $(SRC) -ss 3 -i $(SRC1) -f f32le -
+ FATE_AMIX += fate-filter-amix-simple
 -fate-filter-amix-first: CMD = avconv -filter_complex amix=duration=first -ss 4 -i $(SRC) -i $(SRC1) -f f32le -
++fate-filter-amix-simple: CMD = ffmpeg -filter_complex amix -i $(SRC) -ss 3 -i $(SRC1) -f f32le -
+ fate-filter-amix-simple: REF = $(SAMPLES)/filter/amix_simple.pcm
+ FATE_AMIX += fate-filter-amix-first
 -fate-filter-amix-transition: CMD = avconv -filter_complex amix=inputs=3:dropout_transition=0.5 -i $(SRC) -ss 2 -i $(SRC1) -ss 4 -i $(SRC2) -f f32le -
++fate-filter-amix-first: CMD = ffmpeg -filter_complex amix=duration=first -ss 4 -i $(SRC) -i $(SRC1) -f f32le -
+ fate-filter-amix-first: REF = $(SAMPLES)/filter/amix_first.pcm
+ FATE_AMIX += fate-filter-amix-transition
+ fate-filter-amix-transition: tests/data/asynth-44100-2-3.wav
+ fate-filter-amix-transition: SRC2 = $(TARGET_PATH)/tests/data/asynth-44100-2-3.wav
++fate-filter-amix-transition: CMD = ffmpeg -filter_complex amix=inputs=3:dropout_transition=0.5 -i $(SRC) -ss 2 -i $(SRC1) -ss 4 -i $(SRC2) -f f32le -
+ fate-filter-amix-transition: REF = $(SAMPLES)/filter/amix_transition.pcm
+ $(FATE_AMIX): tests/data/asynth-44100-2.wav tests/data/asynth-44100-2-2.wav
+ $(FATE_AMIX): SRC  = $(TARGET_PATH)/tests/data/asynth-44100-2.wav
+ $(FATE_AMIX): SRC1 = $(TARGET_PATH)/tests/data/asynth-44100-2-2.wav
+ $(FATE_AMIX): CMP  = oneoff
+ FATE_FILTER += $(FATE_AMIX)
+ FATE_SAMPLES_AVCONV += $(FATE_AMIX)
  FATE_ASYNCTS += fate-filter-asyncts
  fate-filter-asyncts: SRC = $(SAMPLES)/nellymoser/nellymoser-discont.flv
 -fate-filter-asyncts: CMD = pcm -i $(SRC) -af asyncts
 +fate-filter-asyncts: CMD = pcm -i $(SRC) -af aresample=min_comp=0.001:min_hard_comp=0.1
  fate-filter-asyncts: CMP = oneoff
  fate-filter-asyncts: REF = $(SAMPLES)/nellymoser/nellymoser-discont.pcm
  
index 0000000,0022698..e0f24cd
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,110 +1,110 @@@
 -#tb 0: 1/1000
 -0,          1,          1,        0,   126720, 0x689de87e
 -0,         33,         33,        0,   126720, 0x3db9e91c
 -0,         66,         66,        0,   126720, 0x3db9e91c
 -0,        100,        100,        0,   126720, 0x3db9e91c
 -0,        133,        133,        0,   126720, 0xfa6ae95e
 -0,        166,        166,        0,   126720, 0x5bcbf0e6
 -0,        200,        200,        0,   126720, 0x94a0f126
 -0,        233,        233,        0,   126720, 0x0250f106
 -0,        266,        266,        0,   126720, 0xcf6ab4bc
 -0,        300,        300,        0,   126720, 0x44aeb57c
 -0,        333,        333,        0,   126720, 0x33b0b5bc
 -0,        367,        367,        0,   126720, 0xc4bab591
 -0,        400,        400,        0,   126720, 0xa492b5ec
 -0,        433,        433,        0,   126720, 0x1459b85c
 -0,        467,        467,        0,   126720, 0x806fb8dc
 -0,        500,        500,        0,   126720, 0xd241b871
 -0,        533,        533,        0,   126720, 0x698eb5cc
 -0,        567,        567,        0,   126720, 0x4719aa98
 -0,        600,        600,        0,   126720, 0x9ca1962c
 -0,        633,        633,        0,   126720, 0x18cda460
 -0,        667,        667,        0,   126720, 0xc230b716
 -0,        700,        700,        0,   126720, 0x8451a4e2
 -0,        734,        734,        0,   126720, 0x59e9a7ea
 -0,        767,        767,        0,   126720, 0xc77ca73d
 -0,        800,        800,        0,   126720, 0x725fb976
 -0,        834,        834,        0,   126720, 0xb30da3b3
 -0,        867,        867,        0,   126720, 0x7af2ea86
 -0,        900,        900,        0,   126720, 0x40d4b4eb
 -0,        934,        934,        0,   126720, 0x49d00307
 -0,        967,        967,        0,   126720, 0x44c8848e
 -0,       1000,       1000,        0,   126720, 0xc6990101
 -0,       1034,       1034,        0,   126720, 0x2e01b963
 -0,       1067,       1067,        0,   126720, 0xd0e903f0
 -0,       1101,       1101,        0,   126720, 0x3457d592
 -0,       1134,       1134,        0,   126720, 0x4f1ddb3c
 -0,       1167,       1167,        0,   126720, 0x3980ace5
 -0,       1201,       1201,        0,   126720, 0xb1e37954
 -0,       1234,       1234,        0,   126720, 0x619fc554
 -0,       1267,       1267,        0,   126720, 0x945fb39e
 -0,       1301,       1301,        0,   126720, 0xb1d5e0ce
 -0,       1334,       1334,        0,   126720, 0xf26e1dcc
 -0,       1368,       1368,        0,   126720, 0x04d5783e
 -0,       1401,       1401,        0,   126720, 0xbaa0479e
 -0,       1434,       1434,        0,   126720, 0x20d88b01
 -0,       1468,       1468,        0,   126720, 0x59d99901
 -0,       1501,       1501,        0,   126720, 0x1c6e09f6
 -0,       1534,       1534,        0,   126720, 0xeec50fc5
 -0,       1568,       1568,        0,   126720, 0xb3a92827
 -0,       1601,       1601,        0,   126720, 0xf62dd2b6
 -0,       1634,       1634,        0,   126720, 0x75b1e619
 -0,       1668,       1668,        0,   126720, 0x6bbce2c0
 -0,       1701,       1701,        0,   126720, 0xd93e023c
 -0,       1735,       1735,        0,   126720, 0xbbe8e7c2
 -0,       1768,       1768,        0,   126720, 0x2272ec17
 -0,       1801,       1801,        0,   126720, 0xf5e4ee6e
 -0,       1835,       1835,        0,   126720, 0x751d2607
 -0,       1868,       1868,        0,   126720, 0x44c499c9
 -0,       1901,       1901,        0,   126720, 0xddccd842
 -0,       1935,       1935,        0,   126720, 0x508dd214
 -0,       1968,       1968,        0,   126720, 0x8eb10272
 -0,       2001,       2001,        0,   126720, 0x7224b1c6
 -0,       2035,       2035,        0,   126720, 0x50ff456c
 -0,       2068,       2068,        0,   126720, 0xa81e2731
 -0,       2102,       2102,        0,   126720, 0x7e50456d
 -0,       2135,       2135,        0,   126720, 0x44802978
 -0,       2168,       2168,        0,   126720, 0x86e88743
 -0,       2202,       2202,        0,   126720, 0x0b1087d6
 -0,       2235,       2235,        0,   126720, 0xb0227d21
 -0,       2268,       2268,        0,   126720, 0x29d10bd2
 -0,       2302,       2302,        0,   126720, 0x04b43afa
 -0,       2335,       2335,        0,   126720, 0xb48e9698
 -0,       2369,       2369,        0,   126720, 0x75d760fb
 -0,       2402,       2402,        0,   126720, 0xa2ab1fdb
 -0,       2435,       2435,        0,   126720, 0xec30a5ee
 -0,       2469,       2469,        0,   126720, 0xbdab7c8c
 -0,       2502,       2502,        0,   126720, 0xac5c3f2c
 -0,       2535,       2535,        0,   126720, 0xce6350be
 -0,       2569,       2569,        0,   126720, 0xb109657a
 -0,       2602,       2602,        0,   126720, 0x723865a4
 -0,       2635,       2635,        0,   126720, 0xa9869124
 -0,       2669,       2669,        0,   126720, 0xc41af558
 -0,       2702,       2702,        0,   126720, 0xcbe6a402
 -0,       2736,       2736,        0,   126720, 0xb6735ecb
 -0,       2769,       2769,        0,   126720, 0xba3059f2
 -0,       2802,       2802,        0,   126720, 0xe7d63b8d
 -0,       2836,       2836,        0,   126720, 0x8f115906
 -0,       2869,       2869,        0,   126720, 0xaf6a8dcb
 -0,       2902,       2902,        0,   126720, 0xb73e846e
 -0,       2936,       2936,        0,   126720, 0xedd6380f
 -0,       2969,       2969,        0,   126720, 0xd9026acf
 -0,       3002,       3002,        0,   126720, 0xa03a650b
 -0,       3036,       3036,        0,   126720, 0x262765bc
 -0,       3069,       3069,        0,   126720, 0xaaa9ded1
 -0,       3103,       3103,        0,   126720, 0xe4f42665
 -0,       3136,       3136,        0,   126720, 0x78daf760
 -0,       3169,       3169,        0,   126720, 0x3b0c6ef8
 -0,       3203,       3203,        0,   126720, 0xb745df80
 -0,       3236,       3236,        0,   126720, 0x08e57b90
 -0,       3269,       3269,        0,   126720, 0x6f883ab0
 -0,       3303,       3303,        0,   126720, 0x934b4dd5
 -0,       3336,       3336,        0,   126720, 0x762f108f
 -0,       3370,       3370,        0,   126720, 0x91ee0f2b
 -0,       3403,       3403,        0,   126720, 0x9af6e5e8
 -0,       3436,       3436,        0,   126720, 0xdcd95e0a
 -0,       3470,       3470,        0,   126720, 0x22c33a6e
 -0,       3503,       3503,        0,   126720, 0x21c1b7f4
 -0,       3536,       3536,        0,   126720, 0x0a66a1ed
 -0,       3570,       3570,        0,   126720, 0x53fea81b
 -0,       3603,       3603,        0,   126720, 0x597f5567
++#tb 0: 32768/982057
++0,          0,          0,        1,   126720, 0x689de87e
++0,          1,          1,        1,   126720, 0x3db9e91c
++0,          2,          2,        1,   126720, 0x3db9e91c
++0,          3,          3,        1,   126720, 0x3db9e91c
++0,          4,          4,        1,   126720, 0xfa6ae95e
++0,          5,          5,        1,   126720, 0x5bcbf0e6
++0,          6,          6,        1,   126720, 0x94a0f126
++0,          7,          7,        1,   126720, 0x0250f106
++0,          8,          8,        1,   126720, 0xcf6ab4bc
++0,          9,          9,        1,   126720, 0x44aeb57c
++0,         10,         10,        1,   126720, 0x33b0b5bc
++0,         11,         11,        1,   126720, 0xc4bab591
++0,         12,         12,        1,   126720, 0xa492b5ec
++0,         13,         13,        1,   126720, 0x1459b85c
++0,         14,         14,        1,   126720, 0x806fb8dc
++0,         15,         15,        1,   126720, 0xd241b871
++0,         16,         16,        1,   126720, 0x698eb5cc
++0,         17,         17,        1,   126720, 0x4719aa98
++0,         18,         18,        1,   126720, 0x9ca1962c
++0,         19,         19,        1,   126720, 0x18cda460
++0,         20,         20,        1,   126720, 0xc230b716
++0,         21,         21,        1,   126720, 0x8451a4e2
++0,         22,         22,        1,   126720, 0x59e9a7ea
++0,         23,         23,        1,   126720, 0xc77ca73d
++0,         24,         24,        1,   126720, 0x725fb976
++0,         25,         25,        1,   126720, 0xb30da3b3
++0,         26,         26,        1,   126720, 0x7af2ea86
++0,         27,         27,        1,   126720, 0x40d4b4eb
++0,         28,         28,        1,   126720, 0x49d00307
++0,         29,         29,        1,   126720, 0x44c8848e
++0,         30,         30,        1,   126720, 0xc6990101
++0,         31,         31,        1,   126720, 0x2e01b963
++0,         32,         32,        1,   126720, 0xd0e903f0
++0,         33,         33,        1,   126720, 0x3457d592
++0,         34,         34,        1,   126720, 0x4f1ddb3c
++0,         35,         35,        1,   126720, 0x3980ace5
++0,         36,         36,        1,   126720, 0xb1e37954
++0,         37,         37,        1,   126720, 0x619fc554
++0,         38,         38,        1,   126720, 0x945fb39e
++0,         39,         39,        1,   126720, 0xb1d5e0ce
++0,         40,         40,        1,   126720, 0xf26e1dcc
++0,         41,         41,        1,   126720, 0x04d5783e
++0,         42,         42,        1,   126720, 0xbaa0479e
++0,         43,         43,        1,   126720, 0x20d88b01
++0,         44,         44,        1,   126720, 0x59d99901
++0,         45,         45,        1,   126720, 0x1c6e09f6
++0,         46,         46,        1,   126720, 0xeec50fc5
++0,         47,         47,        1,   126720, 0xb3a92827
++0,         48,         48,        1,   126720, 0xf62dd2b6
++0,         49,         49,        1,   126720, 0x75b1e619
++0,         50,         50,        1,   126720, 0x6bbce2c0
++0,         51,         51,        1,   126720, 0xd93e023c
++0,         52,         52,        1,   126720, 0xbbe8e7c2
++0,         53,         53,        1,   126720, 0x2272ec17
++0,         54,         54,        1,   126720, 0xf5e4ee6e
++0,         55,         55,        1,   126720, 0x751d2607
++0,         56,         56,        1,   126720, 0x44c499c9
++0,         57,         57,        1,   126720, 0xddccd842
++0,         58,         58,        1,   126720, 0x508dd214
++0,         59,         59,        1,   126720, 0x8eb10272
++0,         60,         60,        1,   126720, 0x7224b1c6
++0,         61,         61,        1,   126720, 0x50ff456c
++0,         62,         62,        1,   126720, 0xa81e2731
++0,         63,         63,        1,   126720, 0x7e50456d
++0,         64,         64,        1,   126720, 0x44802978
++0,         65,         65,        1,   126720, 0x86e88743
++0,         66,         66,        1,   126720, 0x0b1087d6
++0,         67,         67,        1,   126720, 0xb0227d21
++0,         68,         68,        1,   126720, 0x29d10bd2
++0,         69,         69,        1,   126720, 0x04b43afa
++0,         70,         70,        1,   126720, 0xb48e9698
++0,         71,         71,        1,   126720, 0x75d760fb
++0,         72,         72,        1,   126720, 0xa2ab1fdb
++0,         73,         73,        1,   126720, 0xec30a5ee
++0,         74,         74,        1,   126720, 0xbdab7c8c
++0,         75,         75,        1,   126720, 0xac5c3f2c
++0,         76,         76,        1,   126720, 0xce6350be
++0,         77,         77,        1,   126720, 0xb109657a
++0,         78,         78,        1,   126720, 0x723865a4
++0,         79,         79,        1,   126720, 0xa9869124
++0,         80,         80,        1,   126720, 0xc41af558
++0,         81,         81,        1,   126720, 0xcbe6a402
++0,         82,         82,        1,   126720, 0xb6735ecb
++0,         83,         83,        1,   126720, 0xba3059f2
++0,         84,         84,        1,   126720, 0xe7d63b8d
++0,         85,         85,        1,   126720, 0x8f115906
++0,         86,         86,        1,   126720, 0xaf6a8dcb
++0,         87,         87,        1,   126720, 0xb73e846e
++0,         88,         88,        1,   126720, 0xedd6380f
++0,         89,         89,        1,   126720, 0xd9026acf
++0,         90,         90,        1,   126720, 0xa03a650b
++0,         91,         91,        1,   126720, 0x262765bc
++0,         92,         92,        1,   126720, 0xaaa9ded1
++0,         93,         93,        1,   126720, 0xe4f42665
++0,         94,         94,        1,   126720, 0x78daf760
++0,         95,         95,        1,   126720, 0x3b0c6ef8
++0,         96,         96,        1,   126720, 0xb745df80
++0,         97,         97,        1,   126720, 0x08e57b90
++0,         98,         98,        1,   126720, 0x6f883ab0
++0,         99,         99,        1,   126720, 0x934b4dd5
++0,        100,        100,        1,   126720, 0x762f108f
++0,        101,        101,        1,   126720, 0x91ee0f2b
++0,        102,        102,        1,   126720, 0x9af6e5e8
++0,        103,        103,        1,   126720, 0xdcd95e0a
++0,        104,        104,        1,   126720, 0x22c33a6e
++0,        105,        105,        1,   126720, 0x21c1b7f4
++0,        106,        106,        1,   126720, 0x0a66a1ed
++0,        107,        107,        1,   126720, 0x53fea81b
++0,        108,        108,        1,   126720, 0x597f5567
index 0000000,ca950d0..a25ea3e
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,32 +1,32 @@@
 -#tb 0: 1/180000
 -0,      64800,      64800,        0,   622080, 0x1511cae9
 -0,      72000,      72000,        0,   622080, 0x6e77e746
 -0,      79200,      79200,        0,   622080, 0x89aac777
 -0,      86400,      86400,        0,   622080, 0x7e0a9335
 -0,      93600,      93600,        0,   622080, 0x5f34759b
 -0,     100800,     100800,        0,   622080, 0xfac498a6
 -0,     108000,     108000,        0,   622080, 0xe60e7a9e
 -0,     115200,     115200,        0,   622080, 0x44875bbd
 -0,     122400,     122400,        0,   622080, 0xfa761aab
 -0,     129600,     129600,        0,   622080, 0x59be119c
 -0,     136800,     136800,        0,   622080, 0x21316b36
 -0,     144000,     144000,        0,   622080, 0x929fde5b
 -0,     151200,     151200,        0,   622080, 0xfca8990c
 -0,     158400,     158400,        0,   622080, 0x1ec87d02
 -0,     165600,     165600,        0,   622080, 0x5768eea0
 -0,     172800,     172800,        0,   622080, 0x1a0894ab
 -0,     180000,     180000,        0,   622080, 0xb4e61323
 -0,     187200,     187200,        0,   622080, 0xb773341a
 -0,     194400,     194400,        0,   622080, 0x8a914cf7
 -0,     201600,     201600,        0,   622080, 0xf1cfbc7d
 -0,     208800,     208800,        0,   622080, 0xebaeb317
 -0,     216000,     216000,        0,   622080, 0xbae9adf4
 -0,     223200,     223200,        0,   622080, 0x593544fd
 -0,     230400,     230400,        0,   622080, 0x2cd8ec0b
 -0,     237600,     237600,        0,   622080, 0x8032d9d4
 -0,     244800,     244800,        0,   622080, 0x5c67ace7
 -0,     252000,     252000,        0,   622080, 0x95714528
 -0,     259200,     259200,        0,   622080, 0xa11cbed2
 -0,     266400,     266400,        0,   622080, 0x7389f8f1
 -0,     273600,     273600,        0,   622080, 0xa694f3f2
 -0,     280800,     280800,        0,   622080, 0xac3a3d09
++#tb 0: 1/25
++0,          9,          9,        1,   622080, 0x1511cae9
++0,         10,         10,        1,   622080, 0x6e77e746
++0,         11,         11,        1,   622080, 0x89aac777
++0,         12,         12,        1,   622080, 0x7e0a9335
++0,         13,         13,        1,   622080, 0x5f34759b
++0,         14,         14,        1,   622080, 0xfac498a6
++0,         15,         15,        1,   622080, 0xe60e7a9e
++0,         16,         16,        1,   622080, 0x44875bbd
++0,         17,         17,        1,   622080, 0xfa761aab
++0,         18,         18,        1,   622080, 0x59be119c
++0,         19,         19,        1,   622080, 0x21316b36
++0,         20,         20,        1,   622080, 0x929fde5b
++0,         21,         21,        1,   622080, 0xfca8990c
++0,         22,         22,        1,   622080, 0x1ec87d02
++0,         23,         23,        1,   622080, 0x5768eea0
++0,         24,         24,        1,   622080, 0x1a0894ab
++0,         25,         25,        1,   622080, 0xb4e61323
++0,         26,         26,        1,   622080, 0xb773341a
++0,         27,         27,        1,   622080, 0x8a914cf7
++0,         28,         28,        1,   622080, 0xf1cfbc7d
++0,         29,         29,        1,   622080, 0xebaeb317
++0,         30,         30,        1,   622080, 0xbae9adf4
++0,         31,         31,        1,   622080, 0x593544fd
++0,         32,         32,        1,   622080, 0x2cd8ec0b
++0,         33,         33,        1,   622080, 0x8032d9d4
++0,         34,         34,        1,   622080, 0x5c67ace7
++0,         35,         35,        1,   622080, 0x95714528
++0,         36,         36,        1,   622080, 0xa11cbed2
++0,         37,         37,        1,   622080, 0x7389f8f1
++0,         38,         38,        1,   622080, 0xa694f3f2
++0,         39,         39,        1,   622080, 0xac3a3d09
index 0000000,0a2f61c..1d13ebe
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,63 +1,34 @@@
 -#tb 0: 1/180000
 -0,      64800,      64800,        0,   622080, 0x1511cae9
 -0,      68400,      68400,        0,   622080, 0xb88ca855
 -0,      72000,      72000,        0,   622080, 0x6e77e746
 -0,      75600,      75600,        0,   622080, 0x5da19198
 -0,      79200,      79200,        0,   622080, 0x89aac777
 -0,      82800,      82800,        0,   622080, 0xee31c8a8
 -0,      86400,      86400,        0,   622080, 0x7e0a9335
 -0,      90000,      90000,        0,   622080, 0xcbb7aac5
 -0,      93600,      93600,        0,   622080, 0x5f34759b
 -0,      97200,      97200,        0,   622080, 0x19972f1a
 -0,     100800,     100800,        0,   622080, 0xfac498a6
 -0,     104400,     104400,        0,   622080, 0xac7d34b9
 -0,     108000,     108000,        0,   622080, 0xe60e7a9e
 -0,     111600,     111600,        0,   622080, 0x4adfe592
 -0,     115200,     115200,        0,   622080, 0x44875bbd
 -0,     118800,     118800,        0,   622080, 0x5d738330
 -0,     122400,     122400,        0,   622080, 0xfa761aab
 -0,     126000,     126000,        0,   622080, 0xb60b4447
 -0,     129600,     129600,        0,   622080, 0x59be119c
 -0,     133200,     133200,        0,   622080, 0x1e11acf4
 -0,     136800,     136800,        0,   622080, 0x21316b36
 -0,     140400,     140400,        0,   622080, 0x5ed635d0
 -0,     144000,     144000,        0,   622080, 0x929fde5b
 -0,     147600,     147600,        0,   622080, 0x939857af
 -0,     151200,     151200,        0,   622080, 0xfca8990c
 -0,     154800,     154800,        0,   622080, 0x530b28fd
 -0,     158400,     158400,        0,   622080, 0x1ec87d02
 -0,     162000,     162000,        0,   622080, 0x3bc0d5d3
 -0,     165600,     165600,        0,   622080, 0x5768eea0
 -0,     169200,     169200,        0,   622080, 0x77e0fe99
 -0,     172800,     172800,        0,   622080, 0x1a0894ab
 -0,     176400,     176400,        0,   622080, 0xd2151c1e
 -0,     180000,     180000,        0,   622080, 0xb4e61323
 -0,     183600,     183600,        0,   622080, 0xe021a815
 -0,     187200,     187200,        0,   622080, 0xb773341a
 -0,     190800,     190800,        0,   622080, 0xceae4f12
 -0,     194400,     194400,        0,   622080, 0x8a914cf7
 -0,     198000,     198000,        0,   622080, 0x4c2f3330
 -0,     201600,     201600,        0,   622080, 0xf1cfbc7d
 -0,     205200,     205200,        0,   622080, 0xf534c392
 -0,     208800,     208800,        0,   622080, 0xebaeb317
 -0,     212400,     212400,        0,   622080, 0x88f01c11
 -0,     216000,     216000,        0,   622080, 0xbae9adf4
 -0,     219600,     219600,        0,   622080, 0x654d5df2
 -0,     223200,     223200,        0,   622080, 0x593544fd
 -0,     226800,     226800,        0,   622080, 0x89ef6f8a
 -0,     230400,     230400,        0,   622080, 0x2cd8ec0b
 -0,     234000,     234000,        0,   622080, 0x78a7b5f1
 -0,     237600,     237600,        0,   622080, 0x8032d9d4
 -0,     241200,     241200,        0,   622080, 0x8152d67f
 -0,     244800,     244800,        0,   622080, 0x5c67ace7
 -0,     248400,     248400,        0,   622080, 0x6590ff5f
 -0,     252000,     252000,        0,   622080, 0x95714528
 -0,     255600,     255600,        0,   622080, 0x51d2be96
 -0,     259200,     259200,        0,   622080, 0xa11cbed2
 -0,     262800,     262800,        0,   622080, 0x483f65f7
 -0,     266400,     266400,        0,   622080, 0x7389f8f1
 -0,     270000,     270000,        0,   622080, 0x7a69143d
 -0,     273600,     273600,        0,   622080, 0xa694f3f2
 -0,     277200,     277200,        0,   622080, 0xeccc58ff
 -0,     280800,     280800,        0,   622080, 0xac3a3d09
 -0,     284400,     284400,        0,   622080, 0xc4d2c370
++#tb 0: 1/25
++0,          9,          9,        1,   622080, 0x1511cae9
++0,         10,         10,        1,   622080, 0xb88ca855
++0,         11,         11,        1,   622080, 0x6e77e746
++0,         12,         12,        1,   622080, 0x5da19198
++0,         13,         13,        1,   622080, 0xee31c8a8
++0,         14,         14,        1,   622080, 0xcbb7aac5
++0,         15,         15,        1,   622080, 0x19972f1a
++0,         16,         16,        1,   622080, 0xac7d34b9
++0,         17,         17,        1,   622080, 0x4adfe592
++0,         18,         18,        1,   622080, 0x5d738330
++0,         19,         19,        1,   622080, 0xb60b4447
++0,         20,         20,        1,   622080, 0x1e11acf4
++0,         21,         21,        1,   622080, 0x5ed635d0
++0,         22,         22,        1,   622080, 0x939857af
++0,         23,         23,        1,   622080, 0x530b28fd
++0,         24,         24,        1,   622080, 0x3bc0d5d3
++0,         25,         25,        1,   622080, 0x77e0fe99
++0,         26,         26,        1,   622080, 0xd2151c1e
++0,         27,         27,        1,   622080, 0xe021a815
++0,         28,         28,        1,   622080, 0xceae4f12
++0,         29,         29,        1,   622080, 0x4c2f3330
++0,         30,         30,        1,   622080, 0xf534c392
++0,         31,         31,        1,   622080, 0x88f01c11
++0,         32,         32,        1,   622080, 0x654d5df2
++0,         33,         33,        1,   622080, 0x89ef6f8a
++0,         34,         34,        1,   622080, 0x78a7b5f1
++0,         35,         35,        1,   622080, 0x8152d67f
++0,         36,         36,        1,   622080, 0x6590ff5f
++0,         37,         37,        1,   622080, 0x51d2be96
++0,         38,         38,        1,   622080, 0x483f65f7
++0,         39,         39,        1,   622080, 0x7a69143d
++0,         40,         40,        1,   622080, 0xeccc58ff
++0,         41,         41,        1,   622080, 0xc4d2c370