[Bug 769413] New: alsasrc, v4l2src: getting repeated timestamps when capturing from multiple sources (multiple pipelines in single command)
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Tue Aug 2 10:02:02 UTC 2016
https://bugzilla.gnome.org/show_bug.cgi?id=769413
Bug ID: 769413
Summary: alsasrc, v4l2src: getting repeated timestamps when
capturing from multiple sources (multiple pipelines in
single command)
Classification: Platform
Product: GStreamer
Version: 0.10.x
OS: Linux
Status: NEW
Severity: major
Priority: Normal
Component: gst-plugins-base
Assignee: gstreamer-bugs at lists.freedesktop.org
Reporter: przemyslaw.gajos at gmail.com
QA Contact: gstreamer-bugs at lists.freedesktop.org
GNOME version: ---
Hello,
I am an alsa and v4l2 drivers developer.
I encountered the issue of getting repeated timestamps: 2 adjacent timestamps
have the same value. The issue occurs when it is attempted to capture audio
from 2 (or more) alsasrces in a single gst-launch command. The problem is
generic and I think it is in the GStreamer "layer" because:
- it happens for both audio sources (alsasrc) and for video captures (v4l2src)
-> this excludes alsa middle layer.
- I tested that it happens when capturing from various-branded hardware (see
the example capturing from Intel sound device but it will occurs for other
hardware as well).
The problem breaks the audio & video sync for my customer and it is important
for us to have it fixed.
Please see the example below:
1) GET A LIST OF AUDIO CAPTURE DEVICES:
**** List of CAPTURE Hardware Devices ****
card 2: PCH [HDA Intel PCH], device 0: ALC662 rev1 Analog [ALC662 rev1 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: PCH [HDA Intel PCH], device 2: ALC662 rev1 Analog [ALC662 rev1 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
2) ATTEMPT TO CAPTURE FROM 2 DEVICES IN A SINGLE COMMAND:
gst-launch-0.10 -v alsasrc device=hw:2,0 ! fakesink name=analog1 alsasrc
device=hw:2,2 ! fakesink name=ANALOG2 | grep last-message | grep timestamp
/GstPipeline:pipeline0/GstFakeSink:ANALOG2: last-message = "chain *******
(ANALOG2:sink) (4096 bytes, timestamp: 0:00:00.011609977, duration:
0:00:00.011609977, offset: 0, offset_end: 512, flags: 32 discont ) 0x154fe60"
/GstPipeline:pipeline0/GstFakeSink:ANALOG2: last-message = "chain *******
(ANALOG2:sink) (4096 bytes, timestamp: 0:00:00.011609977, duration:
0:00:00.011609977, offset: 0, offset_end: 512, flags: 32 discont ) 0x154fe60"
/GstPipeline:pipeline0/GstFakeSink:analog1: last-message = "chain *******
(analog1:sink) (4096 bytes, timestamp: 0:00:00.011609977, duration:
0:00:00.011609977, offset: 512, offset_end: 1024, flags: 0 ) 0x7fad18002dd0"
/GstPipeline:pipeline0/GstFakeSink:analog1: last-message = "chain *******
(analog1:sink) (4096 bytes, timestamp: 0:00:00.023219954, duration:
0:00:00.011609977, offset: 1024, offset_end: 1536, flags: 0 ) 0x7fad18002e70"
/GstPipeline:pipeline0/GstFakeSink:analog1: last-message = "chain *******
(analog1:sink) (4096 bytes, timestamp: 0:00:00.023219954, duration:
0:00:00.011609977, offset: 1024, offset_end: 1536, flags: 0 ) 0x7fad18002e70"
/GstPipeline:pipeline0/GstFakeSink:analog1: last-message = "chain *******
(analog1:sink) (4096 bytes, timestamp: 0:00:00.034829931, duration:
0:00:00.011609978, offset: 1536, offset_end: 2048, flags: 0 )
...
We can clearly see that the first 2 timestamps are the same for ANALOG2
alsasrc. Why could that be?
Would each pipeline in the above gst-launch command have a separate capture
thread for audio capture? Can there be a problem to start them simultaneously?
Note that the problem does not exist when the command is split into 2 commands:
one for each alsasrc and attempted to run them at the same time from script:
script1.sh:
gst-launch-0.10 -v alsasrc device=hw:2,0 ! fakesink name=analog1 | grep
last-message | grep timestamp
script2.sh:
gst-launch-0.10 -v alsasrc device=hw:2,2 ! fakesink name=ANALOG2 | grep
last-message | grep timestamp
script_main.sh:
sh -x script1.sh &
sh -x script2.sh &
Thanks for your help with this,
Przemek
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list