changeset 22430:1c12f4697cec

Fix crash with avisynth audio-only files and take audio length into account when length is queried.
author reimar
date Sun, 04 Mar 2007 14:53:26 +0000
parents e0c231d90b7c
children 0cf22436ef75
files libmpdemux/demux_avs.c
diffstat 1 files changed, 5 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/libmpdemux/demux_avs.c	Sun Mar 04 14:42:17 2007 +0000
+++ b/libmpdemux/demux_avs.c	Sun Mar 04 14:53:26 2007 +0000
@@ -362,14 +362,17 @@
 static int demux_avs_control(demuxer_t *demuxer, int cmd, void *arg)
 {   
     sh_video_t *sh_video=demuxer->video->sh;
+    sh_audio_t *sh_audio=demuxer->audio->sh;
     AVS_T *AVS = demuxer->priv;
 
     switch(cmd)
     {
         case DEMUXER_CTRL_GET_TIME_LENGTH:
         {
-            if (!AVS->video_info->num_frames) return DEMUXER_CTRL_DONTKNOW;
-            *((double *)arg) = (double)AVS->video_info->num_frames / sh_video->fps;
+            double res = sh_video ? (double)AVS->video_info->num_frames / sh_video->fps : 0;
+            if (sh_audio)
+              res = FFMAX(res, (double)AVS->video_info->num_audio_samples / sh_audio->samplerate);
+            *((double *)arg) = res;
             return DEMUXER_CTRL_OK;
         }
         case DEMUXER_CTRL_GET_PERCENT_POS: