This is my first ffmpeg patch, so I am not sure what else I need to do to get it reviewed and submitted. Could someone please let me know? Thanks!
On Wed, Mar 17, 2021 at 5:28 PM Alok Priyadarshi <alo...@gmail.com> wrote: > This produces true wallclock time at rtp source instead of the > local wallclock time at rtp client. > --- > libavformat/internal.h | 8 ++++++++ > libavformat/rtpdec.c | 10 ++++++++++ > libavformat/utils.c | 9 +++++++++ > 3 files changed, 27 insertions(+) > > diff --git a/libavformat/internal.h b/libavformat/internal.h > index 17a6ab07d3..1e10cde00e 100644 > --- a/libavformat/internal.h > +++ b/libavformat/internal.h > @@ -254,6 +254,14 @@ uint64_t ff_ntp_time(void); > */ > uint64_t ff_get_formatted_ntp_time(uint64_t ntp_time_us); > > +/** > + * Parse the NTP time in micro seconds (since NTP epoch). > + * > + * @param ntp_ts NTP time stamp formatted as per the RFC-5905. > + * @return the time in micro seconds (since NTP epoch) > + */ > +uint64_t ff_parse_ntp_time(uint64_t ntp_ts); > + > /** > * Append the media-specific SDP fragment for the media stream c > * to the buffer buff. > diff --git a/libavformat/rtpdec.c b/libavformat/rtpdec.c > index 3d5b200099..3e5f280f2f 100644 > --- a/libavformat/rtpdec.c > +++ b/libavformat/rtpdec.c > @@ -23,6 +23,7 @@ > #include "libavutil/avstring.h" > #include "libavutil/intreadwrite.h" > #include "libavutil/time.h" > +#include "libavcodec/packet_internal.h" > > #include "avformat.h" > #include "network.h" > @@ -30,6 +31,7 @@ > #include "url.h" > #include "rtpdec.h" > #include "rtpdec_formats.h" > +#include "internal.h" > > #define MIN_FEEDBACK_INTERVAL 200000 /* 200 ms in us */ > > @@ -594,6 +596,14 @@ static void finalize_packet(RTPDemuxContext *s, > AVPacket *pkt, uint32_t timestam > if (timestamp == RTP_NOTS_VALUE) > return; > > + if (s->last_rtcp_ntp_time != AV_NOPTS_VALUE) { > + uint64_t prft_us = ff_parse_ntp_time(s->last_rtcp_ntp_time) - > NTP_OFFSET_US + > + timestamp - s->last_rtcp_timestamp; > + if (ff_side_data_set_prft(pkt, prft_us) < 0) { > + av_log(s->ic, AV_LOG_WARNING, "rtpdec: failed to set prft"); > + } > + } > + > if (s->last_rtcp_ntp_time != AV_NOPTS_VALUE && s->ic->nb_streams > 1) > { > int64_t addend; > int delta_timestamp; > diff --git a/libavformat/utils.c b/libavformat/utils.c > index 7e5767ec60..569922beaf 100644 > --- a/libavformat/utils.c > +++ b/libavformat/utils.c > @@ -4734,6 +4734,15 @@ uint64_t ff_get_formatted_ntp_time(uint64_t > ntp_time_us) > return ntp_ts; > } > > +uint64_t ff_parse_ntp_time(uint64_t ntp_ts) > +{ > + uint64_t sec = ntp_ts >> 32; > + uint64_t frac_part = ntp_ts & 0xFFFFFFFFULL; > + uint64_t usec = (frac_part * 1000000) / 0xFFFFFFFFULL; > + > + return (sec * 1000000) + usec; > +} > + > int av_get_frame_filename2(char *buf, int buf_size, const char *path, int > number, int flags) > { > const char *p; > -- > 2.25.1 > > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".