timecode: set a fixed buffer size of 16B for tc string.
authorClément Bœsch <clement.boesch@smartjog.com>
Wed, 11 Jan 2012 16:51:57 +0000 (17:51 +0100)
committerClément Bœsch <ubitux@gmail.com>
Wed, 11 Jan 2012 17:14:03 +0000 (18:14 +0100)
libavcodec/timecode.c
libavcodec/timecode.h
libavfilter/vf_drawtext.c

index 420b276..95aed96 100644 (file)
@@ -91,7 +91,7 @@ char *avpriv_timecode_to_string(char *buf, const struct ff_timecode *tc, unsigne
     ss = frame_num / fps        % 60;
     mm = frame_num / (fps*60)   % 60;
     hh = frame_num / (fps*3600) % 24;
-    snprintf(buf, sizeof("hh:mm:ss.ff"), "%02d:%02d:%02d%c%02d",
+    snprintf(buf, 16, "%02d:%02d:%02d%c%02d",
              hh, mm, ss, tc->drop ? ';' : ':', ff);
     return buf;
 }
index 50ea313..a2b6b09 100644 (file)
@@ -67,8 +67,8 @@ uint32_t avpriv_framenum_to_smpte_timecode(unsigned frame, int fps, int drop);
  * @param tc    Timecode struct pointer
  * @param frame Frame id (timecode frame is computed with tc->start+frame)
  * @return a pointer to the buf parameter
- * @note  buf must have enough space to store the timecode representation
- *        (sizeof("hh:mm:ss.ff"))
+ * @note  buf must have enough space to store the timecode representation: 16
+ *        bytes is the minimum required size.
  */
 char *avpriv_timecode_to_string(char *buf, const struct ff_timecode *tc, unsigned frame);
 
index 0de5b9f..d0d854b 100644 (file)
@@ -731,7 +731,7 @@ static int draw_text(AVFilterContext *ctx, AVFilterBufferRef *picref,
 
 #if CONFIG_AVCODEC
     if (dtext->tc.str) {
-        char tcbuf[sizeof("hh:mm:ss.ff")];
+        char tcbuf[16];
         avpriv_timecode_to_string(tcbuf, &dtext->tc, dtext->frame_id++);
         buf = av_asprintf("%s%s", dtext->text, tcbuf);
     }