1. 05 Jul, 2012 5 commits
  2. 04 Jul, 2012 27 commits
  3. 03 Jul, 2012 8 commits
    • Martin Storsjö's avatar
      ismindex: Verify that all bitrate variants match · 30327865
      Martin Storsjö authored
      In Smooth Streaming, the fragments are addressed by time, and
      the manifest only stores one list of time offests for all streams,
      so all streams need to have identical fragment offsets. Warn if
      this isn't the case, so that the user can fix the files instead of
      getting failures at runtime when the fragments can't be found.
      Signed-off-by: 's avatarMartin Storsjö <martin@martin.st>
      30327865
    • Martin Storsjö's avatar
    • Diego Biurrun's avatar
    • Diego Biurrun's avatar
      anm: fix a few Doxygen comments · 4051be6f
      Diego Biurrun authored
      4051be6f
    • Diego Biurrun's avatar
      misc typo and wording fixes · 09f21198
      Diego Biurrun authored
      09f21198
    • Reinhard Tartler's avatar
      attributes: add av_noreturn · 22662ca5
      Reinhard Tartler authored
      Also use it in the declaration of the various exit_program
      implementations in avtools.
      
      inspired by a clang-scan report.
      22662ca5
    • Reinhard Tartler's avatar
      attributes: drop pointless define guards · a1641e95
      Reinhard Tartler authored
      the av_-prefixed attributes must not be defined outside of this file
      a1641e95
    • Mans Rullgard's avatar
      configure: do not disable av_always_inline with --enable-small · 06eb4f08
      Mans Rullgard authored
      Currently, --enable-small turns av_always_inline into plain inline,
      which is more or less ignored by the compiler.  While the intent of
      this is probably to reduce code size by avoiding some inlining, it
      has more far-reaching effects.
      
      We use av_always_inline in two situations:
      
      1. The body of a function is smaller than the call overhead.
         Instances of these are abundant in libavutil, the bswap.h
         functions being good examples.
      
      2. The function is a template relying on constant propagation
         through inlined calls for sane code generation.  These are
         often found in motion compensation code.
      
      Both of these types of functions should be inlined even if targeting
      small code size.
      
      Although GCC has heuristics for detecting the first of these types,
      it is not always reliable, especially when the function uses inline
      assembler, which is often the reason for having those functions in
      the first place, so making it explicit is generally a good idea.
      
      The size increase from inlining template-type functions is usually
      much smaller than it seems due to different branches being mutually
      exclusive between the different invocations.  The dead branches can,
      however, only be removed after inlining and constant propagation have
      been performed, which means the initial cost estimate for inlining
      these is much higher than is actually the case, resulting in GCC
      often making bad choices if left to its own devices.
      
      Furthermore, the GCC inliner limits how much it allows a function to
      grow due to automatic inlining of calls, and this appears to not take
      call overhead into account.  When nested inlining is used, the limit
      may be hit before the innermost level is reached.  In some cases, this
      has prevented inlining of type 1 functions as defined above, resulting
      in significant performance loss.
      Signed-off-by: 's avatarMans Rullgard <mans@mansr.com>
      06eb4f08