Many Windows related fixes and tweaks. Also fixed some issues with newer versions of CMake and Swig files.

This commit is contained in:
Jonathan Thomas
2015-08-24 23:49:45 -05:00
parent bfa050409c
commit fbc719b11f
7 changed files with 84 additions and 56 deletions

View File

@@ -1218,25 +1218,12 @@ void FFmpegReader::Seek(long int requested_frame) throw(TooManySeeks)
{
// Seek to nearest key-frame (aka, i-frame)
bool seek_worked = false;
// Seek audio stream (if not already seeked... and if an audio stream is found)
int64_t seek_target = ConvertFrameToVideoPTS(requested_frame - buffer_amount);
if (!seek_worked && info.has_audio)
{
seek_target = ConvertFrameToAudioPTS(requested_frame - buffer_amount);
if (info.has_audio && av_seek_frame(pFormatCtx, info.audio_stream_index, seek_target, AVSEEK_FLAG_BACKWARD) < 0) {
fprintf(stderr, "%s: error while seeking audio stream\n", pFormatCtx->filename);
} else
{
// AUDIO SEEK
is_video_seek = false;
seek_worked = true;
}
}
int64_t seek_target = 0;
// Seek video stream (if any)
if (info.has_video) {
if (!seek_worked && info.has_video)
{
seek_target = ConvertFrameToVideoPTS(requested_frame - buffer_amount);
if (av_seek_frame(pFormatCtx, info.video_stream_index, seek_target, AVSEEK_FLAG_BACKWARD) < 0) {
fprintf(stderr, "%s: error while seeking video stream\n", pFormatCtx->filename);
} else
@@ -1247,6 +1234,20 @@ void FFmpegReader::Seek(long int requested_frame) throw(TooManySeeks)
}
}
// Seek audio stream (if not already seeked... and if an audio stream is found)
if (!seek_worked && info.has_audio)
{
seek_target = ConvertFrameToAudioPTS(requested_frame - buffer_amount);
if (info.has_audio && av_seek_frame(pFormatCtx, info.audio_stream_index, seek_target, AVSEEK_FLAG_BACKWARD) < 0) {
fprintf(stderr, "%s: error while seeking audio stream\n", pFormatCtx->filename);
} else
{
// AUDIO SEEK
is_video_seek = false;
seek_worked = true;
}
}
// Was the seek successful?
if (seek_worked)
{