From 85ac4bf6d24ef0f1954e556c332f04c6a12de6cb Mon Sep 17 00:00:00 2001 From: Jonathan Thomas Date: Tue, 24 Jan 2017 18:39:17 -0600 Subject: [PATCH] Updating references to frame number / position to long int, there were still quite a few old "int" declarations, which limits the length of frame number. Also, updated precision of KeyFrames to use double (instead of float) for higher precision, which fixed lots of issues with very long videos (since our FrameMapper used a KeyFrame object to create a map to new frames) --- include/AudioReaderSource.h | 4 ++-- include/Coordinate.h | 10 +++++----- include/FFmpegReader.h | 4 ++-- include/Frame.h | 2 +- include/KeyFrame.h | 12 ++++++------ include/PlayerBase.h | 2 +- include/Qt/AudioPlaybackThread.h | 4 ++-- include/Qt/PlayerPrivate.h | 6 +++--- include/Qt/VideoCacheThread.h | 10 +++++----- include/Qt/VideoPlaybackThread.h | 2 +- include/QtPlayer.h | 2 +- src/Coordinate.cpp | 2 +- src/FFmpegReader.cpp | 20 ++++++++++---------- src/Fraction.cpp | 2 +- src/Frame.cpp | 2 +- src/FrameMapper.cpp | 6 +++--- src/KeyFrame.cpp | 30 +++++++++++++++--------------- src/Qt/AudioPlaybackThread.cpp | 4 ++-- src/Qt/PlayerPrivate.cpp | 2 +- src/Qt/VideoCacheThread.cpp | 6 +++--- src/Qt/VideoPlaybackThread.cpp | 2 +- src/QtPlayer.cpp | 2 +- 22 files changed, 68 insertions(+), 68 deletions(-) diff --git a/include/AudioReaderSource.h b/include/AudioReaderSource.h index 5510e84f..92fd6db4 100644 --- a/include/AudioReaderSource.h +++ b/include/AudioReaderSource.h @@ -64,7 +64,7 @@ namespace openshot int64 original_frame_number; /// The current frame to read from int64 frame_number; /// The current frame number tr1::shared_ptr frame; /// The current frame object that is being read - int frame_position; /// The position of the current frame's buffer + long int frame_position; /// The position of the current frame's buffer double estimated_frame; /// The estimated frame position of the currently playing buffer int estimated_samples_per_frame; /// The estimated samples per frame of video @@ -121,7 +121,7 @@ namespace openshot tr1::shared_ptr getFrame() const { return frame; } /// Get the estimate frame that is playing at this moment - int getEstimatedFrame() const { return int(estimated_frame); } + long int getEstimatedFrame() const { return long(estimated_frame); } /// Set Speed (The speed and direction to playback a reader (1=normal, 2=fast, 3=faster, -1=rewind, etc...) void setSpeed(int new_speed) { speed = new_speed; } diff --git a/include/Coordinate.h b/include/Coordinate.h index 2430120b..306d2a98 100644 --- a/include/Coordinate.h +++ b/include/Coordinate.h @@ -55,11 +55,11 @@ namespace openshot { private: bool increasing; ///< Is the Y value increasing or decreasing? Fraction repeated; ///< Fraction of repeated Y values (for example, 1/3 would be the first Y value of 3 repeated values) - float delta; ///< This difference in Y value (from the previous unique Y value) + double delta; ///< This difference in Y value (from the previous unique Y value) public: - float X; ///< The X value of the coordinate (usually representing the frame #) - float Y; ///< The Y value of the coordinate (usually representing the value of the property being animated) + double X; ///< The X value of the coordinate (usually representing the frame #) + double Y; ///< The Y value of the coordinate (usually representing the value of the property being animated) /// The default constructor, which defaults to (0,0) Coordinate(); @@ -67,7 +67,7 @@ namespace openshot { /// @brief Constructor which also sets the X and Y /// @param x The X coordinate (usually representing the frame #) /// @param y The Y coordinate (usually representing the value of the property being animated) - Coordinate(float x, float y); + Coordinate(double x, double y); /// @brief Set the repeating Fraction (used internally on the timeline, to track changes to coordinates) /// @param is_repeated The fraction representing how many times this coordinate Y value repeats (only used on the timeline) @@ -85,7 +85,7 @@ namespace openshot { /// @brief Set the delta / difference between previous coordinate value (used internally on the timeline, to track changes to coordinates) /// @param new_delta Indicates how much this Y value differs from the previous Y value - void Delta(float new_delta) { delta=new_delta; } + void Delta(double new_delta) { delta=new_delta; } /// Get the delta / difference between previous coordinate value (used internally on the timeline, to track changes to coordinates) float Delta() { return delta; } diff --git a/include/FFmpegReader.h b/include/FFmpegReader.h index 24f77013..1250a459 100644 --- a/include/FFmpegReader.h +++ b/include/FFmpegReader.h @@ -58,9 +58,9 @@ namespace openshot */ struct AudioLocation { - int frame; + long int frame; int sample_start; - int is_near(AudioLocation location, int samples_per_frame, int amount); + bool is_near(AudioLocation location, int samples_per_frame, long int amount); }; /** diff --git a/include/Frame.h b/include/Frame.h index ac9d483d..df050cb5 100644 --- a/include/Frame.h +++ b/include/Frame.h @@ -276,7 +276,7 @@ namespace openshot void Save(string path, float scale, string format="PNG", int quality=100); /// Set frame number - void SetFrameNumber(int number); + void SetFrameNumber(long int number); /// Set Pixel Aspect Ratio void SetPixelRatio(int num, int den); diff --git a/include/KeyFrame.h b/include/KeyFrame.h index 6ee68c31..4e66036f 100644 --- a/include/KeyFrame.h +++ b/include/KeyFrame.h @@ -96,16 +96,16 @@ namespace openshot { Keyframe(); /// Constructor which sets the default point & coordinate at X=0 - Keyframe(float value); + Keyframe(double value); /// Add a new point on the key-frame. Each point has a primary coordinate, a left handle, and a right handle. void AddPoint(Point p); /// Add a new point on the key-frame, with some defaults set (BEZIER) - void AddPoint(float x, float y); + void AddPoint(double x, double y); /// Add a new point on the key-frame, with a specific interpolation type - void AddPoint(float x, float y, InterpolationType interpolate); + void AddPoint(double x, double y, InterpolationType interpolate); /// Does this keyframe contain a specific point bool Contains(Point p); @@ -117,7 +117,7 @@ namespace openshot { long int FindIndex(Point p) throw(OutOfBoundsPoint); /// Get the value at a specific index - float GetValue(long int index); + double GetValue(long int index); /// Get the rounded INT value at a specific index int GetInt(long int index); @@ -129,7 +129,7 @@ namespace openshot { Fraction GetRepeatFraction(long int index); /// Get the change in Y value (from the previous Y value) - float GetDelta(long int index); + double GetDelta(long int index); /// Get a point at a specific index Point& GetPoint(long int index) throw(OutOfBoundsPoint); @@ -178,7 +178,7 @@ namespace openshot { /// Scale all points by a percentage (good for evenly lengthening or shortening an openshot::Keyframe) /// 1.0 = same size, 1.05 = 5% increase, etc... - void ScalePoints(float scale); + void ScalePoints(double scale); /// Replace an existing point with a new point void UpdatePoint(long int index, Point p); diff --git a/include/PlayerBase.h b/include/PlayerBase.h index 733ebeee..01e7b148 100644 --- a/include/PlayerBase.h +++ b/include/PlayerBase.h @@ -81,7 +81,7 @@ namespace openshot virtual int Position() = 0; /// Seek to a specific frame in the player - virtual void Seek(int new_frame) = 0; + virtual void Seek(long int new_frame) = 0; /// Get the Playback speed virtual float Speed() = 0; diff --git a/include/Qt/AudioPlaybackThread.h b/include/Qt/AudioPlaybackThread.h index c73f99b4..37718b58 100644 --- a/include/Qt/AudioPlaybackThread.h +++ b/include/Qt/AudioPlaybackThread.h @@ -81,13 +81,13 @@ namespace openshot tr1::shared_ptr getFrame(); /// Get the current frame number being played - int getCurrentFramePosition(); + long int getCurrentFramePosition(); /// Play the audio void Play(); /// Seek the audio thread - void Seek(int new_position); + void Seek(long int new_position); /// Stop the audio playback void Stop(); diff --git a/include/Qt/PlayerPrivate.h b/include/Qt/PlayerPrivate.h index 3c6549d6..6a326849 100644 --- a/include/Qt/PlayerPrivate.h +++ b/include/Qt/PlayerPrivate.h @@ -47,15 +47,15 @@ namespace openshot class PlayerPrivate : Thread { tr1::shared_ptr frame; /// The current frame - int video_position; /// The current frame position. - int audio_position; /// The current frame position. + long int video_position; /// The current frame position. + long int audio_position; /// The current frame position. ReaderBase *reader; /// The reader which powers this player AudioPlaybackThread *audioPlayback; /// The audio thread VideoPlaybackThread *videoPlayback; /// The video thread VideoCacheThread *videoCache; /// The cache thread int speed; /// The speed and direction to playback a reader (1=normal, 2=fast, 3=faster, -1=rewind, etc...) RendererBase *renderer; - int last_video_position; /// The last frame actually displayed + long int last_video_position; /// The last frame actually displayed /// Constructor PlayerPrivate(RendererBase *rb); diff --git a/include/Qt/VideoCacheThread.h b/include/Qt/VideoCacheThread.h index d8fe5da3..e90d0fa7 100644 --- a/include/Qt/VideoCacheThread.h +++ b/include/Qt/VideoCacheThread.h @@ -45,8 +45,8 @@ namespace openshot std::tr1::shared_ptr frame; int speed; bool is_playing; - int position; - int current_display_frame; + long int position; + long int current_display_frame; ReaderBase *reader; int max_frames; @@ -56,7 +56,7 @@ namespace openshot ~VideoCacheThread(); /// Get the currently playing frame number (if any) - int getCurrentFramePosition(); + long int getCurrentFramePosition(); /// Get Speed (The speed and direction to playback a reader (1=normal, 2=fast, 3=faster, -1=rewind, etc...) int getSpeed() const { return speed; } @@ -65,10 +65,10 @@ namespace openshot void Play(); /// Seek the reader to a particular frame number - void Seek(int new_position); + void Seek(long int new_position); /// Set the currently displaying frame number - void setCurrentFramePosition(int current_frame_number); + void setCurrentFramePosition(long int current_frame_number); /// Set Speed (The speed and direction to playback a reader (1=normal, 2=fast, 3=faster, -1=rewind, etc...) void setSpeed(int new_speed) { speed = new_speed; } diff --git a/include/Qt/VideoPlaybackThread.h b/include/Qt/VideoPlaybackThread.h index 5160cd70..86f6a598 100644 --- a/include/Qt/VideoPlaybackThread.h +++ b/include/Qt/VideoPlaybackThread.h @@ -54,7 +54,7 @@ namespace openshot ~VideoPlaybackThread(); /// Get the currently playing frame number (if any) - int getCurrentFramePosition(); + long int getCurrentFramePosition(); /// Start the thread void run(); diff --git a/include/QtPlayer.h b/include/QtPlayer.h index 0d29b7fe..457b1613 100644 --- a/include/QtPlayer.h +++ b/include/QtPlayer.h @@ -72,7 +72,7 @@ namespace openshot int Position(); /// Seek to a specific frame in the player - void Seek(int new_frame); + void Seek(long int new_frame); /// Set the source URL/path of this player (which will create an internal Reader) void SetSource(const std::string &source); diff --git a/src/Coordinate.cpp b/src/Coordinate.cpp index 0d5528c2..c73e0fab 100644 --- a/src/Coordinate.cpp +++ b/src/Coordinate.cpp @@ -36,7 +36,7 @@ Coordinate::Coordinate() : } // Constructor which also allows the user to set the X and Y -Coordinate::Coordinate(float x, float y) : +Coordinate::Coordinate(double x, double y) : X(x), Y(y), increasing(true), repeated(1,1), delta(0.0) { } diff --git a/src/FFmpegReader.cpp b/src/FFmpegReader.cpp index 7ef5b191..1e816265 100644 --- a/src/FFmpegReader.cpp +++ b/src/FFmpegReader.cpp @@ -83,7 +83,7 @@ FFmpegReader::~FFmpegReader() { } // This struct holds the associated video frame and starting sample # for an audio packet. -int AudioLocation::is_near(AudioLocation location, int samples_per_frame, int amount) +bool AudioLocation::is_near(AudioLocation location, int samples_per_frame, long int amount) { // Is frame even close to this one? if (abs(location.frame - frame) >= 2) @@ -92,7 +92,7 @@ int AudioLocation::is_near(AudioLocation location, int samples_per_frame, int am // Note that samples_per_frame can vary slightly frame to frame when the // audio sampling rate is not an integer multiple of the video fps. - int diff = samples_per_frame * (location.frame - frame) + location.sample_start - sample_start; + long int diff = samples_per_frame * (location.frame - frame) + location.sample_start - sample_start; if (abs(diff) <= amount) // close return true; @@ -937,9 +937,9 @@ void FFmpegReader::ProcessAudioPacket(long int requested_frame, long int target_ int pts_remaining_samples = packet_samples / info.channels; // Adjust for zero based array // DEBUG (FOR AUDIO ISSUES) - Get the audio packet start time (in seconds) - int adjusted_pts = packet->pts + audio_pts_offset; + long int adjusted_pts = packet->pts + audio_pts_offset; double audio_seconds = double(adjusted_pts) * info.audio_timebase.ToDouble(); - double sample_seconds = float(pts_total) / info.sample_rate; + double sample_seconds = double(pts_total) / info.sample_rate; // Debug output ZmqLogger::Instance()->AppendDebugMethod("FFmpegReader::ProcessAudioPacket (Decode Info A)", "pts_counter", pts_counter, "PTS", adjusted_pts, "Offset", audio_pts_offset, "PTS Diff", adjusted_pts - prev_pts, "Samples", pts_remaining_samples, "Sample PTS ratio", float(adjusted_pts - prev_pts) / pts_remaining_samples); @@ -1042,7 +1042,7 @@ void FFmpegReader::ProcessAudioPacket(long int requested_frame, long int target_ av_free(audio_converted->data[0]); AV_FREE_FRAME(&audio_converted); - int starting_frame_number = -1; + long int starting_frame_number = -1; bool partial_frame = true; for (int channel_filter = 0; channel_filter < info.channels; channel_filter++) { @@ -1323,7 +1323,7 @@ void FFmpegReader::Seek(long int requested_frame) throw(TooManySeeks) // Get the PTS for the current video packet long int FFmpegReader::GetVideoPTS() { - int current_pts = 0; + long int current_pts = 0; if(packet->dts != AV_NOPTS_VALUE) current_pts = packet->dts; @@ -1445,7 +1445,7 @@ AudioLocation FFmpegReader::GetAudioPTSLocation(long int pts) double frame = (audio_seconds * info.fps.ToDouble()) + 1; // Frame # as a whole number (no more decimals) - int whole_frame = int(frame); + long int whole_frame = long(frame); // Remove the whole number, and only get the decimal of the frame double sample_start_percentage = frame - double(whole_frame); @@ -1469,7 +1469,7 @@ AudioLocation FFmpegReader::GetAudioPTSLocation(long int pts) if (previous_packet_location.frame != -1) { if (location.is_near(previous_packet_location, samples_per_frame, samples_per_frame)) { - int orig_frame = location.frame; + long int orig_frame = location.frame; int orig_start = location.sample_start; // Update sample start, to prevent gaps in audio @@ -1882,7 +1882,7 @@ long int FFmpegReader::GetSmallestVideoFrame() { // Loop through frame numbers map::iterator itr; - int smallest_frame = -1; + long int smallest_frame = -1; for(itr = processing_video_frames.begin(); itr != processing_video_frames.end(); ++itr) { if (itr->first < smallest_frame || smallest_frame == -1) @@ -1898,7 +1898,7 @@ long int FFmpegReader::GetSmallestAudioFrame() { // Loop through frame numbers map::iterator itr; - int smallest_frame = -1; + long int smallest_frame = -1; const GenericScopedLock lock(processingCriticalSection); for(itr = processing_audio_frames.begin(); itr != processing_audio_frames.end(); ++itr) { diff --git a/src/Fraction.cpp b/src/Fraction.cpp index 33d066f0..2d9c449c 100644 --- a/src/Fraction.cpp +++ b/src/Fraction.cpp @@ -49,7 +49,7 @@ double Fraction::ToDouble() { // Return a rounded integer of the frame rate (for example 30000/1001 returns 30 fps) int Fraction::ToInt() { - return round((float) num / den); + return round((double) num / den); } // Calculate the greatest common denominator diff --git a/src/Frame.cpp b/src/Frame.cpp index a1200b9b..18103ea7 100644 --- a/src/Frame.cpp +++ b/src/Frame.cpp @@ -466,7 +466,7 @@ void Frame::SetPixelRatio(int num, int den) } // Set frame number -void Frame::SetFrameNumber(int new_number) +void Frame::SetFrameNumber(long int new_number) { number = new_number; } diff --git a/src/FrameMapper.cpp b/src/FrameMapper.cpp index fcf90eb9..76c6a1e3 100644 --- a/src/FrameMapper.cpp +++ b/src/FrameMapper.cpp @@ -219,7 +219,7 @@ void FrameMapper::Init() Field Even(0, true); // temp field used to track the EVEN field // Variables used to remap audio samples - int start_samples_frame = 1; + long int start_samples_frame = 1; int start_samples_position = 0; for (long int field = 1; field <= fields.size(); field++) @@ -242,7 +242,7 @@ void FrameMapper::Init() // Determine the range of samples (from the original rate). Resampling happens in real-time when // calling the GetFrame() method. So this method only needs to redistribute the original samples with // the original sample rate. - int end_samples_frame = start_samples_frame; + long int end_samples_frame = start_samples_frame; int end_samples_position = start_samples_position; int remaining_samples = Frame::GetSamplesPerFrame(frame_number, target, reader->info.sample_rate, reader->info.channels); @@ -515,7 +515,7 @@ tr1::shared_ptr FrameMapper::GetFrame(long int requested_frame) throw(Rea // Copy the samples int samples_copied = 0; - int starting_frame = copy_samples.frame_start; + long int starting_frame = copy_samples.frame_start; while (info.has_audio && samples_copied < copy_samples.total) { // Init number of samples to copy this iteration diff --git a/src/KeyFrame.cpp b/src/KeyFrame.cpp index 6c0c8178..c87d7e53 100644 --- a/src/KeyFrame.cpp +++ b/src/KeyFrame.cpp @@ -53,7 +53,7 @@ void Keyframe::ReorderPoints() { } // Constructor which sets the default point & coordinate at X=0 -Keyframe::Keyframe(float value) : needs_update(true) { +Keyframe::Keyframe(double value) : needs_update(true) { // Init the factorial table, needed by bezier curves CreateFactorialTable(); @@ -87,7 +87,7 @@ void Keyframe::AddPoint(Point p) { } // Add a new point on the key-frame, with some defaults set (BEZIER) -void Keyframe::AddPoint(float x, float y) +void Keyframe::AddPoint(double x, double y) { // Create a point Point new_point(x, y, BEZIER); @@ -97,7 +97,7 @@ void Keyframe::AddPoint(float x, float y) } // Add a new point on the key-frame, with a specific interpolation type -void Keyframe::AddPoint(float x, float y, InterpolationType interpolate) +void Keyframe::AddPoint(double x, double y, InterpolationType interpolate) { // Create a point Point new_point(x, y, interpolate); @@ -223,7 +223,7 @@ Point Keyframe::GetMaxPoint() { } // Get the value at a specific index -float Keyframe::GetValue(long int index) +double Keyframe::GetValue(long int index) { // Check if it needs to be processed if (needs_update) @@ -407,7 +407,7 @@ Fraction Keyframe::GetRepeatFraction(long int index) } // Get the change in Y value (from the previous Y value) -float Keyframe::GetDelta(long int index) +double Keyframe::GetDelta(long int index) { // Check if it needs to be processed if (needs_update) @@ -653,13 +653,13 @@ void Keyframe::ProcessSegment(int Segment, Point p1, Point p2) { // creating a straight line with coordinates. case LINEAR: { // Get the difference in value - float current_value = p1.co.Y; - float value_difference = p2.co.Y - p1.co.Y; - float value_increment = 0.0f; + double current_value = p1.co.Y; + double value_difference = p2.co.Y - p1.co.Y; + double value_increment = 0.0f; // Get the increment value, but take into account the // first segment has 1 extra value - value_increment = value_difference / (float) (number_of_values); + value_increment = value_difference / (double) (number_of_values); if (Segment == 0) // Add an extra value to the first segment @@ -690,8 +690,8 @@ void Keyframe::ProcessSegment(int Segment, Point p1, Point p2) { number_of_values *= 4; // We need a higher resolution curve (4X) // Diff between points - float X_diff = p2.co.X - p1.co.X; - float Y_diff = p2.co.Y - p1.co.Y; + double X_diff = p2.co.X - p1.co.X; + double Y_diff = p2.co.Y - p1.co.Y; vector segment_coordinates; segment_coordinates.push_back(p1.co); @@ -717,8 +717,8 @@ void Keyframe::ProcessSegment(int Segment, Point p1, Point p2) { jcount = 0; - float new_x = 0.0f; - float new_y = 0.0f; + double new_x = 0.0f; + double new_y = 0.0f; for (long int i = 0; i < npts; i++) { Coordinate co = segment_coordinates[i]; @@ -741,7 +741,7 @@ void Keyframe::ProcessSegment(int Segment, Point p1, Point p2) { // Loop through the raw coordinates, and map them correctly to frame numbers. For example, // we can't have duplicate X values, since X represents our frame numbers. long int current_frame = p1.co.X; - float current_value = p1.co.Y; + double current_value = p1.co.Y; for (long int i = 0; i < raw_coordinates.size(); i++) { // Get the raw coordinate @@ -855,7 +855,7 @@ double Keyframe::Bernstein(long int n, long int i, double t) { // Scale all points by a percentage (good for evenly lengthening or shortening an openshot::Keyframe) // 1.0 = same size, 1.05 = 5% increase, etc... -void Keyframe::ScalePoints(float scale) +void Keyframe::ScalePoints(double scale) { // Loop through each point (skipping the 1st point) for (long int point_index = 0; point_index < Points.size(); point_index++) { diff --git a/src/Qt/AudioPlaybackThread.cpp b/src/Qt/AudioPlaybackThread.cpp index 689b4ef7..2b4da093 100644 --- a/src/Qt/AudioPlaybackThread.cpp +++ b/src/Qt/AudioPlaybackThread.cpp @@ -80,13 +80,13 @@ namespace openshot } // Get the currently playing frame number - int AudioPlaybackThread::getCurrentFramePosition() + long int AudioPlaybackThread::getCurrentFramePosition() { return source ? source->getEstimatedFrame() : 0; } // Seek the audio thread - void AudioPlaybackThread::Seek(int new_position) + void AudioPlaybackThread::Seek(long int new_position) { source->Seek(new_position); } diff --git a/src/Qt/PlayerPrivate.cpp b/src/Qt/PlayerPrivate.cpp index b66b4227..ad742437 100644 --- a/src/Qt/PlayerPrivate.cpp +++ b/src/Qt/PlayerPrivate.cpp @@ -90,7 +90,7 @@ namespace openshot last_video_position = video_position; // How many frames ahead or behind is the video thread? - int video_frame_diff = 0; + long int video_frame_diff = 0; if (reader->info.has_audio && reader->info.has_video) { if (speed != 1) // Set audio frame again (since we are not in normal speed, and not paused) diff --git a/src/Qt/VideoCacheThread.cpp b/src/Qt/VideoCacheThread.cpp index 46d81ed8..896d40a8 100644 --- a/src/Qt/VideoCacheThread.cpp +++ b/src/Qt/VideoCacheThread.cpp @@ -42,7 +42,7 @@ namespace openshot } // Get the currently playing frame number (if any) - int VideoCacheThread::getCurrentFramePosition() + long int VideoCacheThread::getCurrentFramePosition() { if (frame) return frame->number; @@ -51,13 +51,13 @@ namespace openshot } // Set the currently playing frame number (if any) - void VideoCacheThread::setCurrentFramePosition(int current_frame_number) + void VideoCacheThread::setCurrentFramePosition(long int current_frame_number) { current_display_frame = current_frame_number; } // Seek the reader to a particular frame number - void VideoCacheThread::Seek(int new_position) + void VideoCacheThread::Seek(long int new_position) { position = new_position; } diff --git a/src/Qt/VideoPlaybackThread.cpp b/src/Qt/VideoPlaybackThread.cpp index 0e6d0e55..2ab3cbf1 100644 --- a/src/Qt/VideoPlaybackThread.cpp +++ b/src/Qt/VideoPlaybackThread.cpp @@ -43,7 +43,7 @@ namespace openshot } // Get the currently playing frame number (if any) - int VideoPlaybackThread::getCurrentFramePosition() + long int VideoPlaybackThread::getCurrentFramePosition() { if (frame) return frame->number; diff --git a/src/QtPlayer.cpp b/src/QtPlayer.cpp index fa7f8b87..23e2fae0 100644 --- a/src/QtPlayer.cpp +++ b/src/QtPlayer.cpp @@ -108,7 +108,7 @@ int QtPlayer::Position() return p->video_position; } -void QtPlayer::Seek(int new_frame) +void QtPlayer::Seek(long int new_frame) { // Check for seek if (new_frame > 0) {