Commit bb52fe45 authored by Byron Campen's avatar Byron Campen
Browse files

Bug 1822194 - Vendor libwebrtc from 5c4509a604

Upstream commit: https://webrtc.googlesource.com/src/+/5c4509a604f7559571699d272a9f3bd85ca385bb
    Add a clone method to the video frame transformer API.

    This will clone an encoded video frame into a sender frame,
    preserving metadata as much as possible.

    Bug: webrtc:14708
    Change-Id: I6f68d2ee65ef85c32cc3c142a41346b81ba73533
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/284701


    Commit-Queue: Harald Alvestrand <hta@webrtc.org>
    Reviewed-by: default avatarGuido Urdaneta <guidou@webrtc.org>
    Reviewed-by: default avatarHenrik Boström <hbos@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#38733}
parent a5bdb90e
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -19800,3 +19800,6 @@ e40bb38faa
# MOZ_LIBWEBRTC_SRC=/home/bcampen/checkouts/moz-libwebrtc MOZ_LIBWEBRTC_BRANCH=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
# base of lastest vendoring
4a44e0ef40
# MOZ_LIBWEBRTC_SRC=/home/bcampen/checkouts/moz-libwebrtc MOZ_LIBWEBRTC_BRANCH=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
# base of lastest vendoring
5c4509a604
+2 −0
Original line number Diff line number Diff line
@@ -13222,3 +13222,5 @@ libwebrtc updated from /home/bcampen/checkouts/moz-libwebrtc commit mozpatches o
libwebrtc updated from /home/bcampen/checkouts/moz-libwebrtc commit mozpatches on 2023-04-01T00:19:36.084482.
# ./mach python dom/media/webrtc/third_party_build/vendor-libwebrtc.py --from-local /home/bcampen/checkouts/moz-libwebrtc --commit mozpatches libwebrtc
libwebrtc updated from /home/bcampen/checkouts/moz-libwebrtc commit mozpatches on 2023-04-01T00:20:51.166419.
# ./mach python dom/media/webrtc/third_party_build/vendor-libwebrtc.py --from-local /home/bcampen/checkouts/moz-libwebrtc --commit mozpatches libwebrtc
libwebrtc updated from /home/bcampen/checkouts/moz-libwebrtc commit mozpatches on 2023-04-01T00:22:10.097985.
+16 −0
Original line number Diff line number Diff line
@@ -1486,3 +1486,19 @@ rtc_library("field_trials") {
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
}

rtc_library("frame_transformer_factory") {
  visibility = [ "*" ]
  sources = [
    "frame_transformer_factory.cc",
    "frame_transformer_factory.h",
  ]
  deps = [
    ":frame_transformer_interface",
    ":scoped_refptr",
    "../modules/rtp_rtcp",
    "../rtc_base:refcount",
    "video:encoded_frame",
    "video:video_frame_metadata",
  ]
}
+33 −0
Original line number Diff line number Diff line
/*
 *  Copyright 2022 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/frame_transformer_factory.h"

#include "modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate.h"

namespace webrtc {

std::unique_ptr<TransformableVideoFrameInterface> CreateVideoSenderFrame() {
  RTC_CHECK_NOTREACHED();
  return nullptr;
}

std::unique_ptr<TransformableVideoFrameInterface> CreateVideoReceiverFrame() {
  RTC_CHECK_NOTREACHED();
  return nullptr;
}

std::unique_ptr<TransformableVideoFrameInterface> CloneVideoFrame(
    TransformableVideoFrameInterface* original) {
  // At the moment, only making sender frames from receiver frames is supported.
  return CloneSenderVideoFrame(original);
}

}  // namespace webrtc
+39 −0
Original line number Diff line number Diff line
/*
 *  Copyright 2022 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.
 */

#ifndef API_FRAME_TRANSFORMER_FACTORY_H_
#define API_FRAME_TRANSFORMER_FACTORY_H_

#include <memory>
#include <vector>

#include "api/frame_transformer_interface.h"
#include "api/scoped_refptr.h"
#include "api/video/encoded_frame.h"
#include "api/video/video_frame_metadata.h"

// This file contains EXPERIMENTAL functions to create video frames from
// either an old video frame or directly from parameters.
// These functions will be used in Chrome functionality to manipulate
// encoded frames from Javascript.
namespace webrtc {

// TODO(bugs.webrtc.org/14708): Add the required parameters to these APIs.
std::unique_ptr<TransformableVideoFrameInterface> CreateVideoSenderFrame();
// TODO(bugs.webrtc.org/14708): Consider whether Receiver frames ever make sense
// to create.
std::unique_ptr<TransformableVideoFrameInterface> CreateVideoReceiverFrame();
// Creates a new frame with the same metadata as the original.
// The original can be a sender or receiver frame.
RTC_EXPORT std::unique_ptr<TransformableVideoFrameInterface> CloneVideoFrame(
    TransformableVideoFrameInterface* original);
}  // namespace webrtc

#endif  // API_FRAME_TRANSFORMER_FACTORY_H_
Loading