<html><head></head><body><div>Le jeudi 20 avril 2023 à 10:53 -0400, Dwight Kulkarni via gstreamer-devel a écrit :</div><blockquote type="cite" style="margin:0 0 0 .8ex; border-left:2px #729fcf solid;padding-left:1ex"><div dir="ltr">Hi all,<div><br></div><div>I have two cameras with independent pipelines, the camera ends in an appsink where the jpeg frames are consumed.</div><div><br></div><div>The problem is that I need to extract the jpeg frames from both cameras at exactly the same time. There can't be slight time differences between the two images. This is for stereo image analysis.</div><div><br></div><div>Right now, I terminate the pipeline in an appsink and then consume the Jpeg frames that get outputted. </div><div><br></div><div>If each camera runs on a separate pipeline I will get two different callbacks that contain the JPEG image and there is no guarantee that both images are in synch unless there is something from gstreamer that can synch them.</div><div><br></div><div>Alternately, we can change the camera driver so that the raw video coming out of the ISP is being stitched into a frame that's twice as large and then maybe crop the image in gstreamer when recording the video to select only one camera but the Jpeg frame being returned will contain both frames already synched.</div><div><br></div><div>Before pursuing these ideas, I was hoping for any comments on what is the best practice.</div></div></blockquote><div><br></div><div>The suggestion is good, it can simplify a lot your gstreamer work. Though, if you still need to synchronization, only streams within the same pipeline can be correlated in time and synchronized. So your two sources element (whatever the element this is is) needs to be running in the same pipeline, under the same clock. From there you can turn their PTS into running-time and sync them (appsink GstSample gives you both the segment and timestamp to help you with that). The challenge is to get your timestamp source to be accurate. HW timestamps are ideal for this use case. You might also want some fuzzy match, e.g. truncate to millisecond precision.</div><div><br></div><div>Nicolas</div><div><br></div><blockquote type="cite" style="margin:0 0 0 .8ex; border-left:2px #729fcf solid;padding-left:1ex"><div dir="ltr"><div><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><span style="font-size:12.8px">Sincerely,</span><div><br></div><div>Dwight Kulkarni </div><div><br></div></div></div></div></div></div></div></div></div></blockquote><div><br></div><div><span></span></div></body></html>