]> git.sesse.net Git - vlc/commitdiff
Add secstotimestr and msecstotimestr to convert (milli)seconds to a
authorRocky Bernstein <rocky@videolan.org>
Tue, 2 Dec 2003 01:54:30 +0000 (01:54 +0000)
committerRocky Bernstein <rocky@videolan.org>
Tue, 2 Dec 2003 01:54:30 +0000 (01:54 +0000)
time string.

include/mtime.h
modules/access/cdda/access.c
modules/demux/mkv.cpp
modules/gui/gtk/playlist.c
src/misc/mtime.c

index b7637237b73cf7ae279071da5d0be945e0160385..6241b30239059b40b25f1739a94795a09c29674a 100644 (file)
@@ -9,7 +9,7 @@
  * Functions prototyped are implemented in interface/mtime.c.
  *****************************************************************************
  * Copyright (C) 1996, 1997, 1998, 1999, 2000 VideoLAN
- * $Id: mtime.h,v 1.13 2002/11/11 14:39:11 sam Exp $
+ * $Id: mtime.h,v 1.14 2003/12/02 01:54:30 rocky Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *
@@ -47,6 +47,9 @@
  *****************************************************************************/
 #define MSTRTIME_MAX_SIZE 22
 
+#define msecstotimestr(psz_buffer, msecs) \
+  secstotimestr( psz_buffer, (msecs / (int) 1000) )
+
 /*****************************************************************************
  * Prototypes
  *****************************************************************************/
@@ -54,4 +57,5 @@ VLC_EXPORT( char *,  mstrtime, ( char *psz_buffer, mtime_t date ) );
 VLC_EXPORT( mtime_t, mdate,    ( void ) );
 VLC_EXPORT( void,    mwait,    ( mtime_t date ) );
 VLC_EXPORT( void,    msleep,   ( mtime_t delay ) );
+VLC_EXPORT( char *,  secstotimestr, ( char *psz_buffer, int secs ) );
 
index 4a3b0b341b9b8b1d77be36f718788a31f9e7800f..f3c5733e10f0d491374fcb80f957959e09845c65 100644 (file)
@@ -2,7 +2,7 @@
  * cddax.c : CD digital audio input module for vlc using libcdio
  *****************************************************************************
  * Copyright (C) 2000,2003 VideoLAN
- * $Id: access.c,v 1.7 2003/12/01 03:34:30 rocky Exp $
+ * $Id: access.c,v 1.8 2003/12/02 01:54:30 rocky Exp $
  *
  * Authors: Rocky Bernstein <rocky@panix.com> 
  *          Laurent Aimar <fenrir@via.ecp.fr>
@@ -518,18 +518,6 @@ static void CDDASeek( input_thread_t * p_input, off_t i_off )
 
 }
 
-static 
-char * secs2TimeStr( int64_t i_sec )
-{
-  int h = i_sec / 3600;
-  int m = ( i_sec / 60 ) % 60;
-  int s = i_sec % 60;
-  static char buffer[20];
-
-  snprintf(buffer, 20, "%d:%2.2d:%2.2d", h, m, s);
-  return buffer;
-}
-
 #define meta_info_add_str(title, str) \
   if ( str ) {                                         \
     printf("field %s str %s\n", title, str);           \
@@ -551,7 +539,9 @@ static void InformationCreate( input_thread_t *p_input  )
     if( p_cdda->cddb.disc->length > 1000 )
       {
        int64_t i_sec = (int64_t) p_cdda->cddb.disc->length;
-       input_AddInfo( p_cat, _("Duration"), "%s", secs2TimeStr( i_sec ) );
+       char psz_buffer[MSTRTIME_MAX_SIZE];
+       input_AddInfo( p_cat, _("Duration"), "%s", 
+                      secstotimestr( psz_buffer, i_sec ) );
       } else 
       {
        use_cddb = 0;
@@ -585,11 +575,13 @@ static void InformationCreate( input_thread_t *p_input  )
   if (!use_cddb)
   {
     track_t i_track = p_cdda->i_nb_tracks;
+    char psz_buffer[MSTRTIME_MAX_SIZE];
     mtime_t i_duration = 
       (p_cdda->p_sectors[i_track] - p_cdda->p_sectors[i_track-1]) 
       / CDIO_CD_FRAMES_PER_SEC;
 
-    input_AddInfo( p_cat, _("Duration"), "%s", secs2TimeStr( i_duration ) );
+    input_AddInfo( p_cat, _("Duration"), "%s", 
+                  secstotimestr( psz_buffer, i_duration ) );
   }
 }
 
@@ -829,10 +821,11 @@ CDDAFormatStr(const input_thread_t *p_input, cdda_data_t *p_cdda,
 
     case 's':
       if (p_cdda->i_cddb_enabled) {
+       char psz_buffer[MSTRTIME_MAX_SIZE];
        mtime_t i_duration = 
          (p_cdda->p_sectors[i_track] - p_cdda->p_sectors[i_track-1]) 
          / CDIO_CD_FRAMES_PER_SEC;
-       add_format_str_info(secs2TimeStr(i_duration));
+       add_format_str_info(secstotimestr( psz_buffer, i_duration ) );
       } else goto not_special;
       break;
 
index ea8cdb4f200658339bead3ff6e9de6378001ad16..211903273803a7b441b9960f6a5ae4b0c55fbc04 100644 (file)
@@ -2,7 +2,7 @@
  * mkv.cpp : matroska demuxer
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: mkv.cpp,v 1.47 2003/11/28 22:23:04 fenrir Exp $
+ * $Id: mkv.cpp,v 1.48 2003/12/02 01:54:30 rocky Exp $
  *
  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  *
@@ -2171,14 +2171,9 @@ static void InformationsCreate( input_thread_t *p_input )
     p_cat = input_InfoCategory( p_input, "Matroska" );
     if( p_sys->f_duration > 1000.1 )
     {
-        int64_t i_sec = (int64_t)p_sys->f_duration / 1000;
-        int h,m,s;
-
-        h = i_sec / 3600;
-        m = ( i_sec / 60 ) % 60;
-        s = i_sec % 60;
-
-        input_AddInfo( p_cat, _("Duration"), "%d:%2.2d:%2.2d" , h, m, s );
+       char psz_buffer[MSTRTIME_MAX_SIZE];
+        input_AddInfo( p_cat, _("Duration"), 
+                      msecstotimestr( psz_buffer, p_sys->f_duration ) );
     }
 
     if( p_sys->psz_title )
index e6b68278260b5c03a46a29325789821928f5c3b3..86ea953fd06e62e98e9bfd9a589eeb8a7f71bec9 100644 (file)
@@ -2,7 +2,7 @@
  * gtk_playlist.c : Interface for the playlist dialog
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: playlist.c,v 1.5 2003/11/30 19:42:52 sigmunau Exp $
+ * $Id: playlist.c,v 1.6 2003/12/02 01:54:30 rocky Exp $
  *
  * Authors: Pierre Baillet <oct@zoy.org>
  *          Stéphane Borel <stef@via.ecp.fr>
@@ -694,12 +694,11 @@ void GtkRebuildCList( GtkCList * p_clist, playlist_t * p_playlist )
     vlc_mutex_lock( &p_playlist->object_lock );
     for( i_dummy = p_playlist->i_size ; i_dummy-- ; )
     {
-        char psz_duration[14];
+        char psz_duration[MSTRTIME_MAX_SIZE];
         mtime_t dur = p_playlist->pp_items[i_dummy]->i_duration;
         if ( dur != -1 )
         {
-            sprintf( psz_duration, "%d:%2.2d:%2.2d", (int)(dur / 3600),
-                     (int)(( dur % 3600 ) / 60), (int)(dur % 60) );
+         secstotimestr( psz_duration, dur );
         }
         else
         {
index 2f5a87f895a053b204fe6743d300565a736d532c..34db7a83b33119ebae74fcecc78a4ce05e50773b 100644 (file)
@@ -3,7 +3,7 @@
  * Functions are prototyped in mtime.h.
  *****************************************************************************
  * Copyright (C) 1998-2001 VideoLAN
- * $Id: mtime.c,v 1.36 2003/06/05 11:52:19 gbazin Exp $
+ * $Id: mtime.c,v 1.37 2003/12/02 01:54:30 rocky Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *
@@ -67,15 +67,21 @@ int nanosleep(struct timespec *, struct timespec *);
 /*****************************************************************************
  * mstrtime: return a date in a readable format
  *****************************************************************************
- * This functions is provided for any interface function which need to print a
- * date. psz_buffer should be a buffer long enough to store the formatted
+ * This function converts a mtime date into a string.
+ * psz_buffer should be a buffer long enough to store the formatted
  * date.
  *****************************************************************************/
+/**
+ * \brief return a date in a readable format
+ * \param date to be converted
+ * \param psz_buffer should be a buffer at least MSTRTIME_MAX_SIZE characters
+ * \return psz_buffer is returned so this can be used as printf parameter.
+ */
 char *mstrtime( char *psz_buffer, mtime_t date )
 {
     static mtime_t ll1000 = 1000, ll60 = 60, ll24 = 24;
 
-    sprintf( psz_buffer, "%02d:%02d:%02d-%03d.%03d",
+    snprintf( psz_buffer, MSTRTIME_MAX_SIZE, "%02d:%02d:%02d-%03d.%03d",
              (int) (date / (ll1000 * ll1000 * ll60 * ll60) % ll24),
              (int) (date / (ll1000 * ll1000 * ll60) % ll60),
              (int) (date / (ll1000 * ll1000) % ll60),
@@ -84,6 +90,27 @@ char *mstrtime( char *psz_buffer, mtime_t date )
     return( psz_buffer );
 }
 
+/*****************************************************************************
+ * secstotimestr: convert seconds to a time in the format h:mm:ss 
+ *****************************************************************************
+ * This function is provided for any interface function which need to print a
+ * time string in the format h:mm:ss
+ * date.
+ *****************************************************************************/
+/**
+ * \brief convert seconds to a time in the format h:mm:ss 
+ * \param secs  the date to be converted
+ * \param psz_buffer should be a buffer at least MSTRTIME_MAX_SIZE characters
+ * \return psz_buffer is returned so this can be used as printf parameter.
+ */
+char *secstotimestr( char *psz_buffer, int secs )
+{
+  snprintf( psz_buffer, MSTRTIME_MAX_SIZE, "%d:%2.2d:%2.2d",
+           (int) (secs / 3600), (int)(( secs % 3600 ) / 60), 
+           (int)(secs % 60) );
+  return( psz_buffer );
+}
+
 /*****************************************************************************
  * mdate: return high precision date
  *****************************************************************************