mirror of
https://github.com/OpenShot/libopenshot.git
synced 2026-03-02 08:53:52 -08:00
Commit Graph
Select branches
Hide Pull Requests
colorspace-10-bit
comfy-ui
dependabot/github_actions/actions/checkout-4
dependabot/github_actions/codecov/codecov-action-4.5.0
dependabot/github_actions/eps1lon/actions-label-merge-conflict-3.0.2
dependabot/github_actions/fsfe/reuse-action-4.0.0
develop
master
qt6-support
#10
#100
#1002
#1003
#1004
#1005
#1006
#1008
#1009
#101
#1010
#1011
#1012
#1013
#1014
#1015
#1016
#1018
#1018
#102
#1021
#1021
#1023
#1023
#1024
#1025
#1026
#1027
#1027
#1029
#1029
#1032
#1034
#1035
#1036
#1037
#1038
#104
#105
#105
#106
#107
#108
#109
#110
#111
#112
#113
#117
#117
#118
#119
#120
#123
#124
#125
#126
#127
#127
#128
#128
#131
#132
#133
#134
#135
#136
#136
#137
#138
#141
#141
#143
#145
#148
#149
#149
#150
#150
#152
#157
#158
#159
#160
#161
#163
#165
#166
#167
#167
#169
#170
#171
#172
#177
#178
#179
#180
#181
#182
#183
#184
#185
#186
#187
#188
#189
#19
#191
#192
#193
#194
#196
#197
#198
#199
#205
#206
#207
#208
#209
#21
#210
#211
#212
#213
#214
#215
#216
#217
#219
#220
#222
#223
#224
#226
#227
#228
#229
#230
#231
#232
#233
#234
#236
#237
#240
#241
#243
#244
#245
#246
#247
#249
#250
#251
#252
#253
#254
#255
#256
#257
#258
#259
#260
#262
#263
#264
#265
#266
#267
#268
#269
#270
#273
#276
#277
#278
#28
#28
#280
#281
#282
#283
#284
#285
#286
#287
#288
#289
#29
#29
#290
#293
#294
#295
#296
#297
#298
#30
#300
#301
#302
#303
#305
#306
#307
#308
#309
#31
#310
#311
#312
#313
#314
#315
#316
#317
#318
#32
#32
#321
#325
#326
#328
#329
#330
#331
#333
#334
#335
#336
#337
#338
#339
#340
#341
#343
#344
#345
#345
#346
#348
#349
#350
#351
#352
#354
#355
#356
#357
#358
#360
#361
#364
#365
#366
#367
#368
#371
#374
#375
#376
#377
#379
#380
#381
#383
#386
#387
#388
#389
#390
#391
#392
#393
#394
#395
#396
#397
#398
#400
#401
#402
#405
#406
#407
#408
#409
#410
#411
#412
#414
#415
#416
#418
#421
#422
#423
#424
#425
#426
#427
#428
#429
#429
#430
#431
#434
#435
#437
#439
#440
#442
#443
#445
#446
#446
#448
#449
#45
#450
#451
#452
#453
#454
#455
#457
#458
#459
#46
#46
#460
#461
#462
#463
#466
#467
#468
#469
#47
#470
#472
#473
#475
#476
#478
#48
#480
#481
#482
#483
#484
#485
#486
#491
#493
#493
#495
#496
#497
#498
#499
#500
#501
#502
#503
#504
#505
#507
#510
#512
#513
#515
#516
#517
#519
#520
#521
#522
#525
#526
#527
#53
#53
#530
#533
#534
#535
#539
#54
#54
#540
#542
#545
#546
#548
#549
#550
#551
#555
#556
#557
#558
#559
#56
#56
#563
#565
#567
#568
#57
#57
#571
#574
#577
#577
#578
#579
#580
#582
#583
#584
#585
#586
#587
#588
#59
#590
#591
#592
#593
#594
#595
#596
#597
#598
#599
#600
#601
#602
#603
#604
#606
#607
#608
#609
#610
#611
#613
#614
#615
#616
#618
#619
#620
#621
#622
#623
#624
#625
#626
#627
#628
#629
#630
#632
#635
#636
#637
#638
#639
#640
#641
#642
#643
#645
#646
#647
#649
#650
#652
#653
#654
#656
#657
#658
#659
#660
#661
#662
#663
#664
#665
#666
#667
#668
#67
#670
#670
#671
#672
#673
#674
#675
#679
#680
#681
#682
#683
#684
#685
#687
#688
#689
#691
#693
#694
#695
#696
#697
#698
#70
#700
#701
#703
#704
#705
#709
#711
#712
#713
#714
#716
#717
#718
#719
#720
#721
#722
#724
#725
#726
#727
#728
#729
#730
#731
#732
#733
#734
#736
#738
#739
#74
#74
#740
#741
#742
#743
#744
#745
#746
#747
#750
#751
#752
#753
#755
#756
#757
#758
#760
#762
#763
#764
#766
#767
#768
#769
#77
#770
#771
#772
#773
#774
#775
#776
#777
#778
#779
#780
#781
#782
#783
#784
#790
#791
#792
#793
#795
#796
#797
#797
#799
#800
#801
#802
#803
#804
#806
#807
#808
#809
#810
#811
#812
#813
#814
#815
#816
#817
#819
#82
#820
#821
#822
#823
#825
#827
#828
#829
#831
#833
#834
#836
#837
#838
#839
#84
#840
#841
#842
#843
#844
#845
#846
#847
#848
#849
#85
#85
#850
#851
#852
#855
#856
#857
#858
#859
#86
#860
#861
#862
#863
#864
#865
#866
#867
#868
#869
#872
#874
#875
#876
#877
#878
#879
#88
#88
#881
#882
#883
#884
#885
#886
#887
#888
#889
#89
#891
#892
#894
#895
#896
#897
#898
#899
#90
#900
#901
#904
#905
#908
#909
#91
#910
#915
#916
#917
#92
#921
#923
#924
#926
#927
#928
#929
#93
#930
#931
#932
#935
#937
#938
#939
#94
#942
#949
#95
#950
#954
#957
#957
#958
#959
#96
#960
#961
#962
#963
#965
#965
#966
#967
#967
#968
#969
#969
#972
#973
#974
#975
#98
#98
#981
#981
#982
#983
#984
#985
#986
#986
#987
#988
#989
#99
#991
#992
#993
#995
#996
#997
#997
#998
#998
#999
#999
v0.0.10
v0.0.8
v0.0.9
v0.1.0
v0.1.1
v0.1.2
v0.1.3
v0.1.4
v0.1.5
v0.1.6
v0.1.7
v0.1.8
v0.1.9
v0.2.0
v0.2.1
v0.2.2
v0.2.3
v0.2.4
v0.2.5
v0.2.6
v0.2.7
v0.3.0
v0.3.1
v0.3.2
v0.3.3
v0.4.0
v0.5.0
Select branches
Hide Pull Requests
colorspace-10-bit
comfy-ui
dependabot/github_actions/actions/checkout-4
dependabot/github_actions/codecov/codecov-action-4.5.0
dependabot/github_actions/eps1lon/actions-label-merge-conflict-3.0.2
dependabot/github_actions/fsfe/reuse-action-4.0.0
develop
master
qt6-support
#10
#100
#1002
#1003
#1004
#1005
#1006
#1008
#1009
#101
#1010
#1011
#1012
#1013
#1014
#1015
#1016
#1018
#1018
#102
#1021
#1021
#1023
#1023
#1024
#1025
#1026
#1027
#1027
#1029
#1029
#1032
#1034
#1035
#1036
#1037
#1038
#104
#105
#105
#106
#107
#108
#109
#110
#111
#112
#113
#117
#117
#118
#119
#120
#123
#124
#125
#126
#127
#127
#128
#128
#131
#132
#133
#134
#135
#136
#136
#137
#138
#141
#141
#143
#145
#148
#149
#149
#150
#150
#152
#157
#158
#159
#160
#161
#163
#165
#166
#167
#167
#169
#170
#171
#172
#177
#178
#179
#180
#181
#182
#183
#184
#185
#186
#187
#188
#189
#19
#191
#192
#193
#194
#196
#197
#198
#199
#205
#206
#207
#208
#209
#21
#210
#211
#212
#213
#214
#215
#216
#217
#219
#220
#222
#223
#224
#226
#227
#228
#229
#230
#231
#232
#233
#234
#236
#237
#240
#241
#243
#244
#245
#246
#247
#249
#250
#251
#252
#253
#254
#255
#256
#257
#258
#259
#260
#262
#263
#264
#265
#266
#267
#268
#269
#270
#273
#276
#277
#278
#28
#28
#280
#281
#282
#283
#284
#285
#286
#287
#288
#289
#29
#29
#290
#293
#294
#295
#296
#297
#298
#30
#300
#301
#302
#303
#305
#306
#307
#308
#309
#31
#310
#311
#312
#313
#314
#315
#316
#317
#318
#32
#32
#321
#325
#326
#328
#329
#330
#331
#333
#334
#335
#336
#337
#338
#339
#340
#341
#343
#344
#345
#345
#346
#348
#349
#350
#351
#352
#354
#355
#356
#357
#358
#360
#361
#364
#365
#366
#367
#368
#371
#374
#375
#376
#377
#379
#380
#381
#383
#386
#387
#388
#389
#390
#391
#392
#393
#394
#395
#396
#397
#398
#400
#401
#402
#405
#406
#407
#408
#409
#410
#411
#412
#414
#415
#416
#418
#421
#422
#423
#424
#425
#426
#427
#428
#429
#429
#430
#431
#434
#435
#437
#439
#440
#442
#443
#445
#446
#446
#448
#449
#45
#450
#451
#452
#453
#454
#455
#457
#458
#459
#46
#46
#460
#461
#462
#463
#466
#467
#468
#469
#47
#470
#472
#473
#475
#476
#478
#48
#480
#481
#482
#483
#484
#485
#486
#491
#493
#493
#495
#496
#497
#498
#499
#500
#501
#502
#503
#504
#505
#507
#510
#512
#513
#515
#516
#517
#519
#520
#521
#522
#525
#526
#527
#53
#53
#530
#533
#534
#535
#539
#54
#54
#540
#542
#545
#546
#548
#549
#550
#551
#555
#556
#557
#558
#559
#56
#56
#563
#565
#567
#568
#57
#57
#571
#574
#577
#577
#578
#579
#580
#582
#583
#584
#585
#586
#587
#588
#59
#590
#591
#592
#593
#594
#595
#596
#597
#598
#599
#600
#601
#602
#603
#604
#606
#607
#608
#609
#610
#611
#613
#614
#615
#616
#618
#619
#620
#621
#622
#623
#624
#625
#626
#627
#628
#629
#630
#632
#635
#636
#637
#638
#639
#640
#641
#642
#643
#645
#646
#647
#649
#650
#652
#653
#654
#656
#657
#658
#659
#660
#661
#662
#663
#664
#665
#666
#667
#668
#67
#670
#670
#671
#672
#673
#674
#675
#679
#680
#681
#682
#683
#684
#685
#687
#688
#689
#691
#693
#694
#695
#696
#697
#698
#70
#700
#701
#703
#704
#705
#709
#711
#712
#713
#714
#716
#717
#718
#719
#720
#721
#722
#724
#725
#726
#727
#728
#729
#730
#731
#732
#733
#734
#736
#738
#739
#74
#74
#740
#741
#742
#743
#744
#745
#746
#747
#750
#751
#752
#753
#755
#756
#757
#758
#760
#762
#763
#764
#766
#767
#768
#769
#77
#770
#771
#772
#773
#774
#775
#776
#777
#778
#779
#780
#781
#782
#783
#784
#790
#791
#792
#793
#795
#796
#797
#797
#799
#800
#801
#802
#803
#804
#806
#807
#808
#809
#810
#811
#812
#813
#814
#815
#816
#817
#819
#82
#820
#821
#822
#823
#825
#827
#828
#829
#831
#833
#834
#836
#837
#838
#839
#84
#840
#841
#842
#843
#844
#845
#846
#847
#848
#849
#85
#85
#850
#851
#852
#855
#856
#857
#858
#859
#86
#860
#861
#862
#863
#864
#865
#866
#867
#868
#869
#872
#874
#875
#876
#877
#878
#879
#88
#88
#881
#882
#883
#884
#885
#886
#887
#888
#889
#89
#891
#892
#894
#895
#896
#897
#898
#899
#90
#900
#901
#904
#905
#908
#909
#91
#910
#915
#916
#917
#92
#921
#923
#924
#926
#927
#928
#929
#93
#930
#931
#932
#935
#937
#938
#939
#94
#942
#949
#95
#950
#954
#957
#957
#958
#959
#96
#960
#961
#962
#963
#965
#965
#966
#967
#967
#968
#969
#969
#972
#973
#974
#975
#98
#98
#981
#981
#982
#983
#984
#985
#986
#986
#987
#988
#989
#99
#991
#992
#993
#995
#996
#997
#997
#998
#998
#999
#999
v0.0.10
v0.0.8
v0.0.9
v0.1.0
v0.1.1
v0.1.2
v0.1.3
v0.1.4
v0.1.5
v0.1.6
v0.1.7
v0.1.8
v0.1.9
v0.2.0
v0.2.1
v0.2.2
v0.2.3
v0.2.4
v0.2.5
v0.2.6
v0.2.7
v0.3.0
v0.3.1
v0.3.2
v0.3.3
v0.4.0
v0.5.0
-
3a50b9afc2
Paused and playback seek behavior now follows one rule: keep cache on in-range seeks, rebuild only on out-of-range seeks.
comfy-ui
Jonathan Thomas
2026-03-01 22:49:31 -06:00 -
e9f2c4204c
Optimizations to Mask, Brightness, and Saturation effects: - Effect_Mask 7.38% faster - Effect_Brightness 3.77% faster - Effect_Saturation 22.10% faster - Overall 3.34% faster
Jonathan Thomas
2026-03-01 22:08:59 -06:00 -
438c74f340
Adding new args to openshot-benchmark, so each test can be run separately - useful for quick optimization validation.
Jonathan Thomas
2026-03-01 21:25:27 -06:00 -
83d4d1f8ea
Improving cache invalidation during playback, to add an epoch counter to Timeline, so we know when an update took place outside of timeline (i.e. in our video cache thread) and can rescan our entire cache range for potentially missing frames after cache invalidation).
Jonathan Thomas
2026-03-01 17:45:02 -06:00 -
90d0710d78
Fixing some regressions in performance of Mask effect, and flickering cached frames during updates (i.e. property slider updates)
Jonathan Thomas
2026-03-01 16:56:42 -06:00 -
4387f8b394
- Timeline composition no longer mutates cached clip frames (fixes trails/ghosting). - Clip updates via ApplyJsonDiff now also clear clip cache (not just timeline/reader ranges). - Added regressions for cache invalidation + no cached-frame mutation; kept paused preroll/cache-bar behavior intact.
Jonathan Thomas
2026-03-01 14:19:27 -06:00 -
c74b07a21e
Harden EffectBase mask reader access against runtime failures
Jonathan Thomas
2026-02-27 12:33:14 -06:00 -
c1d4bf5bd8
Fix Profiles test temp-path helper after develop merge
Jonathan Thomas
2026-02-27 12:29:48 -06:00 -
b39cb385e8
Merge branch 'develop' into comfy-ui
Jonathan Thomas
2026-02-27 12:19:46 -06:00 -
ff22d416da
- Playback updates no longer act like seeks. - Scrubbing inside cached area keeps cache. - Scrubbing outside cached area clears cache immediately. - Preroll now starts on seek commit (release), not during drag. - Temporary debug logs were removed. - Tests were added for these behaviors.
Jonathan Thomas
2026-02-26 13:22:06 -06:00 -
1ee89c10f6
We fixed the warning by converting deprecated yuvj* formats to yuv* and explicitly setting color range in FFmpegReader
Jonathan Thomas
2026-02-25 13:19:26 -06:00 -
00f82c239f
More improvements to EffectBase support of masks (allowing all effects to use animated masks better).
Jonathan Thomas
2026-02-24 23:41:32 -06:00 -
666ffbe7f4
Fixing bug with some short videos returning cached frames due to EOF logic issue. I found this when testing short video mask files. Also, simplifying the mask caching to allow our readers to cache themselves.
Jonathan Thomas
2026-02-24 23:05:37 -06:00 -
9b042a3dc6
Merge pull request #1038 from OpenShot/fix-recursive-paint
develop
Jonathan Thomas
2026-02-24 22:31:55 -06:00 -
1a44a6582c
Fixing mac unit test failures due to filesystem dependency again,ughh.
Jonathan Thomas
2026-02-24 13:05:39 -06:00 -
89350a0419
Setting has_static_image correctly when FFmpegReader opens image formats and a video_length == 1, so we have consistent behavior in OpenShot regardless of QtImageReader or FFmpegReader, when opening images.
Jonathan Thomas
2026-02-24 12:06:42 -06:00 -
f83802bdc0
Removing some code that re-inits readers and re-opens readers after SetJsonValue is called. I don't think this is needed anymore, but let's mark this as Experimental and risky commit though.
Jonathan Thomas
2026-02-23 22:51:32 -06:00 -
9d3a3f18e5
Protecting Mask GetFrame from failure opening reader (Experimental for windows crash we are debugging)
Jonathan Thomas
2026-02-23 22:40:44 -06:00 -
fbd07d78d3
Integrating Mask effect with invert mask property and unit tests. This allows the Mask effect to invert the mask easily.
Jonathan Thomas
2026-02-23 21:09:27 -06:00 -
18b08fe7c6
Fixing unit test paths for mac builders, crashing due to filesystem import (I think)
Jonathan Thomas
2026-02-23 17:41:18 -06:00 -
7c65748187
Fixing unit test paths for windows builders
Jonathan Thomas
2026-02-23 17:25:23 -06:00 -
7efc48006a
Modify all throw InvalidFile(...) callsites: each now has a distinct message string, and adding unit tests to verify this.
Jonathan Thomas
2026-02-23 16:55:49 -06:00 -
1ad401c66d
- Added a new common mask_reader feature at EffectBase, so all video effects can be mask-limited automatically (audio effects ignore it). - Added optional Mask Mode overrides for Blur, Saturation, Brightness, Hue, Pixelate, and Sharpen (Limit to Mask, Vary Strength). - Kept unified mask property naming (mask_reader) with legacy JSON compatibility where needed. - Added/updated unit tests for base mask behavior, per-effect mode behavior, and JSON round-trips. - Fixed profile tests to write generated files into the build/test directory instead of the source examples/ folder.
Jonathan Thomas
2026-02-23 00:00:33 -06:00 -
9d38ee10b5
Merge pull request #1037 from OpenShot/pts-offset-fix
Jonathan Thomas
2026-02-15 23:49:06 -06:00 -
b7c37b84e4
- Fix FFmpegReader first-frame black regression by anchoring PTS offset to video start (and correcting video offset to use packet PTS), so AAC preroll/skip-samples no longer shifts frame 1. - Add examples/test_aac_preroll.mp4 fixture (small, deterministic AAC-preroll sample) for reproducing and testing the regression.
Jonathan Thomas
2026-02-15 15:22:11 -06:00 -
6c1f687afc
Merge branch 'develop' into qt6-support
qt6-support
Jonathan Thomas
2026-02-13 23:07:53 -06:00 -
22c808c2bb
Merge pull request #1035 from OpenShot/caching-protections
Jonathan Thomas
2026-02-13 20:25:15 -06:00 -
a7e9ba1d55
- src/FFmpegReader.cpp - Disable audio when decoder sample format is invalid (AV_SAMPLE_FMT_NONE). - Only synthesize channel layout when reported channels are actually valid (> 0). - src/AudioReaderSource.cpp - Added progress/validity guards in getNextAudioBlock() to prevent infinite loops on corrupt/empty audio frames.
Jonathan Thomas
2026-02-13 12:13:44 -06:00 -
429826be36
Fixing a few nitpicks in caching function to use local variables when available (instead of the atomic ones)
Jonathan Thomas
2026-02-13 11:48:33 -06:00 -
c43092eaa5
Merge branch 'develop' into caching-protections
Jonathan Thomas
2026-02-13 11:29:32 -06:00 -
8c4db9ac0b
Merge pull request #1036 from OpenShot/timeline-playback-length
Jonathan Thomas
2026-02-13 11:01:34 -06:00 -
fb41a3c479
• - Fix VideoCacheThread::isReady() so preroll readiness is clamped by frames actually available to the timeline boundary (end/start), preventing playback from stalling in PLAY near the end. - Add regression coverage in tests/VideoCacheThread.cpp (isReady: clamps preroll requirement at timeline boundaries) for forward-near-end and backward-near-start cases.
Jonathan Thomas
2026-02-12 23:41:51 -06:00 -
d70e80eac4
Harden playback/cache path for malformed media and concurrent timeline updates
Jonathan Thomas
2026-02-11 20:11:47 -06:00 -
57c1fb2ec3
Merge pull request #1034 from OpenShot/sparse-vfr-support
Jonathan Thomas
2026-02-10 12:02:07 -06:00 -
149456d13f
Merge pull request #1032 from OpenShot/cache-before-playhead
Jonathan Thomas
2026-02-10 11:51:21 -06:00 -
2e4e12d2c7
Setting a minimum # of frames (floor) in Timeline, FFmpegReader, and FrameMapper - so low cpu/thread systems don't end up with a tiny # that makes passing our unit tests difficult.
Jonathan Thomas
2026-02-09 22:10:32 -06:00 -
6f63254c08
More changes to seek logic to pass unit tests on Windows.
Jonathan Thomas
2026-02-09 21:35:06 -06:00 -
d6b54091d7
Adding minimum cache size floor, for systems with very few cores. This is required to fix a failure running unit tests on our GitLab runners.
Jonathan Thomas
2026-02-09 21:14:45 -06:00 -
367d21affe
Fix FFmpeg seek fallback to avoid overshoot frame mismatches. Harden FFmpegReader::CheckSeek() when seek retries are exhausted.
Jonathan Thomas
2026-02-09 20:51:24 -06:00 -
01e60463db
FFmpegReader: fix sparse-VFR stall and stabilize missing-frame image fallback
Jonathan Thomas
2026-02-07 22:40:43 -06:00 -
f3c4504662
Improve benchmark regression caused by aggressive memory trimming, and caches that were too small. A new debounce strategy for memory trimming (1 time max per 30 seconds).
Jonathan Thomas
2026-02-06 23:11:00 -06:00 -
de012ac6c8
Improve seek retry fallback and clean up hw decode logging - add adaptive seek fallback and switch fprintf to ZmqLogger - improves seeking on certain files by up to 30% (faster) - avoids situations where seeking too far would sometimes freeze on certain videos
Jonathan Thomas
2026-02-06 16:46:40 -06:00 -
43f9ed89ae
VideoCacheThread: add directional preroll - start cache rebuilds with a preroll offset (settings-based) - tighten isReady to require frames ahead/behind playhead add unit tests for preroll clamping and readiness
Jonathan Thomas
2026-02-05 12:39:06 -06:00 -
c7b36d9215
Slight refactor to our Python swig bindings to better support Arm64 pointer address space (required for Android)
Jonathan Thomas
2026-02-03 11:20:12 -06:00 -
44f92a0387
Improving swig to wrap pointers as PyLong_AsVoidPtr - to avoid Android memory addresses overflowing as an int.
Jonathan Thomas
2026-02-02 21:14:01 -06:00 -
23b4e748ea
Improving swig bindings for Python, Java, and Ruby for access direct pixel byte array:
Jonathan Thomas
2025-12-22 13:46:41 -06:00 -
a26ed32424
Adding missing packages to our linux install instructions doc: python3-zmq python3-pyqt5.qtwebengine
Jonathan Thomas
2025-12-22 13:44:54 -06:00 -
bfca7ee8ad
Adding Qt6 detection and compatibility, without breaking Qt5.
-DUSE_QT6=AUTO|ON|OFF(default:AUTO; prefers Qt6 when available and CMake ≥3.16,ONforces Qt6,OFFforces Qt5). Also, a few version specific changes for API changes on Qt6, but it appears to work well.Jonathan Thomas
2025-12-17 22:59:25 -06:00 -
47b308122f
Merge pull request #1026 from OpenShot/install-prefix-python
Jonathan Thomas
2025-12-16 23:23:44 -06:00 -
3f60f601ca
Take 2: Trying again to fix the python fallback directory detection for Launchpad build servers
Jonathan Thomas
2025-12-16 23:23:07 -06:00 -
faa6827f1c
Merge pull request #1025 from OpenShot/install-prefix-python
Jonathan Thomas
2025-12-16 21:53:04 -06:00 -
353e6ae4f1
Changing python install detected folder, to be relative folder. This is breaking on some build servers, due to returning an absolute path that is installed outside of the install prefix.
Jonathan Thomas
2025-12-16 21:05:23 -06:00 -
ff45df1e99
Merge pull request #1024 from OpenShot/missing-sstream-includes
Jonathan Thomas
2025-12-16 19:02:22 -06:00 -
16f791a55a
Adding missing <sstream> includes for older compilers, and because it should be included anyway
Jonathan Thomas
2025-12-16 18:23:57 -06:00 -
13e1d9d0b3
Merge pull request #1016 from OpenShot/release-20250612
Jonathan Thomas
2025-12-16 02:03:54 -06:00 -
2a82bed607
Adding upscaling for crop effect + resize property - so cropping into higher resolution content does not become blurry.
v0.5.0
Jonathan Thomas
2025-12-15 23:34:48 -06:00 -
bd59e6bb37
Fix mixing licensing headers
Jonathan Thomas
2025-12-15 21:13:34 -06:00 -
7fdd145dc2
Adding new memory trimming to more forcefully return memory to the OS after major memory clearing events (i.e. clearing all cache, closing readers, or large amounts of cache cleared). Also, refactoring default cache sizes in Timeline, FrameMapper, and FFmpegReader to better support high frame rate and high resolution videos (i.e. 4k 60 fps) so we don't immediately run out of memory.
Jonathan Thomas
2025-12-14 23:53:36 -06:00 -
1f06f03e9c
Adding unit tests for image magic durations
Jonathan Thomas
2025-12-10 18:38:07 -06:00 -
94fab00048
Updating video_length and duration calculations to be consistent on image readers also (QtImageReader, ImageReader)
Jonathan Thomas
2025-12-08 18:33:23 -06:00 -
eea55982fd
FFmpegReader: add duration strategy modes and unify duration/frame calculations. This is a potentially breaking change, where we ensure all durations and video_length calculations coming from FFmpegReader are now fully consistent - even if we must slightly adjust a duration from the video or audio stream. This keeps the 2 attributes identical in meaning (video_length X FPS == duration, no exceptions). Unknown durations are no longer -1 video_length but 0, and 0 duration.
Jonathan Thomas
2025-12-08 17:07:21 -06:00 -
af9a4893ed
Fixing regression inside AudioWaveformer so it uses a proper detached reader, and no longer mutates the Clip's reader (preventing a bug which caused our video to disappear when waveforms were used on the clip)
Jonathan Thomas
2025-11-24 18:33:25 -06:00 -
d4647b5525
Refactoring the AudioWaveformer again, this time to de-couple it from the actual clip object passed to it, and to no longer iterate over the potential longer time keyframes using GetFrame alone. Now, we only decode audio-streams, and only get the original samples (reduced sample rate drastically), and finally we apply keyframes (volume and time) to modify our original samples. This is a HUGE speed-up boost for waveform generation.
Jonathan Thomas
2025-11-23 14:11:53 -06:00 -
0dfc8a8a37
Updating 1D and 3D unit tests for Color Map to use a more obvious cube color map, with 1D = green and blue, and 3D = red and blue.
Jonathan Thomas
2025-11-18 18:11:37 -06:00 -
e25763d089
Adding awareness of DOMAIN_MIN and DOMAIN_MAX properties of LUT Color Map files and new unit tests to validate them
Jonathan Thomas
2025-11-18 17:36:30 -06:00 -
1c912d8fd6
Fixing clip unit tests due to regression in the initial rotation keyframe
Jonathan Thomas
2025-11-18 14:34:23 -06:00 -
2f82e7d27b
Adding support for 1D and 3D LUT Color Map files. Also added new unit tests to verify 1D and 3D LUT files.
Jonathan Thomas
2025-11-18 14:26:59 -06:00 -
355bea44d9
Fixing small regression on initial rotation keyframes from our previous commit.
Jonathan Thomas
2025-11-18 13:43:40 -06:00 -
a7dfc596ca
Fixing regression in Clip::init_reader_rotation() function, which could sometimes override scale_x and scale_y, when a rotation keyframe contained more than 1 point.
Jonathan Thomas
2025-11-13 16:18:18 -06:00 -
8d72b4b64b
Updating godot git hash
Jonathan Thomas
2025-11-13 16:17:07 -06:00 -
5596344575
Fixing AudioWaveformer::ExtractSamples to pause temporarily when a clip's reader is closed, and resume extracting when it's open again. This prevents a very common crash / bug when generating waveforms for longer audio clips and continuing to make chagnes on the timeline (which closes all clips temporarily - interrupting the waveform extracting).
Jonathan Thomas
2025-11-06 14:51:57 -06:00 -
0932af2c1e
Fixing race condition on unit test for AnalogTape (when comparing frame's getting modified)
Jonathan Thomas
2025-10-11 16:45:43 -05:00 -
7e29fc0935
Improving audio directionality, with new function: SetAudioDirection(), so we can safely flip audio buffer direction when needed (i.e. time curves, reversed time). Also adding a new SetDirectionHint function to FrameMapper class - so our Clip class can inform the FrameMapper of its direction at any given moment. Also, clear resampler when changing directions inside a Time curve (since the audio buffer will be flipped - the resampler internal cache must be cleared).
Jonathan Thomas
2025-10-11 16:29:11 -05:00 -
fd2952752d
Improving audio directionality, with new function: SetAudioDirection(), so we can safely flip audio buffer direction when needed (i.e. time curves, reversed time). Also adding a new SetDirectionHint function to FrameMapper class - so our Clip class can inform the FrameMapper of its direction at any given moment. Also, clear resampler when changing directions inside a Time curve (since the audio buffer will be flipped - the resampler internal cache must be cleared).
Jonathan Thomas
2025-10-11 13:43:15 -05:00 -
9a262882de
A few small refactors of clip unit tests
Jonathan Thomas
2025-09-30 23:09:32 -05:00 -
4cef4da9ef
Fixing a bug in Keyframe that caused the GetDelta() function to return 0.0 early - which was breaking reversed time curves (zero'ing out the first frame or two)
Jonathan Thomas
2025-09-26 18:35:29 -05:00 -
0c15c1692e
Adding new reversed time curve unit test, to verify 230,000 samples are actually reversed over the length of the clip without skipping or missing a single one.
Jonathan Thomas
2025-09-26 18:34:33 -05:00 -
c165eca5d8
Improving AudioWaveformer to be able to correctly generate waveforms for time-curved clips that have a modified duration/video_length (i.e. repeated clips, slowled down clips, etc...). Adding a new ReaderBase.h VideoLength() that can be overridden in Clip.cpp when time curves are involved.
Jonathan Thomas
2025-09-22 12:28:12 -05:00 -
01a4d9f6ef
Fixing regression/bug in video cache thread - to correctly reset cached_frame_count, and make isReady() return correctly. The result of this bug was audio starting playback sooner than video - and some general jank around video caching.
Jonathan Thomas
2025-09-15 18:20:05 -05:00 -
3723fbd99f
Fixing regression on Mac and Windows builds for Clip blend modes (color tolerances)
Jonathan Thomas
2025-09-12 23:00:22 -05:00 -
021c6ecc07
Adding unit tests to validate FFmpegReader, Clip, and Timeline frame accuracy of GIF files, plus GIF with time curves.
Jonathan Thomas
2025-09-12 22:57:26 -05:00 -
fa4f44d108
Fixing small build error on benchmark includes
Jonathan Thomas
2025-09-12 21:19:16 -05:00 -
a66727a687
Expanding Clip unit tests to include all composite blend modes available to libopenshot.
Jonathan Thomas
2025-09-12 18:06:26 -05:00 -
523ef17aa4
Adding composite/blend modes to libopenshot: -Normal -Darken -Multiply -Color Burn -Lighten -Screen -Color Dodge -Add -Overlay -Soft Light -Hard Light -Difference -Exclusion
Jonathan Thomas
2025-09-12 17:47:41 -05:00 -
b94dcac3b4
Adding Benchmark executable to assist with performance testing and comparisons with different versions of OpenShot.
Jonathan Thomas
2025-09-12 17:27:43 -05:00 -
a326f541a1
Fix bug with Wave effect that can cause colored bands to appear in certain cases, and added new wave effect unit test
Jonathan Thomas
2025-09-12 15:07:51 -05:00 -
f2a5bfb581
Fixed AnalogTape tests and an unused Clip test line
Jonathan Thomas
2025-09-12 15:04:14 -05:00 -
d77f3e5338
Improving performance on Clip class: - Replacing alpha with QPainter SetOpactity (much faster) - Fixing get_file_extension to not crash with filepaths that do no contain a "." - Removing render hints from apply_background (since no transform or text rendering), making compositing (faster in certain cases) - Optionally adding SmoothPixmapTransform based on a valid transform (faster in certain cases) - Skip Opacity for fully opaque clips - New Clip unit tests to validate new functionality
Jonathan Thomas
2025-09-12 14:54:46 -05:00 -
0570ad084b
Large timeline clean-up, speed-up, and fix concurrency bugs: - make Add/Remove Effect methods thread safe - Fix RemoveClip memory leak - Improve performance of sorting clips by position and layer, cache some common accessors, and speed up "clip intersection" logic - Don't resize audio container in loop - do it once - Large refactor of looping through clips and finding top clip - Protect ClearAllCache from empty Readers, prevent crash - Expanded unit tests to include RemoveEffect, and test many of the changes in the commit.
Jonathan Thomas
2025-09-11 23:27:41 -05:00 -
1533b6ab1f
Fixing SphericalEffect.cpp tests
Jonathan Thomas
2025-09-11 22:08:38 -05:00 -
9ca7e07b12
Adding more SphericalProjection unit tests - still a WIP
Jonathan Thomas
2025-09-11 20:31:24 -05:00 -
79846eacf8
Adding new Analog Tap effect: Vintage home video wobble, bleed, and grain.
Jonathan Thomas
2025-09-10 22:44:30 -05:00 -
a07fe18a14
Adding 5 Spherical test images (needed for unit tests)
Jonathan Thomas
2025-09-10 21:33:37 -05:00 -
a90b4d6c3e
Improving fish eye support for SphericalProjection effect (4 types of fish eyes for input and output). Fixing lots of issues with virtual camera controls (so controls don't flip axis randomly)
Jonathan Thomas
2025-09-10 17:11:41 -05:00 -
c23c0d14af
Fixing regression in SphericalProjection.cpp effect - causing a unit test to fail
Jonathan Thomas
2025-09-09 18:36:36 -05:00 -
f98da72050
Improve spherical projection effect to have better quality and separate input / output FOVs for fisheye processing.
Jonathan Thomas
2025-09-08 18:02:36 -05:00 -
f68d18419a
Improve GetMinFrame / GetMaxFrame functions for a timeline, to be inclusive on min, and exclusive on max (trying to prevent rounding errors on last frame)
Jonathan Thomas
2025-09-08 15:59:29 -05:00 -
fbef1bcf04
Protect the video and audio codec name discovery flow, to prevent crash from unknown codecs.
Jonathan Thomas
2025-09-07 15:02:26 -05:00 -
dd62f5b49e
Protecting clip GetFrame from crash due to null frame, then setting the ->number property of a null frame.
Jonathan Thomas
2025-09-05 14:48:35 -05:00 -
adff81fefc
Fixing protobuf loading bug, preventing tracker and object detection from loading correctly.
Jonathan Thomas
2025-08-12 17:46:56 -05:00