Title: [289362] trunk/Source
Revision
289362
Author
[email protected]
Date
2022-02-08 03:33:30 -0800 (Tue, 08 Feb 2022)

Log Message

MediaSampleAVFObjC::createImageSample should take a presentationTime as parameter
https://bugs.webkit.org/show_bug.cgi?id=236067

Reviewed by Eric Carlson.

Source/WebCore:

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):

Source/WebKit:

* GPUProcess/webrtc/RemoteMediaRecorder.cpp:
(WebKit::RemoteMediaRecorder::videoSampleAvailable):
* GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.cpp:
(WebKit::RemoteSampleBufferDisplayLayer::enqueueSample):

Modified Paths

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());
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to