Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
15a6130
Add ffmpeg-based in-memory stream history ring (opt-in via PA_STREAM_…
Gin890 Oct 12, 2026
2981c47
Fix several bugs in the ffmpeg stream history ring found during review.
Gin890 Oct 12, 2026
1f0356d
Replace the libx264 video fallback with ffmpeg's built-in LGPL mpeg4 …
Gin890 Oct 14, 2026
770184a
add ffmpeg library files
jw098 Oct 14, 2026
aa464a4
fix build
jw098 Oct 14, 2026
f7d2072
Fix the stream history ring save path and make it build against ffmpe…
Gin890 Oct 14, 2026
a4b2609
Clarify the stream history option description (video falls back to LG…
Gin890 Oct 14, 2026
e5635a4
fix build
jw098 Oct 14, 2026
5325a09
fix ffmpeg EAGAIN sign convention
jw098 Oct 14, 2026
a1f5092
install ffmpeg libraries for mac/linux CI
jw098 Oct 14, 2026
17f40c7
attempt to fix mac CI
jw098 Oct 14, 2026
8b0ced9
more attempts to fix Linux/mac CI.
jw098 Oct 14, 2026
86b0276
fix CI
jw098 Oct 14, 2026
85e6cba
fix CI
jw098 Oct 14, 2026
9edd736
fix CI
jw098 Oct 14, 2026
5000ea8
Fix ffmpeg C++ linkage, C4458 under /W4 /WX, and mac/linux pkg-config…
Gin890 Oct 14, 2026
55cdec2
fix build
jw098 Oct 14, 2026
e751eb5
Stop keying ffmpeg API differences on version macros; detect the actu…
Gin890 Oct 15, 2026
ec5688b
Stream history: drop the dual ffmpeg API-generation support; enforce …
Gin890 Oct 15, 2026
d474a7b
Stream history: enforce the ffmpeg 5.1 floor instead of 7.x
Gin890 Oct 15, 2026
1c874d5
Stream history: fall back to the next video encoder if it fails at ru…
Gin890 Oct 15, 2026
96f9a4f
Stream history: never free a failed hardware encoder context
Gin890 Oct 15, 2026
8fe3b91
fix build
jw098 Oct 15, 2026
4f68da9
Stream history: fix pixel format selection on ffmpeg 7.0+, don't pois…
Gin890 Oct 15, 2026
ecfef48
Stream history: use a mpeg4-compatible timebase and set the frame rate
Gin890 Oct 15, 2026
604f062
Stream history: mux from codec-parameter snapshots, not live contexts
Gin890 Oct 16, 2026
6cbfbfe
Stream history: convert H.264 from Annex B to AVCC when muxing MP4
Gin890 Oct 16, 2026
747ed24
Stream history: open the output file before avformat_write_header
Gin890 Oct 16, 2026
cebee30
Stream history: write a valid avcC record when muxing MP4
Gin890 Oct 17, 2026
8cacf0c
Stream history: keep video dts strictly increasing when muxing to file
Gin890 Oct 17, 2026
50f644b
Stream history: set the AAC encoder's sample format (FLTP) and de-int…
Gin890 Oct 17, 2026
438d81b
Stream history: initialize the audio resampler before use
Gin890 Oct 17, 2026
62d7b70
Stream history: stamp MKV packets in milliseconds and interleave the …
Gin890 Oct 17, 2026
4ddb3d6
Stream history: remember every runtime-failed video encoder, not just…
Gin890 Oct 17, 2026
fe5bae1
Stream history: drop the unused <libavutil/opt.h> include
Gin890 Oct 17, 2026
694cefd
Stream history: log the first video packet's bytes at mux time
pa-devbot Oct 17, 2026
efd0527
adjust visibility of StreamHistory Options, depending on whether ffmp…
jw098 Oct 17, 2026
3d7ab99
minor change
jw098 Oct 17, 2026
762154b
Stream history: add the Media Foundation encoder (h264_mf) to the Win…
pa-devbot Oct 17, 2026
dc747ed
add info about the ffmpeg library
jw098 Oct 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/cpp-ci-serial-programs-base.yml
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ jobs:
cd Arduino-Source
sudo apt update
sudo apt install ccache clang-tools libopencv-dev libsystemd-dev
sudo apt install libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libswresample-dev

sudo apt install ./3rdPartyBinaries/libdpp-10.1.5-linux-x64.deb

Expand All @@ -106,7 +107,7 @@ jobs:
cd Arduino-Source
# libsodium, openssl@3, opus and pkgconf are libdpp's dependencies, installed here so
# their versions can go into the libdpp cache key below.
brew install opencv@4 onnxruntime ccache libsodium openssl@3 opus pkgconf
brew install opencv@4 onnxruntime ccache libsodium openssl@3 opus pkgconf ffmpeg

brew tap-new --no-git PA/libdpp
brew trust PA/libdpp
Expand Down
4 changes: 4 additions & 0 deletions 3rdParty/ffmpeg/README.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
LGPL build taken from:
https://github.com/btbn/ffmpeg-builds/releases/tag/autobuild-2026-10-13-13-05
version: "n9.0.2-27-g7e93014c5b-20261013"
ffmpeg-n9.0.2-27-g7e93014c5b-win64-lgpl-shared-9.0.zip
36 changes: 36 additions & 0 deletions 3rdParty/ffmpeg/libavcodec/ac3_parser.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* AC-3 parser prototypes
* Copyright (c) 2003 Fabrice Bellard
* Copyright (c) 2003 Michael Niedermayer
*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

#ifndef AVCODEC_AC3_PARSER_H
#define AVCODEC_AC3_PARSER_H

#include <stddef.h>
#include <stdint.h>

/**
* Extract the bitstream ID and the frame size from AC-3 data.
*/
int av_ac3_parse_header(const uint8_t *buf, size_t size,
uint8_t *bitstream_id, uint16_t *frame_size);


#endif /* AVCODEC_AC3_PARSER_H */
37 changes: 37 additions & 0 deletions 3rdParty/ffmpeg/libavcodec/adts_parser.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

#ifndef AVCODEC_ADTS_PARSER_H
#define AVCODEC_ADTS_PARSER_H

#include <stddef.h>
#include <stdint.h>

#define AV_AAC_ADTS_HEADER_SIZE 7

/**
* Extract the number of samples and frames from AAC data.
* @param[in] buf pointer to AAC data buffer
* @param[out] samples Pointer to where number of samples is written
* @param[out] frames Pointer to where number of frames is written
* @return Returns 0 on success, error code on failure.
*/
int av_adts_header_parse(const uint8_t *buf, uint32_t *samples,
uint8_t *frames);

#endif /* AVCODEC_ADTS_PARSER_H */
Loading
Loading