From 6553f49874fc0b8831c3849b0aa14af46530cd66 Mon Sep 17 00:00:00 2001 From: Jonathan Thomas Date: Tue, 3 Jul 2012 02:59:38 -0500 Subject: [PATCH] Made CheckSeek() threadsafe --- src/FFmpegReader.cpp | 11 +++++++++-- src/Main.cpp | 6 +++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/FFmpegReader.cpp b/src/FFmpegReader.cpp index e7409e19..38bba56d 100644 --- a/src/FFmpegReader.cpp +++ b/src/FFmpegReader.cpp @@ -273,6 +273,7 @@ Frame FFmpegReader::ReadStream(int requested_frame) { // Allocate video frame bool end_of_stream = false; + bool check_seek = false; #pragma omp parallel { @@ -293,7 +294,10 @@ Frame FFmpegReader::ReadStream(int requested_frame) if (packet->stream_index == videoStream) { // Check the status of a seek (if any) - if (CheckSeek(true)) + #pragma omp critical (openshot_cache) + check_seek = CheckSeek(true); + + if (check_seek) // Jump to the next iteration of this loop continue; @@ -316,7 +320,10 @@ Frame FFmpegReader::ReadStream(int requested_frame) cout << "AUDIO PACKET (PTS: " << packet->pts << ")" << endl; // Check the status of a seek (if any) - if (CheckSeek(false)) + #pragma omp critical (openshot_cache) + check_seek = CheckSeek(false); + + if (check_seek) // Jump to the next iteration of this loop continue; diff --git a/src/Main.cpp b/src/Main.cpp index 594ee8e6..667ba9e0 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -16,12 +16,12 @@ int main() // openshot::FFmpegReader r("/home/jonathan/Apps/libopenshot/src/examples/test.mp4"); // openshot::FFmpegReader r("/home/jonathan/Apps/libopenshot/src/examples/test1.mp4"); - openshot::FFmpegReader r("/home/jonathan/Apps/libopenshot/src/examples/piano.wav"); + // openshot::FFmpegReader r("/home/jonathan/Apps/libopenshot/src/examples/piano.wav"); // openshot::FFmpegReader r("/home/jonathan/Videos/sintel-1024-stereo.mp4"); // openshot::FFmpegReader r("/home/jonathan/Videos/00001.mts"); // openshot::FFmpegReader r("/home/jonathan/Videos/sintel_trailer-720p.mp4"); // openshot::FFmpegReader r("/home/jonathan/Aptana Studio Workspace/OpenShotLibrary/src/examples/piano.wav"); - // openshot::FFmpegReader r("/home/jonathan/Music/Army of Lovers/Crucified/Army of Lovers - Crucified [Single Version].mp3"); + openshot::FFmpegReader r("/home/jonathan/Music/Army of Lovers/Crucified/Army of Lovers - Crucified [Single Version].mp3"); // openshot::FFmpegReader r("/home/jonathan/Documents/OpenShot Art/test.jpeg"); // openshot::FFmpegReader r("/home/jonathan/Videos/60fps.mp4"); // openshot::FFmpegReader r("/home/jonathan/Aptana Studio Workspace/OpenShotLibrary/src/examples/asdf.wdf"); @@ -29,7 +29,7 @@ int main() // Display debug info r.DisplayInfo(); - for (int frame = 1; frame <= 500; frame++) + for (int frame = 300; frame <= 500; frame++) { Frame f = r.GetFrame(frame); f.Play();