1. 12 Jun, 2013 1 commit
    • Scott LaVarnway's avatar
      Quick fix to stop vpxdec infinite loop · 9dead02b
      Scott LaVarnway authored
      vpxdec stays in a loop when decoding vp9.  This patch is a
      quick fix to stop the loop when all data has been decoded.
      Eventually we should move the vp9_get_raw_frame() call into
      vp8_get_frame().
      
      Change-Id: I3f97b6b4e1fe9ba69f746a29fc54c3304956f661
      9dead02b
  2. 07 Jun, 2013 1 commit
  3. 29 May, 2013 1 commit
    • Dmitry Kovalev's avatar
      Compressed/uncompressed frame header changes. · 18c83b37
      Dmitry Kovalev authored
      Adding API to read/write uncompressed frame header bits (it is not final
      yet). Separate functions to read/write uncompressed header. Moving
      clr_type, error_resilient_mode, refresh_frame_context,
      frame_parallel_decoding_mode, frame_context_idx from compressed partition
      to uncompressed frame header.
      
      Change-Id: Id3ed8a387980c652ae147549412f4ec24a0a5bd0
      18c83b37
  4. 28 May, 2013 1 commit
  5. 21 May, 2013 1 commit
    • Dmitry Kovalev's avatar
      Adding API to read/write uncompressed frame header bits. · df037b61
      Dmitry Kovalev authored
      The API is not final yet and can be changed. Actual layout of
      uncompressed frame part will be finalized later. Right now moving
      clr_type, error_resilient_mode, refresh_frame_context,
      frame_parallel_decoding_mode from first compressed partition to
      uncompressed frame part.
      
      Change-Id: I3afc5d4ea92c5a114f4c3d88f96858cccc15b76e
      df037b61
  6. 20 May, 2013 1 commit
    • Jingning Han's avatar
      Give VP9 a different sync code from VP8 · 2c93a8ed
      Jingning Han authored
      The new code is 0x49, 0x83, 0x42
      
      There is nothing particularly special about this code bitstream wise.
      Its derivation is the word "sync" coded using 4x6bit alphabetic indices.
      
      Change-Id: Ie2430a854af32ddc5a5c25a6c1c90cf6497ba647
      2c93a8ed
  7. 15 May, 2013 1 commit
  8. 29 Apr, 2013 1 commit
    • Johann's avatar
      Match unsigned types · d82eb9d1
      Johann authored
      Fixes build warning in MSVC:
      vp9\vp9_dx_iface.c(420) : warning C4018: '<' : signed/unsigned mismatch
      vp9\vp9_dx_iface.c(423) : warning C4018: '<' : signed/unsigned mismatch
      
      Change-Id: Ia238071aee94b2f882c1e74c380adc3df506dfb6
      d82eb9d1
  9. 23 Apr, 2013 1 commit
    • Johann's avatar
      Improve sign consistency. · ac980b71
      Johann authored
      Fix warning on windows: signed/unsigned mismatch on lines 415, 454
      
      Comparison was between size_t data_sz >= int index_sz on 415 and
      unsigned int data_sz >= int index_sz on 454. Both might be changed to
      size_t but that would be tracing and replacing all comparisons is
      outside the scope of this change.
      
      In the rest of these two functions ensure unsigned values are used
      consistently.
      
      Change-Id: I922b399ceca612a92f44b9d1d331c1c6bae9d768
      ac980b71
  10. 02 Apr, 2013 1 commit
  11. 27 Mar, 2013 1 commit
  12. 14 Mar, 2013 2 commits
    • John Koleszar's avatar
      Fix pulsing issue with scaling · 9b7be888
      John Koleszar authored
      Updates the YV12_BUFFER_CONFIG structure to be crop-aware. The
      exiting width/height parameters are left unchanged, storing the
      width and height algined to a 16 byte boundary. The cropped
      dimensions are added as new fields.
      
      This fixes a nasty visual pulse when switching between scaled and
      unscaled frame dimensions due to a mismatch between the scaling
      ratio and the 16-byte aligned sizes.
      
      Change-Id: Id4a3f6aea6b9b9ae38bdfa1b87b7eb2cfcdd57b6
      9b7be888
    • John Koleszar's avatar
      Add VP9_GET_REFERENCE control · b3c350a1
      John Koleszar authored
      This is like VP8_COPY_REFERENCE, but returns a pointer to the reference
      frame rather than a copy of it. This is useful when the application
      doesn't know what the size of the reference is, as is the case when
      scaling is in effect.
      
      Change-Id: I63667109f65510364d0e397ebe56217140772085
      b3c350a1
  13. 13 Mar, 2013 1 commit
    • John Koleszar's avatar
      fix superframe index marker masks · bd9cd9a1
      John Koleszar authored
      The superframe index marker byte carries data in the lower 5 bits. Only the
      upper 3 should be used as part of the mask to detect it. By masking with
      0xf0, the previous code was incorrect for frames over 65k bytes.
      
      Change-Id: I6248889f5af227457f359a56b2348ef6db87a3b4
      bd9cd9a1
  14. 05 Mar, 2013 1 commit
    • John Koleszar's avatar
      Add 'superframe' index · 522d4bf8
      John Koleszar authored
      A 'superframe' is a group of frames that share the same PTS, but have a
      defined decoding order. This commit adds the ability to append an index
      to such a group of frames, allowing for random access to the constituent
      frames. This could be useful for frame-level parallelism or partial
      decoding in a multilayer scenario.
      
      Decoding the stream serially without such an index should work as a
      fallback, and VP9/TestSuperframeIndexIsOptional verifies that.
      
      Change-Id: Idff83b7560e1a7077d8fb067bfbc45b567e78b1c
      522d4bf8
  15. 04 Mar, 2013 1 commit
    • Jingning Han's avatar
      Support 16K sequence coding · 5957b2b5
      Jingning Han authored
      Fixed a couple of variable/function definitions, as well as header
      handling to support 16K sequence coding at high bit-rates.
      
      The width and height are each specified by two bytes in the header.
      Use an extra byte to explicitly indicate the scaling factors in
      both directions, each ranging from 0 to 15.
      
      Tested coding up to 16400x16400 dimension.
      
      Change-Id: Ibc2225c6036620270f2c0cf5172d1760aaec10ec
      5957b2b5
  16. 05 Feb, 2013 1 commit
    • Ronald S. Bultje's avatar
      [WIP] Add column-based tiling. · 1407bdc2
      Ronald S. Bultje authored
      This patch adds column-based tiling. The idea is to make each tile
      independently decodable (after reading the common frame header) and
      also independendly encodable (minus within-frame cost adjustments in
      the RD loop) to speed-up hardware & software en/decoders if they used
      multi-threading. Column-based tiling has the added advantage (over
      other tiling methods) that it minimizes realtime use-case latency,
      since all threads can start encoding data as soon as the first SB-row
      worth of data is available to the encoder.
      
      There is some test code that does random tile ordering in the decoder,
      to confirm that each tile is indeed independently decodable from other
      tiles in the same frame. At tile edges, all contexts assume default
      values (i.e. 0, 0 motion vector, no coefficients, DC intra4x4 mode),
      and motion vector search and ordering do not cross tiles in the same
      frame.
      t log
      
      Tile independence is not maintained between frames ATM, i.e. tile 0 of
      frame 1 is free to use motion vectors that point into any tile of frame
      0. We support 1 (i.e. no tiling), 2 or 4 column-tiles.
      
      The loopfilter crosses tile boundaries. I discussed this briefly with Aki
      and he says that's OK. An in-loop loopfilter would need to do some sync
      between tile threads, but that shouldn't be a big issue.
      
      Resuls: with tiling disabled, we go up slightly because of improved edge
      use in the intra4x4 prediction. With 2 tiles, we lose about ~1% on derf,
      ~0.35% on HD and ~0.55% on STD/HD. With 4 tiles, we lose another ~1.5%
      on derf ~0.77% on HD and ~0.85% on STD/HD. Most of this loss is
      concentrated in the low-bitrate end of clips, and most of it is because
      of the loss of edges at tile boundaries and the resulting loss of intra
      predictors.
      
      TODO:
      - more tiles (perhaps allow row-based tiling also, and max. 8 tiles)?
      - maybe optionally (for EC purposes), motion vectors themselves
        should not cross tile edges, or we should emulate such borders as
        if they were off-frame, to limit error propagation to within one
        tile only. This doesn't have to be the default behaviour but could
        be an optional bitstream flag.
      
      Change-Id: I5951c3a0742a767b20bc9fb5af685d9892c2c96f
      1407bdc2
  17. 24 Jan, 2013 1 commit
    • Deb Mukherjee's avatar
      Adds an error-resilient mode with test · 01cafaab
      Deb Mukherjee authored
      Adds an error-resilient mode where frames can be continued
      to be decoded even when there are errors (due to network losses)
      on a prior frame. Specifically, backward updates are turned off
      and probabilities of various symbols are reset to defaults at
      the beginning of each frame. Further, the last frame's mvs are
      not used for the mv reference list, and the sorting of the
      initial list based on search on previous frames is turned off
      as well.
      
      Also adds a test where an arbitrary set of frames are skipped
      from decoding to simulate errors. The test verifies (1) that if
      the error frames are droppable - i.e. frame buffer updates have
      been turned off - there are no mismatch errors for the remaining
      frames after the error frames; and (2) if the error-frames are non
      droppable, there are not only no decoding errors but the mismatch
      PSNR between the decoder's version of the post-error frames and the
      encoder's version is at least 20 dB.
      
      Change-Id: Ie6e2bcd436b1e8643270356d3a930e8989ff52a5
      01cafaab
  18. 16 Jan, 2013 1 commit
    • John Koleszar's avatar
      Start to anonymize reference frames · da832a80
      John Koleszar authored
      Remove lst_fb_idx, gld_fb_idx, alt_fb_idx, refresh_last_frame,
      refresh_golden_frame, refresh_alt_ref_frame from common. Gold/Alt are
      encode side conventions. From the decoder's perspective, we want to be
      dealing with numbered references.
      
      Updates to active_ref 2 signal mode context switches, vestigial from
      refresh_alt_ref_frame. This needs some clean up to make sense with
      increased numbers of reference frames, as well as reimplementing the
      swapping of alt/golden which was previously done using the
      buffer-to-buffer copy mechanism removed in an earlier commit.
      
      Change-Id: I7334445158b7666f9295d2a2dd22aa03f4485f58
      da832a80
  19. 11 Jan, 2013 1 commit
  20. 18 Dec, 2012 1 commit
  21. 27 Nov, 2012 1 commit
    • John Koleszar's avatar
      Add vp9_ prefix to all vp9 files · fcccbcbb
      John Koleszar authored
      Support for gyp which doesn't support multiple objects in the same
      static library having the same basename.
      
      Change-Id: Ib947eefbaf68f8b177a796d23f875ccdfa6bc9dc
      fcccbcbb
  22. 15 Nov, 2012 2 commits
    • John Koleszar's avatar
      Pack invisible frames without lengths · 64bcffc1
      John Koleszar authored
      Modify the decoder to return the ending position of the bool decoder and
      use that as the starting position for the next frame.
      
      The constant-space algorithm for parsing the appended frame lengths is
      O(n^2), which is a potential DoS concern if n is unbounded. Revisit
      the appended lengths for use as partition lengths when multipartition
      support is added.
      
      In addition, this allows decoding of raw streams outside of a container
      without additional framing information, though it's insufficient to
      be able to remux said stream into a container.
      
      Change-Id: I71e801a9c3e37abe559a56a597635b0cbae1934b
      64bcffc1
    • John Koleszar's avatar
      support building vp8 and vp9 into a single lib · a9c7597a
      John Koleszar authored
      Change-Id: Ib8f8a66c9fd31e508cdc9caa662192f38433aa3d
      a9c7597a
  23. 06 Nov, 2012 1 commit
  24. 02 Nov, 2012 1 commit
    • John Koleszar's avatar
      vpx_scale: sync from master · 06f3e51d
      John Koleszar authored
      Update vpx_scale from current code in master, run style transform, fix
      lint warnings.
      
      Change-Id: I47eadeb5b6881d448ea3728537f9b8a5b5aac78e
      06f3e51d
  25. 01 Nov, 2012 2 commits
  26. 31 Oct, 2012 5 commits
  27. 24 Sep, 2012 1 commit
  28. 19 Sep, 2012 1 commit
    • Scott LaVarnway's avatar
      Moved vp8dx_get_raw_frame() call to vp8_get_frame() · e278673c
      Scott LaVarnway authored
      This change is necessary for the frame-based multithreading
      implementation.
      Since the postproc occurs in this call, vpxdec was modified to time around
      vpx_codec_get_frame()
      
      Change-Id: I389acf78b6003cd35e41becc16c893f7d3028523
      e278673c
  29. 17 Jul, 2012 1 commit
  30. 15 Jun, 2012 1 commit
    • John Koleszar's avatar
      Remove threading dependencies with --disable-multithread · 8df79e9d
      John Koleszar authored
      Avoid a pthreads dependency via pthread_once() when compiled with
      --disable-multithread.
      
      In addition, this synchronization is disabled for Win32 as well, even
      though we can be sure that the required primatives exist, so that the
      requirements on the application when built with --disable-multithread
      are consistent across platforms.
      
      Users using libvpx built with --disable-multithread in a multithreaded
      context should provide their own synchronization. Updated the
      documentation to vpx_codec_enc_init_ver() and vpx_codec_dec_init_ver()
      to note this requirement. Moved the RTCD initialization call to match
      this description, as previously it didn't happen until the first
      frame.
      
      Change-Id: Id576f6bce2758362188278d3085051c218a56d4a
      8df79e9d
  31. 04 May, 2012 2 commits
    • John Koleszar's avatar
      remove deprecated pre-v0.9.0 API · 2bf8fb58
      John Koleszar authored
      Remove a bunch of compatibility code dating back to before the initial
      libvpx release.
      
      Change-Id: Ie50b81e7d665955bec3d692cd6521c9583e85ca3
      2bf8fb58
    • Attila Nagy's avatar
      Make global data const · f039a85f
      Attila Nagy authored
      Removes all runtime initialization of global data. This commit is a
      squashed version of the following series cherry-picked from master.
      This is necessary because of a change that was merged to the tester
      that depends on the scaler being moved to the RTCD framework, which
      is a worthwhile thing to include in Eider anyway.
      
        - a91b42f0 Makes all global data in entropy.c const
        - b35a0db0 Makes all global data in tokenize.c const
        - 441cac8e Makes all mode token tables const
        - 5948a021 Ports vpx_xcaler to new RTCD method
        - 317d4244 Makes all mode token tables const part 2
      
      Change-Id: Ifeaea24df2b731e7c509fa6c6ef6891a374afc26
      f039a85f
  32. 19 Apr, 2012 1 commit
    • Attila Nagy's avatar
      Ports vpx_xcaler to new RTCD method · 5948a021
      Attila Nagy authored
      We can get rid of all remaining global initializers now:
       vp8_scale_machine_specific_config()
       vp8_initialize()
       vp8dx_initialize()
      
      Change-Id: I2825cea5d1c01ad9f6c45df49a0f86d803bfeb69
      5948a021