Commit Graph

1417 Commits

Author SHA1 Message Date
Chris Kirmse
4806f2ff75 fix incorrect buffer size being passed to avcodec_fill_audio_frame
- most of the time the fixed number being sent in was large enough,
  but not always
- also added logging if avcodec_fill_audio_frame fails
2019-12-18 18:27:04 -08:00
Frank Dana
271c3908d2 Merge pull request #388 from ferdnyc/travis-fail-ffmpeg4
Travis: allow FFmpeg4 build failures
2019-12-15 13:38:36 -05:00
FeRD (Frank Dana)
2fa51a6901 allow_failures for FFmpeg4 build 2019-12-15 13:29:04 -05:00
Frank Dana
99565bb342 Move feature summary to root CMakeLists (#383) 2019-12-07 14:53:54 -05:00
Jonathan Thomas
06e6de5c99 Merge pull request #381 from ferdnyc/swig-python
Add repr to openshot.Version
2019-12-06 17:14:56 -06:00
Jonathan Thomas
0347ad2073 Merge pull request #374 from musteresel/new-keyframe-implementation
New Keyframe implementation
2019-12-06 17:10:11 -06:00
Daniel Jour
89479bb01a Keyframe tests: Add test about large segment, including performance
This new test makes sure that a large segment is handled correctly and
also with reasonable performance.  The timeout of 10ms is still
relatively slow (on a mid-class laptop it takes 0.001ms currently) but
the test shouldn't fail when e.g. the build machine is under (mild to
heavy) load.
2019-12-06 01:35:31 +01:00
Daniel Jour
c940c1f42b Keyframe: Cleanup duplicate binary search code
GetRepeatFraction uses two binary searches; reuse that code!
2019-12-06 01:21:25 +01:00
Daniel Jour
1fbdc521ca Keyframe::GetRepeatFraction(): Binary search, skipping when constant
The old implementation did a linear scan over the values.  This was
slow with slowly changing keyframes.  This new implementation skips
over constant (when rounded) segments and performs binary search
in (possibly long) interpolated segments to find the X coordinates
where a change occurs quickly.
2019-12-06 01:04:47 +01:00
Daniel Jour
f00edbad7e Keyframe interpolation: In own function; only for Y coordinate 2019-12-06 01:03:56 +01:00
FeRD (Frank Dana)
4a5eb20202 Add __repr__ to openshot.Version 2019-12-03 21:30:22 -05:00
Daniel Jour
ed0b081803 Keyframe::IsIncreasing(): Search over points, not values
Searching over the keyframe points is considerably faster than
calculating interpolating values and searching over them.
2019-12-03 17:27:28 +01:00
Daniel Jour
b40fa6922e Keyframe::GetMaxPoint() simplify loop 2019-12-03 16:58:53 +01:00
Daniel Jour
79cb8483f3 Keyframe: Move Bezier code into extra function, parameterise
Bezier interpolation code is now in a dedicated function and can be
used to either find a Y from a known X or a X from a known Y, with a
given allowed error.
2019-12-03 16:56:53 +01:00
Frank Dana
c04dc94cc8 Wrap assignment in conditional with () (#379) 2019-12-02 10:45:06 -05:00
Daniel Jour
65cb3dfde9 Keyframe::GetClosestPoint(): Use binary search 2019-11-30 11:58:51 +01:00
Daniel Jour
54e8e37d2d Keyframe::Contains(): Use binary search instead of linear search 2019-11-30 11:32:52 +01:00
Frank Dana
5e1b6fd740 Minor adjustments to Doxygen API docs (#376)
- Define `USE_IMAGEMAGICK` and `USE_BLACKMAGIC` unconditionally when
  building docs, so that the classes will be documented.
- Improve handling of `std::`-prefixed types in doxygen output.
2019-11-29 22:08:09 -05:00
chad3814
27bfbbc24a FFmpegWriter: match option 'rc_buffer_size' (#377) 2019-11-29 19:07:09 -05:00
Frank Dana
18811f40fe Merge pull request #375 from musteresel/avoid-unnecessary-image-copy
Frame.cpp: Explicitly use QImage const accessors
2019-11-27 18:13:00 -05:00
Daniel Jour
7e2846039e More traditional placement of const specifier, matching casts
As suggested in the code review:

 - More traditional placment of the const specifier, e.g. const unsigned char * instead of unsigned char const *
 - Matching casts to also cast to const unsigned char * instead of of unsigned char *

Co-Authored-By: Frank Dana <ferdnyc@gmail.com>
2019-11-27 23:57:58 +01:00
Daniel Jour
4b76c1eadc Frame.cpp: Avoid unnecessary copy of image data
As mentioned in issue #202 QImage::bits() and QImage::scanLine() make
a deep copy of the source image.  This is completely unnecessary when
read-only access to the pixel data is required.  Changing to
QImage::constBits() and QImage::constScanLine() solves this.  Both
functions were introduced in Qt 4.7.

https://doc.qt.io/qt-5/qimage.html#constBits
2019-11-26 00:56:13 +01:00
Daniel Jour
a67fb9555c Keyframe interpolation selection: Use switch instead of if
Using switch allows (some) compilers to emit a warning if a possible
enum value for the interpolation type has been forgotten.  This is not
the case now, but might guard against future errors (e.g. adding an
interpolation type)
2019-11-25 10:37:51 +01:00
Daniel Jour
b546b6a982 Keyframe: Dedicated Point comparision function instead of lambda's 2019-11-25 10:34:14 +01:00
Daniel Jour
6f71736c6a Keyframe: mark all non-modifying member functions const
Member functions that do not (need to) modify any members or internal
state of the Keyframe class should be declared as const.
2019-11-25 10:29:58 +01:00