code: @Implementation(minSdk = LOLLIPOP)
    protected void native_start() {
      // Currently only support async-mode.
      if (callback == null) {
        return;
      }
  
      // Report the format as changed, to simulate adding codec specific info before making input
      // buffers available.
      HashMap<String, Object> format = new HashMap<>();
      format.put("csd-0", ByteBuffer.wrap(new byte[]{0x13, 0x10}));
      format.put("csd-1", ByteBuffer.wrap(new byte[0]));
      postFakeNativeEvent(EVENT_CALLBACK, CB_OUTPUT_FORMAT_CHANGE, 0, format);
  
      // Reset state.
      reachedEos = false;
  
      makeInputBufferAvailable(0);
    }
docs: Starts the async encoding process, by first reporting a format change event, and then
  presenting an input buffer to the callback.