]> git.sesse.net Git - vlc/commitdiff
Implementing MP4 DEMUX_GET_FPS control query
authorHugo Beauzee-Luyssen <beauze.h@gmail.com>
Wed, 23 Sep 2009 13:00:43 +0000 (15:00 +0200)
committerLaurent Aimar <fenrir@videolan.org>
Tue, 13 Oct 2009 19:09:08 +0000 (21:09 +0200)
Signed-off-by: Laurent Aimar <fenrir@videolan.org>
modules/demux/mp4/mp4.c

index 8cf0e3b0d3db7a1a3993067b275ffefd8cbbb44a..1b038e0b0691c1517b1f7e117c86537c156eca08 100644 (file)
@@ -156,6 +156,7 @@ struct demux_sys_t
     uint64_t     i_duration;     /* movie duration */
     unsigned int i_tracks;       /* number of tracks */
     mp4_track_t  *track;         /* array of track */
+    float        f_fps;          /* number of frame per seconds */
 
     /* */
     MP4_Box_t    *p_tref_chap;
@@ -843,8 +844,9 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
             return VLC_SUCCESS;
 
         case DEMUX_GET_FPS:
-            msg_Warn( p_demux, "DEMUX_GET_FPS unimplemented !!" );
-            return VLC_EGENERIC;
+            pf = (double*)va_arg( args, double* );
+            *pf = (double)p_sys->f_fps;
+            return VLC_SUCCESS;
 
         case DEMUX_GET_META:
         {
@@ -1562,6 +1564,8 @@ static int TrackCreateES( demux_t *p_demux, mp4_track_t *p_track,
         TrackGetESSampleRate( &p_track->fmt.video.i_frame_rate,
                               &p_track->fmt.video.i_frame_rate_base,
                               p_track, i_sample_description_index, i_chunk );
+        p_demux->p_sys->f_fps = (float)p_track->fmt.video.i_frame_rate /
+                                (float)p_track->fmt.video.i_frame_rate_base;
         break;
 
     case AUDIO_ES: