[gst-devel] video playback fast (record with v4l2src)
Edgard Lima
edgard.lima at indt.org.br
Wed Sep 20 16:39:38 CEST 2006
The problem is because the timestamps aren't too accurate (would it be
incremented exactly 1001/30000)?
Buffers coming from v4l2 drivers has timestamps and sequence numbers. If
drivers implements sequence numbers, could it be used somehow?
The audio comes from alsa input, is there some way v4l2 drivers could
also put timestamps to audio coming from tuner to make A/V sync?
Yes I'm at the beginning. I'm trying to improve, help me, may be some
day I can give you and the community some feedback.
So....
If the answer to my first question is yes. I think I could write a
smarter v4l2src that would increment the value of each time time-stamp
exactly fps_d/fps_n (1001/30000 for this example).
Or, it could be also done in videorate (videorate could wait a bit more
before insert a new buffer) some thing like 'max-lateness' for 'alsasink'.
What do you think?
btw: If I'm completely out of track, please give me deeper explanation
of how it works, or else tell me where to find out such info, Thanks.
BR,
Edgard
edlima at edlima:~$ gst-launch-0.10 -v v4l2src device=/dev/video1 !
fakesink sync=false
Setting pipeline to PAUSED ...
/pipeline0/v4l2src0: std = "PAL-M"
/pipeline0/v4l2src0: input = "Television"
/pipeline0/v4l2src0: frequency = 526250000
/pipeline0/v4l2src0: num-buffers = -1
/pipeline0/v4l2src0.src: caps = video/x-raw-yuv, format=(fourcc)UYVY,
width=(int)640, height=(int)480, framerate=(fraction)30000/1001
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/pipeline0/fakesink0.sink: caps = video/x-raw-yuv, format=(fourcc)UYVY,
width=(int)640, height=(int)480, framerate=(fraction)30000/1001
/pipeline0/fakesink0: last-message = "preroll ******* "
/pipeline0/fakesink0: last-message = "event ******* E (type: 102,
GstEventNewsegment, update=(boolean)false, rate=(double)1,
applied_rate=(double)1, format=(GstFormat)GST_FORMAT_TIME,
start=(gint64)0, stop=(gint64)-1, position=(gint64)0) 0x80e90a0"
/pipeline0/fakesink0: last-message = "chain ******* < (614400 bytes,
timestamp: 0:00:00.064468000, duration: 0:00:00.033366666, offset: 0,
offset_end: -1, flags: 33) 0x80f6e80"
/pipeline0/fakesink0: last-message = "chain ******* < (614400 bytes,
timestamp: 0:00:00.082425000, duration: 0:00:00.033366666, offset: 1,
offset_end: -1, flags: 1) 0x80f6ed8"
/pipeline0/fakesink0: last-message = "chain ******* < (614400 bytes,
timestamp: 0:00:00.127624000, duration: 0:00:00.033366666, offset: 2,
offset_end: -1, flags: 1) 0x80f6f30"
/pipeline0/fakesink0: last-message = "chain ******* < (614400 bytes,
timestamp: 0:00:00.161079000, duration: 0:00:00.033366666, offset: 3,
offset_end: -1, flags: 1) 0x80f6f88"
/pipeline0/fakesink0: last-message = "chain ******* < (614400 bytes,
timestamp: 0:00:00.182542000, duration: 0:00:00.033366666, offset: 4,
offset_end: -1, flags: 1) 0x80fb800"
/pipeline0/fakesink0: last-message = "chain ******* < (614400 bytes,
timestamp: 0:00:00.232085000, duration: 0:00:00.033366666, offset: 5,
offset_end: -1, flags: 1) 0x80fb858"
/pipeline0/fakesink0: last-message = "chain ******* < (614400 bytes,
timestamp: 0:00:00.249269000, duration: 0:00:00.033366666, offset: 6,
offset_end: -1, flags: 1) 0x80fb8b0"
/pipeline0/fakesink0: last-message = "chain ******* < (614400 bytes,
timestamp: 0:00:00.288730000, duration: 0:00:00.033366666, offset: 7,
offset_end: -1, flags: 1) 0x80fb908"
More information about the gstreamer-devel
mailing list