Reland of Injectable Obj-C video codecs (patchset #1 id:1 of https://codereview.webrtc.org/2980173002/ )
Reason for revert:
Relanding after fixing issues with no video.
Original issue's description:
> Revert of Injectable Obj-C video codecs (patchset #2 id:370001 of https://codereview.webrtc.org/2979983002/ )
>
> Reason for revert:
> Still having problems with no video. Reverting.
> Once no video is visible, no video is available from then on even if the callee app is in the foreground.
>
>
> Original issue's description:
> > Reland of Injectable Obj-C video codecs (patchset #1 id:1 of https://codereview.webrtc.org/2979973002/ )
> >
> > Reason for revert:
> > Fix the broken build file
> >
> > Original issue's description:
> > > Revert of Injectable Obj-C video codecs (patchset #3 id:400001 of https://codereview.webrtc.org/2981583002/ )
> > >
> > > Reason for revert:
> > > Breaks bots. Build file incorrect.
> > >
> > > Original issue's description:
> > > > Reland of Injectable Obj-C video codecs (patchset #1 id:1 of https://codereview.webrtc.org/2975963002/ )
> > > >
> > > > Reason for revert:
> > > > New CL for fixing the issues
> > > >
> > > > Original issue's description:
> > > > > Revert of Injectable Obj-C video codecs (patchset #8 id:140001 of https://codereview.webrtc.org/2966023002/ )
> > > > >
> > > > > Reason for revert:
> > > > > Causes no video in certain scenarios. Please come up with a test plan or unit test to prevent such problems in the future.
> > > > >
> > > > > Original issue's description:
> > > > > > Injectable Obj-C video codecs
> > > > > >
> > > > > > Initial CL for this effort, with a working RTCVideoEncoder/Decoder for H264
> > > > > > (wrapping the VideoToolbox codec).
> > > > > >
> > > > > > Some notes / things left to do:
> > > > > > - There are some hard-coded references to codec types that are supported by
> > > > > > webrtc::VideoCodec, cricket::VideoCodec, webrtc::CodecSpecificInfo etc
> > > > > > since we need to convert to/from these types in ObjCVideoEncoder/Decoder.
> > > > > > These types would need to be more codec agnostic to avoid this.
> > > > > > - Most interfaces are borrowed from the design document for injectable
> > > > > > codecs in Android. Some data in the corresponding C++ classes is discarded
> > > > > > when converting to the Obj-C version, since it has fewer fields. I have not
> > > > > > verified whether all data that we do keep is needed, or whether we might be
> > > > > > losing anything useful in these conversions.
> > > > > > - Implement the VideoToolbox codec code directly in the RTCVideoEncoderH264
> > > > > > classes, instead of wrapping webrtc::H264VideoToolboxEncoder / decoder.
> > > > > > Eliminates converting between ObjC/C++ types outside the ObjCVideoEncoder/
> > > > > > Decoder wrapper classes.
> > > > > > - List the injected codec factory's supported codecs in the list of codecs in
> > > > > > AppRTCMobile.
> > > > > >
> > > > > > BUG=webrtc:7924
> > > > > > R=magjed@webrtc.org
> > > > > >
> > > > > > Review-Url: https://codereview.webrtc.org/2966023002 .
> > > > > > Cr-Commit-Position: refs/heads/master@{#18928}
> > > > > > Committed: https://chromium.googlesource.com/external/webrtc/+/a0349c138db62c52435be84b6c837f5f4758e264
> > > > >
> > > > > TBR=magjed@webrtc.org,andersc@webrtc.org
> > > > > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > > > > BUG=webrtc:7924
> > > > > NOTRY=true
> > > > >
> > > > > Review-Url: https://codereview.webrtc.org/2975963002
> > > > > Cr-Commit-Position: refs/heads/master@{#18979}
> > > > > Committed: https://chromium.googlesource.com/external/webrtc/+/1095ada7ad56fe29b7b2bbc560a8f6475a7978ce
> > > >
> > > > R=magjed@webrtc.org
> > > > TBR=tkchin@webrtc.org
> > > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > > NOPRESUBMIT=true
> > > > NOTREECHECKS=true
> > > > NOTRY=true
> > > > BUG=webrtc:7924
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2981583002 .
> > > > Cr-Commit-Position: refs/heads/master@{#19002}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/a5f1de1e6541de03f944bcbf49be87c01f57a18b
> > >
> > > TBR=magjed@webrtc.org,tkchin@webrtc.org,jtteh@webrtc.org,andersc@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:7924
> > >
> > > Review-Url: https://codereview.webrtc.org/2979973002
> > > Cr-Commit-Position: refs/heads/master@{#19004}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/81d40ee1491d5229c2677cc04b1f40d67c2babef
> >
> > TBR=magjed@webrtc.org,tkchin@webrtc.org,jtteh@webrtc.org,sprang@webrtc.org
> > BUG=webrtc:7924
> >
> > Review-Url: https://codereview.webrtc.org/2979983002
> > Cr-Commit-Position: refs/heads/master@{#19005}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/732a3437da4db7b452758b8e1cf26fce0ce3bf65
>
> TBR=magjed@webrtc.org,tkchin@webrtc.org,sprang@webrtc.org,haysc@webrtc.org,andersc@webrtc.org
> # Not skipping CQ checks because original CL landed more than 1 days ago.
> BUG=webrtc:7924
>
> Review-Url: https://codereview.webrtc.org/2980173002
> Cr-Commit-Position: refs/heads/master@{#19036}
> Committed: https://chromium.googlesource.com/external/webrtc/+/860f7298166084d966749e22b69aa2fdcf4d4ed6
TBR=magjed@webrtc.org,tkchin@webrtc.org,sprang@webrtc.org,haysc@webrtc.org,andersc@webrtc.org,jtteh@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:7924
Review-Url: https://codereview.webrtc.org/2977213002
Cr-Commit-Position: refs/heads/master@{#19135}
diff --git a/webrtc/sdk/BUILD.gn b/webrtc/sdk/BUILD.gn
index e691a8e..7c72021 100644
--- a/webrtc/sdk/BUILD.gn
+++ b/webrtc/sdk/BUILD.gn
@@ -310,6 +310,7 @@
sources = [
"objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory+Private.h",
"objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory.mm",
+ "objc/Framework/Classes/PeerConnection/RTCVideoCodecH264.mm",
]
public_configs = [ ":objc_common_config" ]
@@ -326,11 +327,15 @@
":objc_peerconnectionfactory_base",
":objc_video",
":objc_videotoolbox",
+ ":objc_videotracksource",
"../api:video_frame_api",
+ "../api/video_codecs:video_codecs_api",
+ "../media:rtc_audio_video",
"../media:rtc_media_base",
"../pc:create_pc_factory",
"../pc:peerconnection",
"../rtc_base:rtc_base",
+ "../system_wrappers:field_trial_api",
]
}
@@ -377,6 +382,7 @@
"objc/Framework/Classes/PeerConnection/RTCDataChannel.mm",
"objc/Framework/Classes/PeerConnection/RTCDataChannelConfiguration+Private.h",
"objc/Framework/Classes/PeerConnection/RTCDataChannelConfiguration.mm",
+ "objc/Framework/Classes/PeerConnection/RTCEncodedImage.mm",
"objc/Framework/Classes/PeerConnection/RTCIceCandidate+Private.h",
"objc/Framework/Classes/PeerConnection/RTCIceCandidate.mm",
"objc/Framework/Classes/PeerConnection/RTCIceServer+Private.h",
@@ -404,6 +410,7 @@
"objc/Framework/Classes/PeerConnection/RTCRtpCodecParameters.mm",
"objc/Framework/Classes/PeerConnection/RTCRtpEncodingParameters+Private.h",
"objc/Framework/Classes/PeerConnection/RTCRtpEncodingParameters.mm",
+ "objc/Framework/Classes/PeerConnection/RTCRtpFragmentationHeader.mm",
"objc/Framework/Classes/PeerConnection/RTCRtpParameters+Private.h",
"objc/Framework/Classes/PeerConnection/RTCRtpParameters.mm",
"objc/Framework/Classes/PeerConnection/RTCRtpReceiver+Private.h",
@@ -415,6 +422,9 @@
"objc/Framework/Classes/PeerConnection/RTCSessionDescription.mm",
"objc/Framework/Classes/PeerConnection/RTCTracing.mm",
"objc/Framework/Classes/PeerConnection/RTCVideoCapturer.m",
+ "objc/Framework/Classes/PeerConnection/RTCVideoCodec+Private.h",
+ "objc/Framework/Classes/PeerConnection/RTCVideoCodec.mm",
+ "objc/Framework/Classes/PeerConnection/RTCVideoEncoderSettings.mm",
"objc/Framework/Classes/PeerConnection/RTCVideoFrame.mm",
"objc/Framework/Classes/PeerConnection/RTCVideoRendererAdapter+Private.h",
"objc/Framework/Classes/PeerConnection/RTCVideoRendererAdapter.h",
@@ -475,6 +485,7 @@
"../api:video_frame_api",
"../common_video",
"../media:rtc_media_base",
+ "../modules:module_api",
"../pc:peerconnection",
"../rtc_base:rtc_base",
]
@@ -501,6 +512,8 @@
"objc/Framework/UnitTests/RTCSessionDescriptionTest.mm",
"objc/Framework/UnitTests/RTCTracingTest.mm",
"objc/Framework/UnitTests/avformatmappertests.mm",
+ "objc/Framework/UnitTests/objc_video_decoder_factory_tests.mm",
+ "objc/Framework/UnitTests/objc_video_encoder_factory_tests.mm",
]
if (is_ios &&
!(use_ios_simulator &&
@@ -518,7 +531,11 @@
defines = [ "GTEST_RELATIVE_PATH" ]
deps = [
":objc_peerconnection",
+ ":objc_peerconnectionfactory",
+ ":objc_videotoolbox",
+ ":objc_videotracksource",
"..//system_wrappers:system_wrappers_default",
+ "../modules:module_api",
"../rtc_base:rtc_base_tests_utils",
"../system_wrappers:system_wrappers_default",
"//third_party/ocmock",
@@ -553,6 +570,8 @@
common_objc_headers = [
"objc/Framework/Headers/WebRTC/RTCAudioSession.h",
+ "objc/Framework/Headers/WebRTC/RTCVideoCodec.h",
+ "objc/Framework/Headers/WebRTC/RTCVideoCodecFactory.h",
"objc/Framework/Headers/WebRTC/RTCAudioSessionConfiguration.h",
"objc/Framework/Headers/WebRTC/RTCAVFoundationVideoSource.h",
"objc/Framework/Headers/WebRTC/RTCAudioSource.h",
@@ -595,6 +614,7 @@
"objc/Framework/Headers/WebRTC/RTCVideoTrack.h",
"objc/Framework/Headers/WebRTC/RTCVideoViewShading.h",
"objc/Framework/Headers/WebRTC/UIDevice+RTCDevice.h",
+ "objc/Framework/Headers/WebRTC/RTCVideoCodecH264.h",
"objc/Framework/Headers/WebRTC/WebRTC.h",
]
if (rtc_use_metal_rendering) {
@@ -681,8 +701,10 @@
"objc/Framework/Classes/VideoToolbox/encoder.mm",
"objc/Framework/Classes/VideoToolbox/nalu_rewriter.cc",
"objc/Framework/Classes/VideoToolbox/nalu_rewriter.h",
- "objc/Framework/Classes/VideoToolbox/videocodecfactory.h",
- "objc/Framework/Classes/VideoToolbox/videocodecfactory.mm",
+ "objc/Framework/Classes/VideoToolbox/objc_video_decoder_factory.h",
+ "objc/Framework/Classes/VideoToolbox/objc_video_decoder_factory.mm",
+ "objc/Framework/Classes/VideoToolbox/objc_video_encoder_factory.h",
+ "objc/Framework/Classes/VideoToolbox/objc_video_encoder_factory.mm",
"objc/Framework/Headers/WebRTC/RTCVideoFrameBuffer.h",
]
@@ -692,6 +714,7 @@
":objc_common",
":objc_video",
":objc_videotracksource",
+ "../api/video_codecs:video_codecs_api",
"../common_video",
"../media:rtc_media",
"../media:rtc_media_base",