Skip to content
Snippets Groups Projects
  1. Feb 29, 2012
    • Attila Nagy's avatar
      Packing bitstream on-the-fly with delayed context updates · 52cf4dca
      Attila Nagy authored
      Produce the token partitions on-the-fly, while processing each MB.
      Context is updated at the beginning of each frame based on the
      previoud frame's counters. Optimally encoder outputs partitions in
      separate buffers. For frame based output, partitions are concatenated
      internally.
      
      Limitations:
          - enabled just in combination with realtime-only mode
          - number of encoding threads has to be equal or less than the
          number of token partitions. For this reason, by default the encoder
          will do 8 token partitions.
          - vpxenc supports partition output (-P) just in combination with
          IVF output format (--ivf)
      
      Performance:
          - Realtime encoder can be up to 13% faster (ARM) depending on the number
          of threads and bitrate settings. Constant gain over the 5-16 speed
          range.
          - Token buffer reduced from one frame to 8 MBs
      
      Quality:
          - quality is affected by the delayed context updates. This again
          dependents on input material, speed and bitrate settings. For VC
          style input the loss seen is up to 0.2dB. If error-resilient=2
          mode is used than the effect of this change is negligible.
      
      Example:
      ./configure --enable-realtime-only --enable-onthefly-bitpacking
      ./vpxenc --rt --end-usage=1 --fps=30000/1000 -w 640 -h 480
      --target-bitrate=1000 --token-parts=3 --static-thresh=2000
      --ivf -P -t 4 -o strm.ivf tanya_640x480.yuv
      
      Change-Id: I127295cb85b835fc287e1c0201a67e378d025d76
      52cf4dca
  2. Feb 28, 2012
  3. Feb 27, 2012
  4. Feb 23, 2012
  5. Feb 22, 2012
    • Marco Paniconi's avatar
      Remove the frame rate factor for key frame size. · 507ee87e
      Marco Paniconi authored
      When temporal layers is used (i.e., number_of_layers > 1),
      we don't use the frame rate boost for setting the key
      frame target size. The factor was forcing the target size to be
      always at its minimum (2* per_frame_bandwidth) for low frame rates
      (i.e., base layer frame rate).
      
      Generally we should modify or remove this frame rate factor;
      for now we turn if off for number_of_layers > 1.
      
      Change-Id: Ia5acf406c9b2f634d30ac2473adc7b9bf2e7e6c6
      507ee87e
  6. Feb 21, 2012
  7. Feb 17, 2012
  8. Feb 16, 2012
    • Johann Koenig's avatar
      Clarify 'max_sad' usage · 6b151d43
      Johann Koenig authored
      Depending on implementation the optimized SAD functions may return early
      when the calculated SAD exceeds max_sad.
      
      Change-Id: I05ce5b2d34e6d45fb3ec2a450aa99c4f3343bf3a
      6b151d43
    • Johann Koenig's avatar
      OS X shell is incompatible with echo -n · 5f0b303c
      Johann Koenig authored
      Built in echo in 'sh' on OS X does not support -n (exclude trailing
      newline). It's not necessary so just leave it off. Fixes issue 390.
      
      Build include guard using 'symbol' so that it is more likely to be
      unique.
      
      Change-Id: I4bc6aa1fc5e02228f71c200214b5ee4a16d56b83
      5f0b303c
    • Fritz Koenig's avatar
      Include path fix for building against Android NDK. · 3653fb47
      Fritz Koenig authored
      cpu-features.h is not in the common paths, add
      to the cflags for Android.
      
      Change-Id: Icbafc7600d72f6b59ffb030f6ab80ee6860332bb
      3653fb47
    • John Koleszar's avatar
      vpxenc: initial implementation of multistream support · 9e50ed7f
      John Koleszar authored
      Add the ability to specify multiple output streams on the command line.
      Streams are delimited by --, and most parameters inherit from previous
      streams.
      
      In this implementation, resizing streams is still not supported. It
      does not make use of the new multistream support in the encoder either.
      Two pass support runs all streams independently, though it's
      theoretically possible that we could combine firstpass runs in the
      future. The logic required for this is too tricky to do as part of this
      initial implementation. This is mostly an effort to get the parameter
      passing and independent streams working from the application's
      perspective, and a later commit will add the rescaling and
      multiresolution support.
      
      Change-Id: Ibf18c2355f54189fc91952c734c899e5c072b3e0
      9e50ed7f
    • John Koleszar's avatar
      vpxenc: factor out input open/close · 732cb9a6
      John Koleszar authored
      Simplify some of the file I/O for later commits which will add multistream
      support
      
      Change-Id: Idf1a05f3a29c95331d0c4a6ea5960904e4897fd4
      732cb9a6
    • John Koleszar's avatar
      vpxenc: add warning()/fatal() helpers · c535025c
      John Koleszar authored
      Cosmetic. Allows exiting with an error message without opening a new
      scope.
      
      Change-Id: If227b29b825f0241acea79dd38f19e524552ee18
      c535025c
    • John Koleszar's avatar
      decoder: reset segmentation map on keyframes · e8223bd2
      John Koleszar authored
      Refactoring some of the mode decoding logic introduced a bug where
      the segmentation maps would not be properly reset on keyframes.
      
      http://code.google.com/p/webm/issues/detail?id=378
      
      The text of the bug is somewhat misleading as I initially read it to
      imply the bug was present in v0.9.7-p1 (Cayuga), but note the text
      "master", which indicates this was something subsequent. This issue
      bisects back to v0.9.7-p1-84-ga99c20c, so unfortunately it was broken
      during the Duclair release.
      
      Thanks to Alexei Leonenko for investigating the root cause.
      
      Change-Id: I9713c9f070eb37b31b3b029d9ef96be9b6ea2def
      e8223bd2
    • Makoto Kato's avatar
      Support Android x86 NDK build · 7989bb7f
      Makoto Kato authored
      On Android NDK, rand() is inlined function.  But, on our SSE optimization,
      we need symbol for rand()
      
      Change-Id: I42ab00e3255208ba95d7f9b9a8a3605ff58da8e1
      7989bb7f
    • Scott LaVarnway's avatar
      Simplify mb_to_x_edge calculation during mode decoding · 6776bd62
      Scott LaVarnway authored
      Change-Id: Ibcb35c32bf24c1d241090e24c5e2320e4d3ba901
      6776bd62
    • Scott LaVarnway's avatar
      Merge "decodemv cleanup/improvements" · a5879f7c
      Scott LaVarnway authored
      a5879f7c
    • Scott LaVarnway's avatar
      decodemv cleanup/improvements · 12ee845e
      Scott LaVarnway authored
      Removed unnecessary variables, unrolled functions, eliminated
      unnecessary mv bounds checks and branches.
      
      Change-Id: I02d034c70cd97b65025d59dd67c695e1db529f0b
      12ee845e
    • Attila Nagy's avatar
      Consolidate C version of token packing functions · d02e74a0
      Attila Nagy authored
      Replace inner loops of pack_mb_row_tokens_c and
      pack_tokens_into_partitions_c with a call to pack_tokens_c.
      
      Change-Id: I0341554fb154a14a5dadb63f8fc78010724c2c33
      d02e74a0
    • Attila Nagy's avatar
      Multithreaded encoder, late sync loopfilter · 78071b3b
      Attila Nagy authored
      Second shot at this...
      
      Sync with loopfilter thread as late as possible, usually just at the
      beginning of next frame encoding. This returns control to application
      faster and allows a better multicore scaling.
      
      When PSNR packets are generated the final filtered frame is needed
      imediatly so we cannot delay the sync. Same has to be done when
      internal frame is previewed.
      
      Change-Id: I64e110c8b224dd967faefffd9c93dd8dbad4a5b5
      78071b3b
Loading