[FFmpeg-devel] [RFC] lavu PTS printing utils
Stefano Sabatini
stefasab at gmail.com
Fri Jan 27 23:28:19 CET 2012
On date Friday 2012-01-27 22:14:35 +0100, Alexander Strasser encoded:
>
> Hi Stefano,
>
> Stefano Sabatini wrote:
> [...]
> > Updated patch with sample ffmpeg patch, comments:
> >
> > * av_ts2str(), av_ts2time2str() are retained for their usefulness,
> > although they should never be used in C++, we assume that C++
> > programmers using FFmpeg code have a clue regarding C/C++
> > incompatibilites, and they can still use the long av_ts_make*
> > functions
>
> As they are macros and are for convenience only (functionality is still
> available for C++ programmers), I am OK with that.
>
> > * double precision is reduced to 6 digits, which looks enough for A/V
> > applications, could not be enough for scientific computing but again
> > given the application domain I don't think this is a much serious
> > issue
> >
> > * "ts" is favored over "timestamp" for brevity/convenience reasons
> >
> > * "ts2str" naming is kept in the macro for brevity/convenience reasons
>
> Fine if you prefer it this way.
>
> [...]
> > +static inline char *av_ts_make_string(char *buf, int64_t ts)
> [...]
> > +static inline char *av_ts_make_time_string(char *buf, int64_t ts, AVRational *tb)
>
> NIT:
> Here and before I would prefer ts as the first argument, it is also consistent
> with the naming which is av_ts_*. Like it is saying these functions are acting on
> a timestamp (I know they can't and don't need to modify it as they only get a copy).
>
> IMHO following that convention makes the order more easy to remember. I would be
> glad to hear your opinion.
Procedural C style convenctions usually demand this order of arguments:
make_thing(dst, src);
so in this case that would be:
av_ts_make_string(char *buf, int64_t ts)
which is interpreted as:
buf <= ts
i.e. like an assignment.
In case of:
static inline char *av_ts_make_time_string(char *buf, int64_t ts, AVRational *tb);
here the timestamp can't be represented by a single entity (indeed it
needs a tb in order to be interpreted), so I think that preferring:
static inline char *av_ts_make_time_string(int64_t ts, AVRational *tb, char *buf)
would be mostly confusing.
Note that here "_ts_" is used like a namespace rather than for
indicating the "object" of the "operator" denoted by the function, in
case you're adopting an object-oriented programming style, for which:
int av_bike_set_shed_color(AVBike *bike, char *color_str);
would have made much sense.
--
FFmpeg = Frenzy and Forgiving Multimedia Powered Erroneous Gospel
More information about the ffmpeg-devel
mailing list