Ticket #375: ogg_audiofile.diff

File ogg_audiofile.diff, 1.9 KB (added by reimar, 21 years ago)

possible fix

  • libmpdemux/demux_ogg.c

    RCS file: /cvsroot/mplayer/main/libmpdemux/demux_ogg.c,v
    retrieving revision 1.80
    diff -u -r1.80 demux_ogg.c
     
    554554  if (ds == d->video && ((sh_audio_t*)ds->sh)->format == FOURCC_THEORA)
    555555     context = ((sh_video_t *)ds->sh)->context;
    556556  data = demux_ogg_read_packet(os,pack,context,&pts,&flags,samplesize);
    557   if(d->video->id < 0)
    558       ((sh_audio_t*)ds->sh)->delay = pts;
    559557
    560558  /// Clear subtitles if necessary (for broken files)
    561559  if ((clear_sub > 0) && (pts >= clear_sub)) {
    … …  
    13901388
    13911389}
    13921390
    1393 extern void resync_audio_stream(sh_audio_t *sh_audio);
    1394 
    13951391static void demux_ogg_seek(demuxer_t *demuxer,float rel_seek_secs,int flags) {
    13961392  ogg_demuxer_t* ogg_d = demuxer->priv;
    13971393  ogg_sync_state* sync = &ogg_d->sync;
    … …  
    14731469    }
    14741470  }
    14751471    if (pos < 0) pos = 0;
    1476     if (pos > (demuxer->movi_end - demuxer->movi_start)) return;
     1472    if (pos > (demuxer->movi_end - demuxer->movi_start))
     1473      pos = demuxer->movi_end - demuxer->movi_start;
    14771474  } // if(ogg_d->syncpoints)
    14781475
    14791476  while(1) {
    … …  
    15021499      char* buf = ogg_sync_buffer(sync,BLOCK_SIZE);
    15031500      int len = stream_read(demuxer->stream,buf,BLOCK_SIZE);
    15041501       if(len == 0 && demuxer->stream->eof) {
    1505         mp_msg(MSGT_DEMUX,MSGL_ERR,"EOF while trying to seek !!!!\n");
    1506         break;
     1502        mp_msg(MSGT_DEMUX,MSGL_V,"EOF while trying to seek !!!!\n");
     1503        return;
    15071504      }
    15081505      ogg_sync_wrote(sync,len);
    15091506      continue;
    … …  
    15581555        vo_osd_changed(OSDTYPE_SUBTITLE);
    15591556        clear_sub = -1;
    15601557        demux_ogg_add_packet(ds,os,ds->id,&op);
    1561         if(sh_audio)
    1562           resync_audio_stream(sh_audio);
     1558        if (demuxer->video->id < 0)
     1559          sh_audio->delay = pts;
    15631560        return;
    15641561      }
    15651562     }