1. 17 Jul, 2018 3 commits
    • Yushin Cho's avatar
      [OBU] Adding frame header obu · 9619d202
      Yushin Cho authored
    • Yushin Cho's avatar
      [OBU] Assert fail in obu header if obu_extension is not zero · b03f699a
      Yushin Cho authored
      Also, add trailing bits for sequence OBU.
    • Yushin Cho's avatar
      [OBU] Start enabing OBU · ce364d12
      Yushin Cho authored
      Enable OBU Headers, also use the most recent code of libaom,
      so that rav1e generated bitstream can be decodable by current version of
      - Add OBU_Type enum
      - write_obu_header() funcion
      - Copy reference av1_pack_bitstream() C code fro libaom, where sequence
        and frame level OBUs are written.
      [OBU] Add Sequence Header and revise its functions
      [OBU] More on sequence header functions and types
      - Revise the type of Sequence struct members.
      - Add write_sequence_header2(), which is modified version of
        write_sequence_header() for OBU.
      - Add new color_config(), i.e. updated color info.
      - The structure of OBU is three parts:
      1) OBU header
      2) Size of OBU (written in leb128() format of AV1)
      3) OBU (with specific obu_type signlaed in OBU header)
      So, need to figure out how to post-write the size of obu (i.e, payload size) after
      writing obu. In libaom, this is implemented by calling obu_memmove() on byte buffer,
      which moves the obu data by payload size in bytes to create a gap between obu header
      and obu then write a obu size.
  2. 13 Jul, 2018 1 commit
  3. 20 Jun, 2018 1 commit
  4. 22 May, 2018 2 commits
    • Yushin Cho's avatar
      Add inter reference types and more. · afa6356e
      Yushin Cho authored
      - One INTRA frame followed by 29 INTER frames.
      - Disable show_existing_frame.
      - Add error_resilient, reference_mode, use_prev_frame_mvs to
      FrameInvariant struct.
      - Add inter reference types as constants.
    • Yushin Cho's avatar
      Part of work for enabling inter mode · 91ec9e06
      Yushin Cho authored
      - Factor out write_sequence_header()
      - Start adding necesary syntax in a frame header for
      key, intra_only, inter frames, etc.
  5. 02 Apr, 2018 2 commits
  6. 20 Mar, 2018 1 commit
    • Yushin Cho's avatar
      Basic speed level based on minimum partition block size · 6a90f9ce
      Yushin Cho authored
      Speed level decides the minimum partition block size, where recursive quadri-sect splitting stops at.
      0(slowest) : BLOCK_4X4
      1 : BLOCK_8X8
      2 : BLOCK_16X16
      3 : BLOCK_32X32
      4~10(fastest) : BLOCK_64X64
      Encoder option : "--speed=[0..10]" or "-s [0..10]".
      Exception: SuperBlock(SB)s on right or bottom frame borders always split down to BLOCK_4X4.
      In the future, min partition block size may be controlled by separate encoder option.
  7. 19 Mar, 2018 1 commit
    • Yushin Cho's avatar
      Enable partition : part 2, split down to 4x4 blocks & Encode exact image frame size · 7e21c9b5
      Yushin Cho authored
      Partitioning can split a SuperBlock downto 4x4 block sizes, i.e. the smallest possible size.
      Also, now rav1e does not encode padded image frame size such as multiple of 8 pixels but
      it can encode original image frame size (even odd size), then libaom decoder,
      i.e. aomdec can decode the original image frame size w/o padding!
      Also has_chroma() has been verfied working with its target usage, i.e. < BLOCK_8x8.
  8. 15 Mar, 2018 1 commit
    • Yushin Cho's avatar
      Enable partition : part 1, split down to 8x8 blocks · 5ecf002b
      Yushin Cho authored
      This is part 1 of ongoing work of enabling partition encoding.
      Every SuperBlock is partitioned down to 8x8 partitions,
      where pre-existing RDO mode decision decides intra modes
      (among three, DC_PRED, HORZ_PRED. VERT_PRED) for the 8x8 partition.
      If input image size is not multiple of 8 pixels,
      the coded image is padded to be multiple of 8 pixels in both width and height.
      TEST: subset1 images.
      cargo build --bin rav1e --release
      rm test.ivf test_rec.y4m test_dec.y4m
      ./target/release/rav1e /home/yushin/sequences/subset1-y4m/125_-_Québec_-_Pont_de_Québec_de_nuit_-_Septembre_2009.y4m -o test.ivf  -r test_rec.y4m --quantizer 50
      ./aom_test/aomdec test.ivf -o test_dec.y4m -v
      mpv --keep-open test_dec.y4m &
      mpv --keep-open test_rec.y4m &
      1. Fix partition down to 4x4 blocks, which will include fixing
         has_chroma() function
      2. RDO-based block size decision
  9. 27 Feb, 2018 1 commit
  10. 22 Feb, 2018 2 commits
  11. 11 Feb, 2018 1 commit
  12. 08 Feb, 2018 1 commit
  13. 07 Feb, 2018 1 commit
  14. 06 Feb, 2018 3 commits
  15. 24 Sep, 2017 2 commits
    • Thomas Daede's avatar
      Make sure rav1e binary terminates. · 164f871d
      Thomas Daede authored
    • Guillaume Martres's avatar
      Add a simple REPL · 523ef72d
      Guillaume Martres authored
      Currently only contains one command "process_repl" that encodes one frame.
      To run the REPL:
          cargo run --bin rav1repl
      To run the main encoder (unfortunately there is no way to make "cargo run" do this by default):
          cargo run --bin rav1e