Diff
Modified: trunk/Source/WebCore/ChangeLog (289361 => 289362)
--- trunk/Source/WebCore/ChangeLog 2022-02-08 11:28:26 UTC (rev 289361)
+++ trunk/Source/WebCore/ChangeLog 2022-02-08 11:33:30 UTC (rev 289362)
@@ -1,3 +1,18 @@
+2022-02-08 Youenn Fablet <[email protected]>
+
+ MediaSampleAVFObjC::createImageSample should take a presentationTime as parameter
+ https://bugs.webkit.org/show_bug.cgi?id=236067
+
+ Reviewed by Eric Carlson.
+
+ Add additional parameters to createImageSample that will be used by WebKit.
+ No change of behavior.
+
+ * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:
+ (WebCore::MediaSampleAVFObjC::createImageSample):
+ * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:
+ (WebCore::MediaSampleAVFObjC::createImageSample):
+
2022-02-08 Nikolas Zimmermann <[email protected]>
RenderLayer: Simplify RenderElement::paint() calls
Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h (289361 => 289362)
--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h 2022-02-08 11:28:26 UTC (rev 289361)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h 2022-02-08 11:33:30 UTC (rev 289362)
@@ -42,7 +42,7 @@
static Ref<MediaSampleAVFObjC> create(CMSampleBufferRef sample, AtomString trackID) { return adoptRef(*new MediaSampleAVFObjC(sample, trackID)); }
static Ref<MediaSampleAVFObjC> create(CMSampleBufferRef sample, VideoRotation rotation = VideoRotation::None, bool mirrored = false) { return adoptRef(*new MediaSampleAVFObjC(sample, rotation, mirrored)); }
static RefPtr<MediaSampleAVFObjC> createImageSample(PixelBuffer&&);
- WEBCORE_EXPORT static RefPtr<MediaSampleAVFObjC> createImageSample(RetainPtr<CVPixelBufferRef>&&, VideoRotation, bool mirrored);
+ WEBCORE_EXPORT static RefPtr<MediaSampleAVFObjC> createImageSample(RetainPtr<CVPixelBufferRef>&&, VideoRotation, bool mirrored, MediaTime presentationTime = { }, MediaTime decodingTime = { });
WEBCORE_EXPORT static void setAsDisplayImmediately(MediaSample&);
static RetainPtr<CMSampleBufferRef> cloneSampleBufferAndSetAsDisplayImmediately(CMSampleBufferRef);
Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm (289361 => 289362)
--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm 2022-02-08 11:28:26 UTC (rev 289361)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm 2022-02-08 11:33:30 UTC (rev 289362)
@@ -98,7 +98,7 @@
return createImageSample(WTFMove(cvPixelBuffer), VideoRotation::None, false);
}
-RefPtr<MediaSampleAVFObjC> MediaSampleAVFObjC::createImageSample(RetainPtr<CVPixelBufferRef>&& pixelBuffer, VideoRotation rotation, bool mirrored)
+RefPtr<MediaSampleAVFObjC> MediaSampleAVFObjC::createImageSample(RetainPtr<CVPixelBufferRef>&& pixelBuffer, VideoRotation rotation, bool mirrored, MediaTime presentationTime, MediaTime decodingTime)
{
CMVideoFormatDescriptionRef formatDescriptionRaw = nullptr;
auto status = PAL::CMVideoFormatDescriptionCreateForImageBuffer(kCFAllocatorDefault, pixelBuffer.get(), &formatDescriptionRaw);
@@ -108,7 +108,7 @@
}
auto formatDescription = adoptCF(formatDescriptionRaw);
- CMSampleTimingInfo sampleTimingInformation = { PAL::kCMTimeInvalid, PAL::kCMTimeInvalid, PAL::kCMTimeInvalid };
+ CMSampleTimingInfo sampleTimingInformation = { PAL::kCMTimeInvalid, PAL::toCMTime(presentationTime), PAL::toCMTime(decodingTime) };
CMSampleBufferRef sampleBufferRaw = nullptr;
status = PAL::CMSampleBufferCreateReadyWithImageBuffer(kCFAllocatorDefault, pixelBuffer.get(), formatDescription.get(), &sampleTimingInformation, &sampleBufferRaw);
if (status || !sampleBufferRaw) {
Modified: trunk/Source/WebKit/ChangeLog (289361 => 289362)
--- trunk/Source/WebKit/ChangeLog 2022-02-08 11:28:26 UTC (rev 289361)
+++ trunk/Source/WebKit/ChangeLog 2022-02-08 11:33:30 UTC (rev 289362)
@@ -1,5 +1,17 @@
2022-02-08 Youenn Fablet <[email protected]>
+ MediaSampleAVFObjC::createImageSample should take a presentationTime as parameter
+ https://bugs.webkit.org/show_bug.cgi?id=236067
+
+ Reviewed by Eric Carlson.
+
+ * GPUProcess/webrtc/RemoteMediaRecorder.cpp:
+ (WebKit::RemoteMediaRecorder::videoSampleAvailable):
+ * GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.cpp:
+ (WebKit::RemoteSampleBufferDisplayLayer::enqueueSample):
+
+2022-02-08 Youenn Fablet <[email protected]>
+
SharedVideoFrameReader could directly take a IPCHandle
https://bugs.webkit.org/show_bug.cgi?id=236068
Modified: trunk/Source/WebKit/GPUProcess/webrtc/RemoteMediaRecorder.cpp (289361 => 289362)
--- trunk/Source/WebKit/GPUProcess/webrtc/RemoteMediaRecorder.cpp 2022-02-08 11:28:26 UTC (rev 289361)
+++ trunk/Source/WebKit/GPUProcess/webrtc/RemoteMediaRecorder.cpp 2022-02-08 11:33:30 UTC (rev 289362)
@@ -94,8 +94,7 @@
if (!pixelBuffer)
return;
- sample = MediaSampleAVFObjC::createImageSample(WTFMove(pixelBuffer), remoteSample.rotation(), remoteSample.mirrored());
- sample->setTimestamps(remoteSample.time(), MediaTime { });
+ sample = MediaSampleAVFObjC::createImageSample(WTFMove(pixelBuffer), remoteSample.rotation(), remoteSample.mirrored(), remoteSample.time());
} else {
if (!m_imageTransferSession || m_imageTransferSession->pixelFormat() != remoteSample.videoFormat())
m_imageTransferSession = ImageTransferSessionVT::create(remoteSample.videoFormat());
Modified: trunk/Source/WebKit/GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.cpp (289361 => 289362)
--- trunk/Source/WebKit/GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.cpp 2022-02-08 11:28:26 UTC (rev 289361)
+++ trunk/Source/WebKit/GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.cpp 2022-02-08 11:33:30 UTC (rev 289362)
@@ -121,8 +121,7 @@
if (!pixelBuffer)
return;
- sample = MediaSampleAVFObjC::createImageSample(WTFMove(pixelBuffer), remoteSample.rotation(), remoteSample.mirrored());
- sample->setTimestamps(remoteSample.time(), MediaTime { });
+ sample = MediaSampleAVFObjC::createImageSample(WTFMove(pixelBuffer), remoteSample.rotation(), remoteSample.mirrored(), remoteSample.time());
} else {
if (!m_imageTransferSession || m_imageTransferSession->pixelFormat() != remoteSample.videoFormat())
m_imageTransferSession = ImageTransferSessionVT::create(remoteSample.videoFormat());