Accept NV12 frames into VP9

NV12 frames can be encoded by libvpx now, and this change allows for
encoding of them with VP9.

VP9 encode/decode tests now run with NV12 as well as I420.

Manually tested using video loopback with VP9 and NV12 generated frames.
  out/Default/video_loopback.app/Contents/MacOS/video_loopback --clip=GeneratorNV12 --codec="VP9"


Bug: webrtc:11635, webrtc:11974
Change-Id: Ifc5cbf77d2a27821cd5560c253d5d447c7a7cf53
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/185123
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@google.com>
Cr-Commit-Position: refs/heads/master@{#32220}
This commit is contained in:
Evan Shrubsole
2020-09-28 12:04:11 +02:00
committed by Commit Bot
parent 3a8c441cc4
commit 7899e972b6
6 changed files with 125 additions and 15 deletions

View File

@ -399,7 +399,10 @@ rtc_source_set("peer_connection_quality_test_fixture_api") {
rtc_source_set("frame_generator_api") {
visibility = [ "*" ]
testonly = true
sources = [ "test/frame_generator_interface.h" ]
sources = [
"test/frame_generator_interface.cc",
"test/frame_generator_interface.h",
]
deps = [
":scoped_refptr",

View File

@ -0,0 +1,34 @@
/*
* Copyright (c) 2020 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#include "api/test/frame_generator_interface.h"
namespace webrtc {
namespace test {
// static
const char* FrameGeneratorInterface::OutputTypeToString(
FrameGeneratorInterface::OutputType type) {
switch (type) {
case OutputType::kI420:
return "I420";
case OutputType::kI420A:
return "I420A";
case OutputType::kI010:
return "I010";
case OutputType::kNV12:
return "NV12";
default:
RTC_NOTREACHED();
}
}
} // namespace test
} // namespace webrtc

View File

@ -33,6 +33,7 @@ class FrameGeneratorInterface {
};
enum class OutputType { kI420, kI420A, kI010, kNV12 };
static const char* OutputTypeToString(OutputType type);
virtual ~FrameGeneratorInterface() = default;