On Wed, Apr 29, 2020 at 04:38:42PM +0200, Nicolas George wrote: > lance.lmw...@gmail.com (12020-04-29): > > From: Limin Wang <lance.lmw...@gmail.com> > > > > Signed-off-by: Limin Wang <lance.lmw...@gmail.com> > > --- > > libavformat/srtenc.c | 24 ++++++++++++++++++------ > > 1 file changed, 18 insertions(+), 6 deletions(-) > > > > diff --git a/libavformat/srtenc.c b/libavformat/srtenc.c > > index d811a4da0e..c53b227313 100644 > > --- a/libavformat/srtenc.c > > +++ b/libavformat/srtenc.c > > @@ -34,6 +34,20 @@ typedef struct SRTContext{ > > unsigned index; > > } SRTContext; > > > > +static void srt_write_time(AVIOContext *pb, int64_t millisec) > > +{ > > + int64_t sec = millisec / 1000; > > + int64_t min = sec / 60; > > + int64_t hour = min / 60; > > + > > + millisec -= 1000 * sec; > > + sec -= 60 * min; > > + min -= 60 * hour; > > + > > + avio_printf(pb, "%02"PRId64":%02"PRId64":%02"PRId64",%03"PRId64"", > > + hour, min, sec, millisec); > > +} > > + > > static int srt_write_header(AVFormatContext *avf) > > { > > SRTContext *srt = avf->priv_data; > > @@ -85,12 +99,10 @@ FF_ENABLE_DEPRECATION_WARNINGS > > return 0; > > } > > e = s + d; > > - avio_printf(avf->pb, "%d\n%02d:%02d:%02d,%03d --> %02d:%02d:%02d,%03d", > > - srt->index, > > - (int)(s / 3600000), (int)(s / 60000) % 60, > > - (int)(s / 1000) % 60, (int)(s % 1000), > > - (int)(e / 3600000), (int)(e / 60000) % 60, > > - (int)(e / 1000) % 60, (int)(e % 1000)); > > I find the original code, with aligned divisions and explicit modulo > more readable. > > Your new code is fragile with regard to the order of operations, and it > takes a little reflection to see it is correct. Not much, but more than > (s / 60000) % 60.
Sorry, the idea is coming from webvtt_write_time(), although I rewrite the code. I think it's more readability to split the function with hour, minute, second, if you prefer to old code, then please ignore the patch. > > Also, you are using PRId64 tu print numbers between 0 and 1000. > > > + avio_printf(avf->pb, "%d\n", srt->index); > > + srt_write_time(avf->pb, s); > > + avio_printf(avf->pb, " --> "); > > + srt_write_time(avf->pb, e); > > if (p) > > avio_printf(avf->pb, " X1:%03d X2:%03d Y1:%03d Y2:%03d", > > x1, x2, y1, y2); > > Regards, > > -- > Nicolas George -- Thanks, Limin Wang _______________________________________________ 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".