# HG changeset patch # User reimar # Date 1173020006 0 # Node ID 1c12f4697cecac3c0a7f9f2f40a6b4f79044f25f # Parent e0c231d90b7c2a476f5188e288c1e2a4b7b1db70 Fix crash with avisynth audio-only files and take audio length into account when length is queried. diff -r e0c231d90b7c -r 1c12f4697cec libmpdemux/demux_avs.c --- 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: