[FFmpeg-cvslog] avutil/timecode: add av_timecode_init_from_components
Marton Balint
git at videolan.org
Thu Dec 3 19:57:05 EET 2020
ffmpeg | branch: master | Marton Balint <cus at passwd.hu> | Sat Sep 5 23:04:28 2020 +0200| [eca12f4d5a9231b0e6b71f55525518f104877ee6] | committer: Marton Balint
avutil/timecode: add av_timecode_init_from_components
Signed-off-by: Marton Balint <cus at passwd.hu>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=eca12f4d5a9231b0e6b71f55525518f104877ee6
---
doc/APIchanges | 3 +++
libavutil/timecode.c | 28 ++++++++++++++++++----------
libavutil/timecode.h | 17 +++++++++++++++++
libavutil/version.h | 2 +-
4 files changed, 39 insertions(+), 11 deletions(-)
diff --git a/doc/APIchanges b/doc/APIchanges
index bb19cbea7c..3fb9e12525 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -15,6 +15,9 @@ libavutil: 2017-10-21
API changes, most recent first:
+2020-12-03 - xxxxxxxxxx - lavu 56.62.100 - timecode.h
+ Add av_timecode_init_from_components.
+
2020-xx-xx - xxxxxxxxxx - lavc 58.114.100 - avcodec.h
Deprecate AVCodecContext.thread_safe_callbacks. Starting with
LIBAVCODEC_VERSION_MAJOR=60, user callbacks must always be
diff --git a/libavutil/timecode.c b/libavutil/timecode.c
index 7caa6c64f5..c1fa445d31 100644
--- a/libavutil/timecode.c
+++ b/libavutil/timecode.c
@@ -226,19 +226,12 @@ int av_timecode_init(AVTimecode *tc, AVRational rate, int flags, int frame_start
return check_timecode(log_ctx, tc);
}
-int av_timecode_init_from_string(AVTimecode *tc, AVRational rate, const char *str, void *log_ctx)
+int av_timecode_init_from_components(AVTimecode *tc, AVRational rate, int flags, int hh, int mm, int ss, int ff, void *log_ctx)
{
- char c;
- int hh, mm, ss, ff, ret;
-
- if (sscanf(str, "%d:%d:%d%c%d", &hh, &mm, &ss, &c, &ff) != 5) {
- av_log(log_ctx, AV_LOG_ERROR, "Unable to parse timecode, "
- "syntax: hh:mm:ss[:;.]ff\n");
- return AVERROR_INVALIDDATA;
- }
+ int ret;
memset(tc, 0, sizeof(*tc));
- tc->flags = c != ':' ? AV_TIMECODE_FLAG_DROPFRAME : 0; // drop if ';', '.', ...
+ tc->flags = flags;
tc->rate = rate;
tc->fps = fps_from_frame_rate(rate);
@@ -253,3 +246,18 @@ int av_timecode_init_from_string(AVTimecode *tc, AVRational rate, const char *st
}
return 0;
}
+
+int av_timecode_init_from_string(AVTimecode *tc, AVRational rate, const char *str, void *log_ctx)
+{
+ char c;
+ int hh, mm, ss, ff, flags;
+
+ if (sscanf(str, "%d:%d:%d%c%d", &hh, &mm, &ss, &c, &ff) != 5) {
+ av_log(log_ctx, AV_LOG_ERROR, "Unable to parse timecode, "
+ "syntax: hh:mm:ss[:;.]ff\n");
+ return AVERROR_INVALIDDATA;
+ }
+ flags = c != ':' ? AV_TIMECODE_FLAG_DROPFRAME : 0; // drop if ';', '.', ...
+
+ return av_timecode_init_from_components(tc, rate, flags, hh, mm, ss, ff, log_ctx);
+}
diff --git a/libavutil/timecode.h b/libavutil/timecode.h
index 697e61180b..060574a172 100644
--- a/libavutil/timecode.h
+++ b/libavutil/timecode.h
@@ -160,6 +160,23 @@ char *av_timecode_make_mpeg_tc_string(char *buf, uint32_t tc25bit);
*/
int av_timecode_init(AVTimecode *tc, AVRational rate, int flags, int frame_start, void *log_ctx);
+/**
+ * Init a timecode struct from the passed timecode components.
+ *
+ * @param log_ctx a pointer to an arbitrary struct of which the first field
+ * is a pointer to an AVClass struct (used for av_log)
+ * @param tc pointer to an allocated AVTimecode
+ * @param rate frame rate in rational form
+ * @param flags miscellaneous flags such as drop frame, +24 hours, ...
+ * (see AVTimecodeFlag)
+ * @param hh hours
+ * @param mm minutes
+ * @param ss seconds
+ * @param ff frames
+ * @return 0 on success, AVERROR otherwise
+ */
+int av_timecode_init_from_components(AVTimecode *tc, AVRational rate, int flags, int hh, int mm, int ss, int ff, void *log_ctx);
+
/**
* Parse timecode representation (hh:mm:ss[:;.]ff).
*
diff --git a/libavutil/version.h b/libavutil/version.h
index 55a59d6c58..9b311b5b27 100644
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@ -79,7 +79,7 @@
*/
#define LIBAVUTIL_VERSION_MAJOR 56
-#define LIBAVUTIL_VERSION_MINOR 61
+#define LIBAVUTIL_VERSION_MINOR 62
#define LIBAVUTIL_VERSION_MICRO 100
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
More information about the ffmpeg-cvslog
mailing list