)]}'
{
  "commit": "bd9e4a95eb6b3d0a4e686f32b1fe5a0bf433fa02",
  "tree": "892cc8bd3294b4333d0726da236bd8e136e0b338",
  "parents": [
    "2ff25db72aa34a20308e82a271260b8719da0254"
  ],
  "author": {
    "name": "Henrik Boström",
    "email": "hbos@webrtc.org",
    "time": "Mon Mar 22 11:24:30 2021"
  },
  "committer": {
    "name": "Commit Bot",
    "email": "commit-bot@chromium.org",
    "time": "Mon Mar 22 13:35:35 2021"
  },
  "message": "Support native scaling of VideoFrameBuffers in LibvpxVp9Encoder.\n\nThis CL is part of Optimized Scaling efforts. In Chromium, the native\nframe buffer is getting an optimized CropAndScale() implementation. To\nsupport HW accelerated scaling, returning pre-scaled images and skipping\nunnecessary intermediate downscales, WebRTC needs to 1) use CropAndScale\ninstead of libyuv::XXXXScale and 2) only map buffers it actually intends\nto encode.\n- To achieve this, WebRTC encoders are updated to map kNative video\n  buffers so that in a follow-up CL VideoStreamEncoder can stop mapping\n  intermediate buffer sizes.\n\nIn this CL LibvpxVp9Encoder is updated to map kNative buffers of pixel\nformats it supports and convert ToI420() if the kNative buffer is\nsomething else. A fake native buffer that keeps track of which\nresolutions were mapped, MappableNativeBuffer, is added.\n\nBecause VP9 is currently an SVC encoder and not a simulcast encoder, it\ndoes not need to invoke CropAndScale.\n\nThis CL also fixes MultiplexEncoderAdapter, but because it simply\nforwards frames it only cares about the pixel format when\n|supports_augmented_data_| is true so this is the only time we map it.\nBecause this encoder is not used with kNative in practise, we don\u0027t care\nto make this path optimal.\n\nBug: webrtc:12469, chromium:1157072\nChange-Id: I74edf85b18eccd0d250776bbade7a6444478efce\nReviewed-on: https://webrtc-review.googlesource.com/c/src/+/212580\nCommit-Queue: Henrik Boström \u003chbos@webrtc.org\u003e\nReviewed-by: Ilya Nikolaevskiy \u003cilnik@webrtc.org\u003e\nReviewed-by: Evan Shrubsole \u003ceshr@google.com\u003e\nCr-Commit-Position: refs/heads/master@{#33526}\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "88c3cf034f34680bbffce960db371e0dcbbf582b",
      "old_mode": 33188,
      "old_path": "modules/video_coding/BUILD.gn",
      "new_id": "a9aa74c65c57ad1c8e903ae95f1aabf22b555158",
      "new_mode": 33188,
      "new_path": "modules/video_coding/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "b48996cbcf53f2aab631a90cfe331286811ede1b",
      "old_mode": 33188,
      "old_path": "modules/video_coding/codecs/multiplex/augmented_video_frame_buffer.cc",
      "new_id": "8740884f5b2c3f43894f1279c7df62fd14721e58",
      "new_mode": 33188,
      "new_path": "modules/video_coding/codecs/multiplex/augmented_video_frame_buffer.cc"
    },
    {
      "type": "modify",
      "old_id": "c45ab3b2a460997e5e6ee0a6e3f2a89bdaa3ba65",
      "old_mode": 33188,
      "old_path": "modules/video_coding/codecs/multiplex/include/augmented_video_frame_buffer.h",
      "new_id": "d711cd07da7443099e550ddf514c9d8de2489e4d",
      "new_mode": 33188,
      "new_path": "modules/video_coding/codecs/multiplex/include/augmented_video_frame_buffer.h"
    },
    {
      "type": "modify",
      "old_id": "b08c5b1fc4162cd734d359066f65875682328f0a",
      "old_mode": 33188,
      "old_path": "modules/video_coding/codecs/multiplex/multiplex_encoder_adapter.cc",
      "new_id": "db525b8f98329bfc181f235eb2f1ec963232c29f",
      "new_mode": 33188,
      "new_path": "modules/video_coding/codecs/multiplex/multiplex_encoder_adapter.cc"
    },
    {
      "type": "modify",
      "old_id": "7af3a9d810ce6fd3a6e589c0bce71daf18b2ff71",
      "old_mode": 33188,
      "old_path": "modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc",
      "new_id": "888c7e97607f131b800906b4e680318c2d8f276f",
      "new_mode": 33188,
      "new_path": "modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc"
    },
    {
      "type": "modify",
      "old_id": "086b4464bbedfb431ff065a1b32e4df70048ac44",
      "old_mode": 33188,
      "old_path": "modules/video_coding/codecs/vp9/libvpx_vp9_encoder.h",
      "new_id": "cf328b2c8e6dc381c62e7126ed2f498200650305",
      "new_mode": 33188,
      "new_path": "modules/video_coding/codecs/vp9/libvpx_vp9_encoder.h"
    },
    {
      "type": "modify",
      "old_id": "4ffcf13c009bc9edf9da0c8e66b7e2e9659df74f",
      "old_mode": 33188,
      "old_path": "modules/video_coding/codecs/vp9/test/vp9_impl_unittest.cc",
      "new_id": "853d2df8735e376cab7f36da5eb8f5acc88d6b3b",
      "new_mode": 33188,
      "new_path": "modules/video_coding/codecs/vp9/test/vp9_impl_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "db508ca71e66b5dab63cc839e7e3fd92e3bd1bef",
      "old_mode": 33188,
      "old_path": "test/BUILD.gn",
      "new_id": "988d15fd308abf8bd0df5aa5779bdf1372d620fb",
      "new_mode": 33188,
      "new_path": "test/BUILD.gn"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cff58ff8e7c703ef0f847efde7a89e40f48f502b",
      "new_mode": 33188,
      "new_path": "test/mappable_native_buffer.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "add22029c76178638887527108b899d02b25540b",
      "new_mode": 33188,
      "new_path": "test/mappable_native_buffer.h"
    }
  ]
}
