Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 3 Feb 2012 01:41:47 +0000 (02:41 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 3 Feb 2012 02:51:32 +0000 (03:51 +0100)
* qatar/master:
  libx264: fix indentation.
  vorbis: fix overflows in floor1[] vector and inverse db table index.
  win64: add a XMM clobber test configure option.
  movdec: Parse the dvc1 atom
  ARM: ac3: fix ac3_bit_alloc_calc_bap_armv6
  swscale: K&R formatting cosmetics for Blackfin code
  frwu: lowercase the FRWU codec name
  movdec: fix dts generation in fragmented files
  fate: make acodec-ac3_fixed test output raw AC3
  APIchanges: add missing commit hashes
  swscale: implement MMX, SSE2 and AVX functions for RGB32 input.
  ra144enc: drop pointless "encoder" from .long_name
  bethsoftvideo: fix palette reading.
  mpc7: use av_fast_padded_malloc()
  mpc7: simplify handling of packet sizes that are not a multiple of 4 bytes
  doc: decoding Forward Uncompressed is supported
  Fix a typo in the x86 asm version of ff_vector_clip_int32()
  pcmenc: Do not set avpkt->size.
  ff_alloc_packet: modify the size of the packet to match the requested size

Conflicts:
doc/APIchanges
libavcodec/libx264.c
libavcodec/mpc7.c
libavformat/isom.h
libswscale/Makefile
libswscale/bfin/yuv2rgb_bfin.c
tests/ref/fate/bethsoft-vid
tests/ref/seek/ac3_ac3

Merged-by: Michael Niedermayer <michaelni@gmx.at>
25 files changed:
1  2 
configure
doc/APIchanges
doc/general.texi
libavcodec/bethsoftvideo.c
libavcodec/internal.h
libavcodec/libx264.c
libavcodec/mpc.h
libavcodec/mpc7.c
libavcodec/pcm.c
libavcodec/ra144enc.c
libavcodec/utils.c
libavcodec/vorbis.c
libavcodec/vorbisdec.c
libavcodec/x86/Makefile
libavcodec/x86/dsputil_yasm.asm
libavformat/isom.h
libavformat/mov.c
libswscale/Makefile
libswscale/bfin/internal_bfin.S
libswscale/bfin/swscale_bfin.c
libswscale/bfin/yuv2rgb_bfin.c
libswscale/x86/input.asm
libswscale/x86/swscale_mmx.c
tests/codec-regression.sh
tests/ref/fate/vc1-ism

diff --cc configure
+++ b/configure
@@@ -270,12 -252,10 +270,14 @@@ Developer options (useful when working 
    --enable-debug=LEVEL     set the debug level [$debuglevel]
    --disable-optimizations  disable compiler optimizations
    --enable-extra-warnings  enable more compiler warnings
 +  --disable-stripping      disable stripping of executables and shared libraries
 +  --valgrind=VALGRIND      run "make fate" tests through valgrind to detect memory
 +                           leaks and errors, using the specified valgrind binary.
 +                           Cannot be combined with --target-exec
    --samples=PATH           location of test samples for FATE, if not set use
                             \$FATE_SAMPLES at make invocation time.
+   --enable-xmm-clobber-test check XMM registers for clobbering (Win64-only;
+                            should be used only for debugging purposes)
  
  NOTE: Object files are built at the place where configure is launched.
  EOF
@@@ -3301,9 -3065,20 +3304,20 @@@ enabled extra_warnings && check_cflags 
  
  # add some linker flags
  check_ldflags -Wl,--warn-common
 -check_ldflags -Wl,-rpath-link=libpostproc:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil
 +check_ldflags -Wl,-rpath-link=libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil
  test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic
  
+ enabled xmm_clobber_test &&                             \
+     check_ldflags -Wl,--wrap,avcodec_open2              \
+                   -Wl,--wrap,avcodec_decode_audio4      \
+                   -Wl,--wrap,avcodec_decode_video2      \
+                   -Wl,--wrap,avcodec_decode_subtitle2   \
+                   -Wl,--wrap,avcodec_encode_audio2      \
+                   -Wl,--wrap,avcodec_encode_video       \
+                   -Wl,--wrap,avcodec_encode_subtitle    \
+                   -Wl,--wrap,sws_scale ||               \
+     disable xmm_clobber_test
  echo "X{};" > $TMPV
  if test_ldflags -Wl,--version-script,$TMPV; then
      append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver'
diff --cc doc/APIchanges
@@@ -13,13 -13,7 +13,13 @@@ libavutil:   2011-04-1
  
  API changes, most recent first:
  
- 2012-02-01 - xxxxxxx - lavc 54.01.0
 +2012-02-02 - xxxxxxx - lavu 51.37.100
 +  Add public timecode helpers.
 +
 +2012-01-24 - xxxxxxx - lavfi 2.60.100
 +  Add avfilter_graph_dump.
 +
+ 2012-02-01 - 316fc74 - lavc 54.01.0
    Add av_fast_padded_malloc() as alternative for av_realloc() when aligned
    memory is required. The buffer will always have FF_INPUT_BUFFER_PADDING_SIZE
    zero-padded bytes at the end.
@@@ -489,14 -466,14 +489,15 @@@ following image formats are supported
  @item Electronic Arts TGQ video  @tab     @tab  X
  @item Electronic Arts TQI video  @tab     @tab  X
  @item Escape 124             @tab     @tab  X
 +@item Escape 130             @tab     @tab  X
  @item FFmpeg video codec #1  @tab  X  @tab  X
 -    @tab experimental lossless codec (fourcc: FFV1)
 +    @tab lossless codec (fourcc: FFV1)
  @item Flash Screen Video v1  @tab  X  @tab  X
      @tab fourcc: FSV1
 -@item Flash Screen Video v2  @tab     @tab  X
 +@item Flash Screen Video v2  @tab  X  @tab  X
  @item Flash Video (FLV)      @tab  X  @tab  X
      @tab Sorenson H.263 used in Flash
+ @item Forward Uncompressed   @tab     @tab  X
  @item Fraps                  @tab     @tab  X
  @item H.261                  @tab  X  @tab  X
  @item H.263 / H.263-1996     @tab  X  @tab  X
@@@ -57,11 -56,10 +57,11 @@@ static int set_palette(BethsoftvidConte
          return AVERROR_INVALIDDATA;
  
      for(a = 0; a < 256; a++){
 -        palette[a] = bytestream2_get_be24u(&ctx->g) * 4;
 +        palette[a] = 0xFFU << 24 | bytestream2_get_be24u(&ctx->g) * 4;
 +        palette[a] |= palette[a] >> 6 & 0x30303;
      }
      ctx->frame.palette_has_changed = 1;
-     return 256*3;
+     return 0;
  }
  
  static int bethsoftvid_decode_frame(AVCodecContext *avctx,
Simple merge
@@@ -187,13 -147,12 +187,13 @@@ static int X264_frame(AVCodecContext *c
      }
  
      do {
-     if (x264_encoder_encode(x4->enc, &nal, &nnal, frame? &x4->pic: NULL, &pic_out) < 0)
-         return -1;
 +        bufsize = orig_bufsize;
+         if (x264_encoder_encode(x4->enc, &nal, &nnal, frame? &x4->pic: NULL, &pic_out) < 0)
+             return -1;
  
-     bufsize = encode_nals(ctx, buf, bufsize, nal, nnal, 0);
-     if (bufsize < 0)
-         return -1;
+         bufsize = encode_nals(ctx, buf, bufsize, nal, nnal, 0);
+         if (bufsize < 0)
+             return -1;
      } while (!bufsize && !frame && x264_encoder_delayed_frames(x4->enc));
  
      /* FIXME: libx264 now provides DTS, but AVFrame doesn't have a field for it. */
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -128,7 -126,7 +128,8 @@@ typedef struct MOVStreamContext 
      uint32_t palette[256];
      int has_palette;
      int64_t data_size;
 +    uint32_t tmcd_flags;  ///< tmcd track flags
+     int64_t track_end;    ///< used for dts generation in fragmented movie files
  } MOVStreamContext;
  
  typedef struct MOVContext {
Simple merge
@@@ -23,8 -21,8 +23,10 @@@ MMX-OBJS-$(HAVE_YASM)      +=  x86/inpu
                                 x86/output.o             \
                                 x86/scale.o
  
 +$(SUBDIR)x86/swscale_mmx.o: CFLAGS += $(NOREDZONE_FLAGS)
 +
+ OBJS-$(CONFIG_XMM_CLOBBER_TEST) += x86/w64xmmtest.o
  TESTPROGS = colorspace swscale
  
  DIRS = bfin mlib ppc sparc x86
Simple merge
Simple merge
  #include <string.h>
  #include <inttypes.h>
  #include <assert.h>
- #include "config.h"
  #include <unistd.h>
 +#include "libavutil/pixdesc.h"
+ #include "config.h"
  #include "libswscale/rgb2rgb.h"
  #include "libswscale/swscale.h"
  #include "libswscale/swscale_internal.h"
@@@ -294,6 -309,152 +307,150 @@@ RGB24_FUNCS 11, 1
  INIT_XMM avx
  RGB24_FUNCS 11, 13
  
 -cglobal %2%3%4%5 %+ ToY, 3, 3, %1, dst, src, w
+ ; %1 = nr. of XMM registers
+ ; %2-5 = rgba, bgra, argb or abgr (in individual characters)
+ %macro RGB32_TO_Y_FN 5-6
 -    movu           m0, [srcq+wq*4+0]      ; (byte) { Bx, Gx, Rx, xx }[0-3]
 -    movu           m2, [srcq+wq*4+mmsize] ; (byte) { Bx, Gx, Rx, xx }[4-7]
++cglobal %2%3%4%5 %+ ToY, 6, 6, %1, dst, src, u1, u2, w, u3
+     mova           m5, [rgba_Ycoeff_%2%4]
+     mova           m6, [rgba_Ycoeff_%3%5]
+ %if %0 == 6
+     jmp mangle(program_name %+ _ %+ %6 %+ ToY %+ SUFFIX).body
+ %else ; %0 == 6
+ .body:
+ %if ARCH_X86_64
+     movsxd         wq, wd
+ %endif
+     lea          srcq, [srcq+wq*4]
++    add            wq, wq
+     add          dstq, wq
+     neg            wq
+     mova           m4, [rgb_Yrnd]
+     pcmpeqb        m7, m7
+     psrlw          m7, 8                  ; (word) { 0x00ff } x4
+ .loop:
+     ; FIXME check alignment and use mova
 -    psrad          m0, 15
 -    psrad          m2, 15
++    movu           m0, [srcq+wq*2+0]      ; (byte) { Bx, Gx, Rx, xx }[0-3]
++    movu           m2, [srcq+wq*2+mmsize] ; (byte) { Bx, Gx, Rx, xx }[4-7]
+     DEINTB          1,  0,  3,  2,  7     ; (word) { Gx, xx (m0/m2) or Bx, Rx (m1/m3) }[0-3]/[4-7]
+     pmaddwd        m1, m5                 ; (dword) { Bx*BY + Rx*RY }[0-3]
+     pmaddwd        m0, m6                 ; (dword) { Gx*GY }[0-3]
+     pmaddwd        m3, m5                 ; (dword) { Bx*BY + Rx*RY }[4-7]
+     pmaddwd        m2, m6                 ; (dword) { Gx*GY }[4-7]
+     paddd          m0, m4                 ; += rgb_Yrnd
+     paddd          m2, m4                 ; += rgb_Yrnd
+     paddd          m0, m1                 ; (dword) { Y[0-3] }
+     paddd          m2, m3                 ; (dword) { Y[4-7] }
 -    packuswb       m0, m0                 ; (byte) { Y[0-7] }
 -    movh    [dstq+wq], m0
 -    add            wq, mmsize / 2
++    psrad          m0, 9
++    psrad          m2, 9
+     packssdw       m0, m2                 ; (word) { Y[0-7] }
 -cglobal %2%3%4%5 %+ ToUV, 3, 4, %1, dstU, dstV, src, w
++    mova    [dstq+wq], m0
++    add            wq, mmsize
+     jl .loop
+     REP_RET
+ %endif ; %0 == 3
+ %endmacro
+ ; %1 = nr. of XMM registers
+ ; %2-5 = rgba, bgra, argb or abgr (in individual characters)
+ %macro RGB32_TO_UV_FN 5-6
 -    movsxd         wq, dword r4m
++cglobal %2%3%4%5 %+ ToUV, 7, 7, %1, dstU, dstV, u1, src, u2, w, u3
+ %if ARCH_X86_64
+     mova           m8, [rgba_Ucoeff_%2%4]
+     mova           m9, [rgba_Ucoeff_%3%5]
+     mova          m10, [rgba_Vcoeff_%2%4]
+     mova          m11, [rgba_Vcoeff_%3%5]
+ %define coeffU1 m8
+ %define coeffU2 m9
+ %define coeffV1 m10
+ %define coeffV2 m11
+ %else ; x86-32
+ %define coeffU1 [rgba_Ucoeff_%2%4]
+ %define coeffU2 [rgba_Ucoeff_%3%5]
+ %define coeffV1 [rgba_Vcoeff_%2%4]
+ %define coeffV2 [rgba_Vcoeff_%3%5]
+ %endif ; x86-64/32
+ %if ARCH_X86_64 && %0 == 6
+     jmp mangle(program_name %+ _ %+ %6 %+ ToUV %+ SUFFIX).body
+ %else ; ARCH_X86_64 && %0 == 6
+ .body:
+ %if ARCH_X86_64
 -    mov            wq, r4m
++    movsxd         wq, dword r5m
+ %else ; x86-32
 -    lea          srcq, [srcq+wq*4]
++    mov            wq, r5m
+ %endif
++    add            wq, wq
+     add         dstUq, wq
+     add         dstVq, wq
 -    movu           m0, [srcq+wq*4+0]      ; (byte) { Bx, Gx, Rx, xx }[0-3]
 -    movu           m4, [srcq+wq*4+mmsize] ; (byte) { Bx, Gx, Rx, xx }[4-7]
++    lea          srcq, [srcq+wq*2]
+     neg            wq
+     pcmpeqb        m7, m7
+     psrlw          m7, 8                  ; (word) { 0x00ff } x4
+     mova           m6, [rgb_UVrnd]
+ .loop:
+     ; FIXME check alignment and use mova
 -    psrad          m0, 15
++    movu           m0, [srcq+wq*2+0]      ; (byte) { Bx, Gx, Rx, xx }[0-3]
++    movu           m4, [srcq+wq*2+mmsize] ; (byte) { Bx, Gx, Rx, xx }[4-7]
+     DEINTB          1,  0,  5,  4,  7     ; (word) { Gx, xx (m0/m4) or Bx, Rx (m1/m5) }[0-3]/[4-7]
+     pmaddwd        m3, m1, coeffV1        ; (dword) { Bx*BV + Rx*RV }[0-3]
+     pmaddwd        m2, m0, coeffV2        ; (dword) { Gx*GV }[0-3]
+     pmaddwd        m1, coeffU1            ; (dword) { Bx*BU + Rx*RU }[0-3]
+     pmaddwd        m0, coeffU2            ; (dword) { Gx*GU }[0-3]
+     paddd          m3, m6                 ; += rgb_UVrnd
+     paddd          m1, m6                 ; += rgb_UVrnd
+     paddd          m2, m3                 ; (dword) { V[0-3] }
+     paddd          m0, m1                 ; (dword) { U[0-3] }
+     pmaddwd        m3, m5, coeffV1        ; (dword) { Bx*BV + Rx*RV }[4-7]
+     pmaddwd        m1, m4, coeffV2        ; (dword) { Gx*GV }[4-7]
+     pmaddwd        m5, coeffU1            ; (dword) { Bx*BU + Rx*RU }[4-7]
+     pmaddwd        m4, coeffU2            ; (dword) { Gx*GU }[4-7]
+     paddd          m3, m6                 ; += rgb_UVrnd
+     paddd          m5, m6                 ; += rgb_UVrnd
 -    psrad          m2, 15
 -    psrad          m4, 15
 -    psrad          m1, 15
++    psrad          m0, 9
+     paddd          m1, m3                 ; (dword) { V[4-7] }
+     paddd          m4, m5                 ; (dword) { U[4-7] }
 -    packuswb       m0, m0                 ; (byte) { U[0-7] }
 -    packuswb       m2, m2                 ; (byte) { V[0-7] }
 -    movh   [dstUq+wq], m0
 -    movh   [dstVq+wq], m2
++    psrad          m2, 9
++    psrad          m4, 9
++    psrad          m1, 9
+     packssdw       m0, m4                 ; (word) { U[0-7] }
+     packssdw       m2, m1                 ; (word) { V[0-7] }
+ %if mmsize == 8
 -    packuswb       m0, m2                 ; (byte) { U[0-7], V[0-7] }
 -    movh   [dstUq+wq], m0
 -    movhps [dstVq+wq], m0
++    mova   [dstUq+wq], m0
++    mova   [dstVq+wq], m2
+ %else ; mmsize == 16
 -    add            wq, mmsize / 2
++    mova   [dstUq+wq], m0
++    mova   [dstVq+wq], m2
+ %endif ; mmsize == 8/16
++    add            wq, mmsize
+     jl .loop
+     REP_RET
+ %endif ; ARCH_X86_64 && %0 == 3
+ %endmacro
+ ; %1 = nr. of XMM registers for rgb-to-Y func
+ ; %2 = nr. of XMM registers for rgb-to-UV func
+ %macro RGB32_FUNCS 2
+ RGB32_TO_Y_FN %1, r, g, b, a
+ RGB32_TO_Y_FN %1, b, g, r, a, rgba
+ RGB32_TO_Y_FN %1, a, r, g, b, rgba
+ RGB32_TO_Y_FN %1, a, b, g, r, rgba
+ RGB32_TO_UV_FN %2, r, g, b, a
+ RGB32_TO_UV_FN %2, b, g, r, a, rgba
+ RGB32_TO_UV_FN %2, a, r, g, b, rgba
+ RGB32_TO_UV_FN %2, a, b, g, r, rgba
+ %endmacro
+ %if ARCH_X86_32
+ INIT_MMX mmx
+ RGB32_FUNCS 0, 0
+ %endif
+ INIT_XMM sse2
+ RGB32_FUNCS 8, 12
+ INIT_XMM avx
+ RGB32_FUNCS 8, 12
  ;-----------------------------------------------------------------------------
  ; YUYV/UYVY/NV12/NV21 packed pixel shuffling.
  ;
Simple merge
Simple merge
  0, 0, 37440, 0xd1bc5235
 -0, 3750, 37440, 0x158e6167
 -0, 7500, 37440, 0x0faa4481
 -0, 11250, 37440, 0x427158c5
 -0, 15000, 37440, 0x4eb53ac6
 -0, 18750, 37440, 0x99304eea
 -0, 22500, 37440, 0xcc554a6f
 -0, 26250, 37440, 0xabeb6c35
 -0, 30000, 37440, 0xddfc7e18
 -0, 33750, 37440, 0xaa79b504
 -0, 37500, 37440, 0x5cb1c839
 -0, 41250, 37440, 0x7e36ecca
 -0, 45000, 37440, 0xf486f425
 -0, 48750, 37440, 0xf1b4138f
 -0, 52500, 37440, 0x966f1a49
 -0, 56250, 37440, 0x5eff21da
 -0, 60000, 37440, 0x333f39b1
 -0, 63750, 37440, 0x62e5963e
 -0, 67500, 37440, 0x26930671
 -0, 71250, 37440, 0x27b4bb6c
 -0, 75000, 37440, 0xdbd07766
 -0, 78750, 37440, 0x04260104
 -0, 82500, 37440, 0x9b1e078b
 -0, 86250, 37440, 0xdf4e2474
 -0, 90000, 37440, 0x57d44986
 -0, 93750, 37440, 0x8780e34c
 -0, 97500, 37440, 0xf80c8bc0
 -0, 101250, 37440, 0x630a7583
 -0, 105000, 37440, 0x235ae089
 -0, 108750, 37440, 0x984b8f0e
 -0, 112500, 37440, 0x865cf592
 -0, 116250, 37440, 0x70f376f2
 -0, 120000, 37440, 0x8b30c035
 -0, 123750, 37440, 0xde772d79
 -0, 127500, 37440, 0x8e076be5
 -0, 131250, 37440, 0x3dc2bd9f
 -0, 135000, 37440, 0xb782eb67
 -0, 138750, 37440, 0x02025d73
 -0, 142500, 37440, 0x86bbbce8
 -0, 146250, 37440, 0xd6554f62
 -0, 150000, 37440, 0xb831b917
 -0, 153750, 37440, 0x80643560
 -0, 157500, 37440, 0x4ecf9afd
 -0, 161250, 37440, 0x9ce51e0b
 -0, 165000, 37440, 0x179466cd
 -0, 168750, 37440, 0x145fc900
 -0, 172500, 37440, 0xb1b50402
 -0, 176250, 37440, 0x0a87552a
 -0, 180000, 37440, 0x8f53821d
 -0, 183750, 37440, 0x1c07c825
 -0, 187500, 37440, 0x49dde82f
 -0, 191250, 37440, 0xb1a32605
 -0, 195000, 37440, 0x410f3cd5
 -0, 198750, 37440, 0xff5e6696
 -0, 202500, 37440, 0x96f678c9
 -0, 206250, 37440, 0x6c9e9e68
 -0, 210000, 37440, 0x79a2a655
 -0, 213750, 37440, 0xf237bd6c
 -0, 217500, 37440, 0x4051b611
 -0, 221250, 37440, 0xc7ccc918
 -0, 225000, 37440, 0xbd02c122
 -0, 228750, 37440, 0xacb3c881
 -0, 232500, 37440, 0x2abdb940
 -0, 236250, 37440, 0x19d5be85
 -0, 240000, 37440, 0xfa5fb1ba
 -0, 243750, 37440, 0xdae7a7aa
 -0, 247500, 37440, 0x6b0f9f69
 -0, 251250, 37440, 0x353e8201
 -0, 255000, 37440, 0xa21443aa
 -0, 258750, 37440, 0x66c8d7e0
 -0, 262500, 37440, 0xc332068e
 -0, 266250, 37440, 0x71431b9b
 -0, 270000, 37440, 0x392f15cb
 -0, 273750, 37440, 0x95a146bb
 -0, 277500, 37440, 0x7c51740a
 -0, 281250, 37440, 0xa3bdd43c
 -0, 285000, 37440, 0xa079f965
 -0, 288750, 37440, 0xa95423ea
 -0, 292500, 37440, 0xd1bd2c67
 -0, 296250, 37440, 0x6cf82844
 -0, 300000, 37440, 0xd401e128
 -0, 303750, 37440, 0x1f7db118
 -0, 307500, 37440, 0x2e0a65a9
 -0, 311250, 37440, 0x321c1c40
 -0, 315000, 37440, 0x95b2a127
 -0, 318750, 37440, 0xa1471f4b
 -0, 322500, 37440, 0x29d148c0
 -0, 326250, 37440, 0x24c07107
 -0, 330000, 37440, 0x0ead678d
 -0, 333750, 37440, 0xd0ca6495
 -0, 337500, 37440, 0x08f935ef
 -0, 341250, 37440, 0xb5ec3c38
 -0, 345000, 37440, 0xce371628
 -0, 348750, 37440, 0x68170812
 -0, 352500, 37440, 0xe222699e
 -0, 356250, 37440, 0xd688706c
 -0, 360000, 37440, 0x81a033f9
 -0, 363750, 37440, 0x28bd0fbf
 -0, 367500, 37440, 0xe36db7b2
 -0, 371250, 37440, 0x30559121
 -0, 375000, 37440, 0xbf2b5fc8
 -0, 378750, 37440, 0x4b427672
 -0, 382500, 37440, 0x0544b0b4
 -0, 386250, 37440, 0x38a70b06
 -0, 390000, 37440, 0x4ed62607
 -0, 393750, 37440, 0x6efe8ea6
 -0, 397500, 37440, 0x81197e11
 -0, 401250, 37440, 0xf4060050
 -0, 405000, 37440, 0xaf205f13
 -0, 408750, 37440, 0x5fa21382
 -0, 412500, 37440, 0x8627ad05
 -0, 416250, 37440, 0xf7130133
 -0, 420000, 37440, 0x76dea7ba
 -0, 423750, 37440, 0x1dbae1be
 -0, 427500, 37440, 0x74a933f7
 -0, 431250, 37440, 0xbdcd41a3
 -0, 435000, 37440, 0xf0fe8c1c
 -0, 438750, 37440, 0xc0036222
 -0, 442500, 37440, 0x3058385c
 -0, 446250, 37440, 0x68141016
 +0, 7500, 37440, 0x158e6167
 +0, 11250, 37440, 0x0faa4481
 +0, 15000, 37440, 0x427158c5
 +0, 18750, 37440, 0x4eb53ac6
 +0, 22500, 37440, 0x99304eea
 +0, 26250, 37440, 0xcc554a6f
 +0, 30000, 37440, 0xabeb6c35
 +0, 33750, 37440, 0xddfc7e18
 +0, 37500, 37440, 0xaa79b504
 +0, 41250, 37440, 0x5cb1c839
 +0, 45000, 37440, 0x7e36ecca
 +0, 48750, 37440, 0xf486f425
 +0, 52500, 37440, 0xf1b4138f
 +0, 56250, 37440, 0x966f1a49
 +0, 60000, 37440, 0x5eff21da
 +0, 63750, 37440, 0x333f39b1
 +0, 67500, 37440, 0x62e5963e
 +0, 71250, 37440, 0x26930671
 +0, 75000, 37440, 0x27b4bb6c
 +0, 78750, 37440, 0xdbd07766
 +0, 82500, 37440, 0x04260104
 +0, 86250, 37440, 0x9b1e078b
 +0, 90000, 37440, 0xdf4e2474
 +0, 93750, 37440, 0x57d44986
 +0, 97500, 37440, 0x8780e34c
 +0, 101250, 37440, 0xf80c8bc0
 +0, 105000, 37440, 0x630a7583
 +0, 108750, 37440, 0x235ae089
 +0, 112500, 37440, 0x984b8f0e
 +0, 116250, 37440, 0x865cf592
 +0, 120000, 37440, 0x70f376f2
 +0, 123750, 37440, 0x8b30c035
 +0, 127500, 37440, 0xde772d79
 +0, 131250, 37440, 0x8e076be5
 +0, 135000, 37440, 0x3dc2bd9f
 +0, 138750, 37440, 0xb782eb67
 +0, 142500, 37440, 0x02025d73
 +0, 146250, 37440, 0x86bbbce8
 +0, 150000, 37440, 0xd6554f62
 +0, 153750, 37440, 0xb831b917
 +0, 157500, 37440, 0x80643560
 +0, 161250, 37440, 0x4ecf9afd
 +0, 165000, 37440, 0x9ce51e0b
 +0, 168750, 37440, 0x179466cd
 +0, 172500, 37440, 0x145fc900
 +0, 176250, 37440, 0xb1b50402
 +0, 180000, 37440, 0x0a87552a
 +0, 183750, 37440, 0x8f53821d
 +0, 187500, 37440, 0x1c07c825
 +0, 191250, 37440, 0x49dde82f
 +0, 195000, 37440, 0xb1a32605
 +0, 198750, 37440, 0x410f3cd5
 +0, 202500, 37440, 0xff5e6696
 +0, 206250, 37440, 0x96f678c9
 +0, 210000, 37440, 0x6c9e9e68
 +0, 213750, 37440, 0x79a2a655
 +0, 217500, 37440, 0xf237bd6c
 +0, 221250, 37440, 0x4051b611
 +0, 225000, 37440, 0xc7ccc918
 +0, 228750, 37440, 0xbd02c122
 +0, 232500, 37440, 0xacb3c881
 +0, 236250, 37440, 0x2abdb940
 +0, 240000, 37440, 0x19d5be85
 +0, 243750, 37440, 0xfa5fb1ba
 +0, 247500, 37440, 0xdae7a7aa
 +0, 251250, 37440, 0x6b0f9f69
 +0, 255000, 37440, 0x353e8201
 +0, 258750, 37440, 0xa21443aa
 +0, 262500, 37440, 0x66c8d7e0
 +0, 266250, 37440, 0xc332068e
 +0, 270000, 37440, 0x71431b9b
 +0, 273750, 37440, 0x392f15cb
 +0, 277500, 37440, 0x95a146bb
 +0, 281250, 37440, 0x7c51740a
 +0, 285000, 37440, 0xa3bdd43c
 +0, 288750, 37440, 0xa079f965
 +0, 292500, 37440, 0xa95423ea
 +0, 296250, 37440, 0xd1bd2c67
 +0, 300000, 37440, 0x6cf82844
 +0, 303750, 37440, 0xd401e128
 +0, 307500, 37440, 0x1f7db118
 +0, 311250, 37440, 0x2e0a65a9
 +0, 315000, 37440, 0x321c1c40
 +0, 318750, 37440, 0x95b2a127
 +0, 322500, 37440, 0xa1471f4b
 +0, 326250, 37440, 0x29d148c0
 +0, 330000, 37440, 0x24c07107
 +0, 333750, 37440, 0x0ead678d
 +0, 337500, 37440, 0xd0ca6495
 +0, 341250, 37440, 0x08f935ef
 +0, 345000, 37440, 0xb5ec3c38
 +0, 348750, 37440, 0xce371628
 +0, 352500, 37440, 0x68170812
 +0, 356250, 37440, 0xe222699e
 +0, 360000, 37440, 0xd688706c
 +0, 363750, 37440, 0x81a033f9
 +0, 367500, 37440, 0x28bd0fbf
 +0, 371250, 37440, 0xe36db7b2
 +0, 375000, 37440, 0x30559121
 +0, 378750, 37440, 0xbf2b5fc8
 +0, 382500, 37440, 0x4b427672
 +0, 386250, 37440, 0x0544b0b4
 +0, 390000, 37440, 0x38a70b06
 +0, 393750, 37440, 0x4ed62607
 +0, 397500, 37440, 0x6efe8ea6
 +0, 401250, 37440, 0x81197e11
 +0, 405000, 37440, 0xf4060050
 +0, 408750, 37440, 0xaf205f13
 +0, 412500, 37440, 0x5fa21382
 +0, 416250, 37440, 0x8627ad05
 +0, 420000, 37440, 0xf7130133
 +0, 423750, 37440, 0x76dea7ba
 +0, 427500, 37440, 0x1dbae1be
 +0, 431250, 37440, 0x74a933f7
 +0, 435000, 37440, 0xbdcd41a3
 +0, 438750, 37440, 0xf0fe8c1c
 +0, 442500, 37440, 0xc0036222
 +0, 446250, 37440, 0x3058385c
- 0, 450000, 37440, 0x68141016