Commit Graph
92 Commits
Author SHA1 Message Date
Mike-Solar 3a3ead6fc0 app: route all FFmpeg access through the ffmpeg_bridge C API
Replace every direct FFmpeg call in the editor and the render worker
with the pure C ffmpeg_bridge API, wrapped in thin C++ adapters that
preserve the original interfaces:

- avframeptr.h: olive::AVFrame adapter around FBFrame handles
- ffmpegutils: format conversion helpers on FB_* constants; the int
  overload is renamed GetCompatibleBridgePixelFormat to avoid a silent
  overload-resolution trap with the PixelFormat enum
- ffmpegdecoder/ffmpegencoder: rewritten as handle-based adapters over
  FBDecoder/FBProbe/FBEncoder/FBScaler/FBResampler
- audioprocessor: FBAudioGraph push/pull adapter
- pluginrenderer/OliveClip: sws/pixdesc usage converted to FBScaler and
  fb_pix_fmt_* queries
- AudioParams/channel layouts are plain uint64_t masks everywhere

Build integration: the root project no longer links FFMPEG directly;
only ffmpeg_bridge does. Binaries resolve the bridge library at runtime
via @loader_path inside the macOS app bundle (copied there post-build)
and via $ORIGIN/../ffmpeg_bridge/bin on Linux; on Windows the DLL is
installed next to the executables, so packages on all three platforms
ship the bridge library.

ffmpeg_bridge gains the extra API the adapters need:
fb_frame_make_writable, fb_decoder_get_format_duration,
fb_resampler_convert_frame, FB_PIX_FMT_YUV440P, SRT validation in
fb_probe_read_subtitle_stream, packed/planar fixes in
fb_encoder_write_audio, and a component-size fix in
fb_pix_fmt_component_size.
2026-07-15 23:00:06 +08:00
孙羽 116a4b8368 fix windows compile 2026-05-27 21:34:09 +08:00
Mike-Solar bfb1b2fce4 update copyright back 2026-01-16 21:22:05 +08:00
Mike-Solar b8669f6a11 Change project name; 2026-01-05 16:22:26 +08:00
Mike Solar 22fd521951 Merge branch 'refs/heads/dev' into plugin
# Conflicts:
#	.gitmodules
#	CMakeLists.txt
#	ext/core
2025-12-13 21:45:46 +08:00
Mike-Solar 2ea53667c0 Refactor FFmpeg decoder for improved readability and efficiency
Simplify the frame reading process and metadata extraction in `ffmpegdecoder.cpp` by reducing redundant code and improving variable initialization. Add a helper function in `ffmpegdecoder.h` to map FFmpeg field orders to Olive interlacing types, enhancing code clarity. Adjust the condition for interleaved write in `ffmpegencoder.cpp` for better handling.
2025-11-10 21:06:35 +08:00
Mike Solar 6fdfd03ffd update: update copyright 2025-08-05 17:12:49 +08:00
Mike Solar 74f73ab3be change: change code style to Linux style except indent. 2025-08-03 03:09:40 +08:00
Mike Solar c04fceef9b 试图解决编译错误 2025-06-18 20:42:45 +08:00
Mike Solar 5f9508434f 试图解决编译错误 2025-06-18 08:54:06 +08:00
itsmattkc fa88db42e4 Merge pull request #1943 from jazztickets/av1
AV1 export support
2023-02-08 13:03:51 -08:00
itsmattkc c322bb6463 exportdialog: fixed UI issue that allowed "sidecar" files on direct subtitle exports 2023-02-06 17:27:27 -08:00
jazztickets 9959f15bc4 Merge branch 'master' into av1 2023-01-30 14:04:15 -07:00
itsmattkc c1c6893713 various: moved more to core lib 2023-01-19 16:01:31 -08:00
itsmattkc dd9c52ab59 start moving core frameworks to external libraries 2023-01-19 09:51:47 -08:00
jazztickets d54465b16a Merge branch 'olive-editor:master' into av1 2022-11-25 11:18:49 -07:00
itsmattkc ca47792dc7 nodes: clamp footage retrieval times for clips
Fixes #2070
2022-11-01 12:44:01 -07:00
itsmattkc e94580c369 ffmpegencoder: split sample buffer when writing audio
Avoids integer overflow in FFmpeg

Fixes #2072
2022-10-29 12:07:55 -07:00
itsmattkc 972ec1e340 ffmpegencoder: catch error on sample array alloc 2022-10-29 11:36:09 -07:00
jazztickets b901762df9 Merge branch 'olive-editor:master' into av1 2022-09-07 17:26:09 -06:00
itsmattkc 409f24be39 exportdialog: allow restoring parameters 2022-08-10 11:49:21 -07:00
itsmattkc 1ac205413c footage: allow overriding YCbCr range
Fixes #1354
2022-08-08 12:49:50 -07:00
itsmattkc 73fa930f02 ffmpegencoder: use avfilter instead of swscale for pixel format conversions 2022-08-07 14:00:12 -07:00
itsmattkc 91eaa759b7 ffmpegencoder: various improvements 2022-07-27 13:39:27 -07:00
Thomas Wilshaw fb34a4b799 Reset transfer tag 2022-07-27 14:17:06 +01:00
Thomas Wilshaw 9fa1ce00e5 Add basic nclc tag support
Sets nclc tags based on the selected output color space.

Also adds a Rec.709 OETF to the config
2022-07-26 20:19:23 +01:00
itsmattkc 187568324a render: ensure correct yuv range handling 2022-07-20 23:16:08 -07:00
itsmattkc 5ea97f7a64 render: remove alpha request option 2022-07-20 23:14:16 -07:00
Alan Witkowski 307c393996 fallback to default av1 encoder if libsvtav1 isn't found 2022-05-30 16:46:13 -06:00
Alan Witkowski 6dbe01f415 preliminary AV1 support 2022-05-30 13:45:25 -06:00
itsmattkc c75ee6014c ffmpeg: bypass ass encoding for srt
Fixes #1927
2022-05-14 08:56:06 -07:00
itsmattkc 8e642c82f8 Merge pull request #1914 from luzpaz/typos
Fix misc. source comment typos
2022-05-13 08:23:18 -07:00
itsmattkc 4b366a9b73 update copyright year to 2022 2022-05-10 10:38:56 -07:00
itsmattkc bb0fedabba simplified and optimized samplebuffer 2022-05-09 14:55:51 -07:00
itsmattkc 591d02bdd6 audiomanager: fix crash and return error text if applicable 2022-05-05 11:47:53 -07:00
luz paz 19dc803020 Fix misc. source comment typos 2022-05-04 19:53:53 -04:00
itsmattkc b290c4d007 audio: extended support for planar/packed formats 2022-05-03 13:41:27 -07:00
itsmattkc ef515579df completed audio recording implementation 2022-05-02 17:05:11 -07:00
itsmattkc 9101f5dc49 implemented core audio recording support 2022-05-02 14:00:03 -07:00
itsmattkc 03f0ec9f64 ffmpeg: updated for 5.0 2022-02-17 14:53:12 -08:00
Quackdocanditsmattkc 249006c685 Cineform support (#1853)
* Cineform Support

Add default cineform support

* Revert "Cineform Support"

This reverts commit f810358b7997ea2d996a3dbbae21252c9f37e7e9.

* Cineform Support

Add default cineform support

* Do not expose DNxHD yet

* ExportDialog: Add CineformSection

Co-authored-by: itsmattkc <34096995+itsmattkc@users.noreply.github.com>
2022-02-02 09:58:13 -08:00
itsmattkc f5eaf9c6aa ffmpeg: use hex for encoder error 2021-11-17 12:30:19 -08:00
itsmattkc 222c62fa80 ffmpeg: find x264 specifically 2021-10-24 13:29:50 -07:00
Cobalt Space 8a91932889 use encoder, not decoder, and add to mpeg4 2021-10-22 15:35:03 -07:00
Cobalt Space b9766bf585 add H.264 RGB export using libx264rgb 2021-10-08 19:38:02 -07:00
itsmattkc e4bf8a92f3 ffmpegencoder: set avg_frame_rate 2021-08-08 12:14:11 -07:00
itsmattkc 5c5f6bd0c3 ffmpegencoder: set gop size 2021-08-08 11:08:16 -07:00
itsmattkc a0bd9b5d8c ffmpegencoder: rescale audio frames just in case 2021-08-08 11:07:57 -07:00
itsmattkc b5ad35bde2 ffmpegencoder: fix subtitle timestamps 2021-08-08 10:40:55 -07:00
itsmattkc 0c04bcf045 timecode: allow specific rounding routines 2021-07-08 11:39:29 -07:00