Skip to content
Snippets Groups Projects
  1. Feb 11, 2011
  2. Feb 10, 2011
  3. Feb 09, 2011
    • Ralph Giles's avatar
      Add a new speed level between the old levels 2 and 3. · 40d573e1
      Ralph Giles authored
      This change inserts a new speed level OC_SP_LEVEL_NOSATD (3)
      between OC_SP_LEVEL_FAST_ANALYSIS (still 2) and OC_SP_LEVEL_NOMC
      (now 4). The new speed level further accelerates analysis by
      using the cheaper SAD (sum of absolute differences) metric
      for measuring distortion instead of the more expensive SATD
      (sum of absolute transformed differences).
      
      The new level is intermediate in both quality and encoding
      speed between the adjacent speed levels, allowing smoother
      adaptation to realtime encoding contraints. In particular
      it's much closer to realtime 720p30 on current Core2 cpus.
      
      The cheaper SAD metric is now also used for the fastest NOMC
      speed level. This is a reduction in quality for this speed level
      as well, but it also about 10% faster. Since the NOMC mode is
      already very poor quality, used as a last resort when performance
      is critical, we deemed this a better option than adding a further
      NOMC_SATD mode or keeping the old NOMC behaviour.
      
      To support the new speed level, parallel copies of the OC_MODE_RD
      table are kept, one for each metric. The encoder context keeps
      track of which on to use based ont eh current speed level. Analysis
      code chooses which metric to calculate and use on the fly. The extra
      conditionals did not measurably affect encoding time in benchmarks.
      
      The metrics collection and fitting code used to generate modedec.h
      is also updated to track both SAD and SATD measurements.
      
      Thanks to Tim Terriberry and Greg Maxwell for their comments and
      and contributions in reviewing this patch. The implementation
      of oc_enc_frag_intra_sad is based on one from earlier development
      work by Greg Maxwell.
      
      svn path=/trunk/theora/; revision=17821
      40d573e1
    • Ralph Giles's avatar
      Print summary timing information at the end of encoder_example runs. · 67fe6b35
      Ralph Giles authored
      This is helpful for casual benchmarking and performance comparision.
      We use the very portable time.h clock() call and the beginning and
      end of the main function and calculate the average rate in millions
      of pixels per second and fraction of realtime. Unfortunately clock()
      isn't accurate enough to be useful for per-frame statistics.
      
      svn path=/trunk/theora/; revision=17820
      67fe6b35
    • Ralph Giles's avatar
      Update the noop test programmes for the additional th_info validation · fcc3ddd7
      Ralph Giles authored
      added in c17760.
      
      svn path=/trunk/theora/; revision=17819
      fcc3ddd7
  4. Jan 20, 2011
  5. Jan 15, 2011
  6. Jan 09, 2011
  7. Dec 16, 2010
    • Ralph Giles's avatar
      Update the libtheora_info example for the previous commit. · 54290cc6
      Ralph Giles authored
      This example program allocates a minimal encoder context so
      it can query settings through th_encode_ctl(). As of r17760
      setting the framerate to a non-zero/zero value is required.
      
      svn path=/trunk/theora/; revision=17761
      54290cc6
    • Ralph Giles's avatar
      Reject th_info structs with a zero in the frame rate rational. · ef3c399f
      Ralph Giles authored
      The specification says that the frame rate numerator and
      denominator MUST both be greater than zero. This wasn't
      checked as part of the structure validation code, and in
      fact passing a zero value here caused a segfault.
      
      The code now checks for this in oc_state_init() and returns
      TH_EINVAL, which is causes th_encode_alloc() and oc_decode_alloc()
      to return NULL.
      
      A check for that NULL return is also added to encoder_example.c
      to show that it may fail when an invalid th_info parameter is
      passed.
      
      svn path=/trunk/theora/; revision=17760
      ef3c399f
  8. Dec 14, 2010
  9. Dec 13, 2010
  10. Dec 10, 2010
    • Timothy B. Terriberry's avatar
      Make PROC and ENDP functional in arm2gnu.pl. · 00323a02
      Timothy B. Terriberry authored
      PROC now marks the corresponding symbol as a function, and ENDP emits
       an appropriate .size directive for it.
      These should help tools identify these functions, though valgrind still
       can't associate the function name with the corresponding code.
      
      svn path=/trunk/theora/; revision=17745
      00323a02
  11. Dec 09, 2010
    • Ralph Giles's avatar
      Also silence the input file summary lines with -q. · 3e1e76b9
      Ralph Giles authored
      I'd found these helpful for script debugging, but really it's
      better for scripts to print their own version of this information.
      The -q option should really mean no non-error output.
      
      svn path=/trunk/theora/; revision=17744
      3e1e76b9
  12. Dec 07, 2010
    • Cristian Adam's avatar
      Fixed a VisualC asm specific bug. · 553c9f51
      Cristian Adam authored
      Removed _BIND_TO_CURRENT_CRT_VERSION preprocessor directive for VS2008 project files.
      Now debug version of dump_video and encoder_example work.
      
      svn path=/trunk/theora/; revision=17739
      553c9f51
    • Timothy B. Terriberry's avatar
      Properly initialize the DCT scratch space. · 8457ba67
      Timothy B. Terriberry authored
      r17728 now expects this to be cleared to zero before entering
       oc_enc_block_transform_quantize(), but we weren't doing so.
      
      svn path=/trunk/theora/; revision=17738
      8457ba67
    • Timothy B. Terriberry's avatar
      Fix MSVC compilation broken in r17736. · 90a21988
      Timothy B. Terriberry authored
      It helps to actually rename the function after changing its declaration.
      
      svn path=/trunk/theora/; revision=17737
      90a21988
    • Timothy B. Terriberry's avatar
      Minor fix-ups to r17728. · d18ada0a
      Timothy B. Terriberry authored
      Convert references to the stack buffer in the MMX fDCT to use esp-relative
       offsets, saving a register.
      Move the MSVC MMX fDCT into the MMXEXT section (as was done for the gcc one),
       since it now requires pshufw for the zig-zagging.
      
      svn path=/trunk/theora/; revision=17736
      d18ada0a
    • Cristian Adam's avatar
      Fixed one GCC to Visual C asm instruction call. Now the optimized version... · ac6497cb
      Cristian Adam authored
      Fixed one GCC to Visual C asm instruction call. Now the optimized version produces the same output as the C version.
      
      svn path=/trunk/theora/; revision=17734
      ac6497cb
    • Timothy B. Terriberry's avatar
      Move zig-zagging from quantization into the fDCT. · 8a8fa360
      Timothy B. Terriberry authored
      This removes one of the transposes from the fDCT, and avoids several zig-zag
       lookups during tokenization.
      This change also makes the encoder iDCT clear the input buffer like the
       decoder, which can be re-used for the next block, avoiding the need for a
       memcpy or memset in the tokenizer.
      This gives a 1.3% speed-up at the default speed-level (1), and a 3.1% speed-up
       at speed-level 2 (for 480p, on x86-64).
      
      svn path=/trunk/theora/; revision=17728
      8a8fa360
  13. Dec 02, 2010
  14. Nov 30, 2010
  15. Nov 25, 2010
  16. Nov 24, 2010
    • Timothy B. Terriberry's avatar
      Fix out-of-date OC_ARM_ASM_ARMV6 usage. · 76ac1b90
      Timothy B. Terriberry authored
      This was ultimately named OC_ARM_ASM_MEDIA instead.
      It shouldn't have mattered in this case, as it shouldn't be possible to get
       OC_ARM_ASM_MEDIA without OC_ARM_ASM_EDSP, but clean it up anyway.
      
      svn path=/trunk/theora/; revision=17646
      76ac1b90
    • Ralph Giles's avatar
      Rename OC_SAD_SHIFT to OC_SATD_SHIFT. · 52c9a038
      Ralph Giles authored
      The SAD and SADT metrics have different ranges, so it is
      necessary to use different scale factors when comparing
      them.
      
      Originally we used SAD, and when SATD was added, the
      scale factor was updated without changing the name.
      This commit finally does so. However, it is intended
      that the code switch back to the SAD metric at higher
      speed levels, we also keep OC_SAD_SHIFT with its
      appropriate value, 6 according to Tim.
      
      Likewise, OC_SAD_BINS is renamed OC_COMP_BINS in
      expectation of supporting mode tables for both
      metrics.
      
      svn path=/trunk/theora/; revision=17645
      52c9a038
Loading