On Sat, 23 Aug 2014 19:04:48 +0200, Luca Barbato <[email protected]> wrote: > alsa and x11grab use av_gettime() to report timestamps. > --- > > It is not beautiful but there had been enough complaints about that. > > libavdevice/pulse.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/libavdevice/pulse.c b/libavdevice/pulse.c > index a8e710d..d724964 100644 > --- a/libavdevice/pulse.c > +++ b/libavdevice/pulse.c > @@ -31,6 +31,7 @@ > > #include "libavformat/avformat.h" > #include "libavformat/internal.h" > +#include "libavutil/time.h" > #include "libavutil/opt.h" > > #define DEFAULT_CODEC_ID AV_NE(AV_CODEC_ID_PCM_S16BE, AV_CODEC_ID_PCM_S16LE) > @@ -47,6 +48,7 @@ typedef struct PulseData { > pa_simple *s; > int64_t pts; > int64_t frame_duration; > + int wallclock; > } PulseData; > > static pa_sample_format_t codec_id_to_pulse_format(int codec_id) { > @@ -141,6 +143,8 @@ static int pulse_read_packet(AVFormatContext *s, AVPacket > *pkt) > > if (pd->pts == AV_NOPTS_VALUE) { > pd->pts = -latency; > + if (pd->wallclock) > + pd->pts += av_gettime(); > } > > pkt->pts = pd->pts; > @@ -168,6 +172,7 @@ static const AVOption options[] = { > { "channels", "number of audio channels", > OFFSET(channels), AV_OPT_TYPE_INT, {.i64 = 2}, 1, INT_MAX, D }, > { "frame_size", "number of bytes per frame", > OFFSET(frame_size), AV_OPT_TYPE_INT, {.i64 = 1024}, 1, INT_MAX, D }, > { "fragment_size", "buffering size, affects latency and cpu usage", > OFFSET(fragment_size), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, D }, > + { "wallclock", "set the initial pts using the current time", > OFFSET(wallclock), AV_OPT_TYPE_INT, {.i64 = 0}, -1, 1, D },
I'd even enable this by default. -- Anton Khirnov _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
