Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
165 commits
Select commit Hold shift + click to select a range
197b7fe
Fix seek behavior in Opus, STDIO (#296)
earlephilhower Aug 12, 2020
cdf71d6
Fix AAC mono decode (#297)
earlephilhower Aug 16, 2020
cd42e28
Release 1.5.1 (#298)
earlephilhower Aug 16, 2020
96d0360
Fix memory loading (#300)
dakkar Aug 28, 2020
1c51669
test/run on host, output to null device (#299)
d-a-v Aug 30, 2020
93a540d
Add FLAC host test (#302)
earlephilhower Sep 3, 2020
2fb8d88
Fixes when seeking in an MP3 file (#303)
d-a-v Sep 6, 2020
0ec3bc3
Fix the dependencies in the library's PIO config (#318)
ThePiGuy Oct 25, 2020
90258c5
Fix HTTP redirects with latest releases on ESP8266 (#319)
earlephilhower Oct 26, 2020
299833d
Update to release 1.6
earlephilhower Oct 26, 2020
bbd8748
Reset errors and avoid memory leak (#321)
piebrain Oct 27, 2020
1c7a2f7
Add output via the ULP for the ESP32 (#326)
earlephilhower Nov 1, 2020
0c4c9e1
Update to release 1.7.0 (#333)
earlephilhower Nov 14, 2020
299db3d
Modify AudioOutputI2S to initialize i2s during begin (#331)
Adamcbrz Nov 14, 2020
7f3908c
Modified AudioFileSourceFS.h to add resolution operator on items defi…
troisiemetype Nov 15, 2020
2dc245f
Fix tags framesize endless loop, add add'l tag support (#336)
troisiemetype Nov 16, 2020
1c548c8
Fixes for the ULP driver (#340)
Martin-Laclaustra Nov 23, 2020
e65cc0f
Remove assert() redefinition warnings
earlephilhower Dec 8, 2020
dd8ac07
Remove ID3 signedness warning
earlephilhower Dec 8, 2020
435e2cf
Fix for esp8266 I2S/NoDAC (#344)
d-a-v Dec 12, 2020
7cb02a6
Ensure only 1 ICY packet processed per reading (#356)
earlephilhower Dec 29, 2020
b832ec2
Work around Arduino-Builder bug causing ESP8266 build fail (#358)
earlephilhower Jan 2, 2021
0cee4d4
Proposal for various tiny fixes (#357)
d-a-v Jan 2, 2021
40d0d99
Release 1.8
earlephilhower Jan 3, 2021
3349608
StreamOnHost: play audio on host (#359)
d-a-v Jan 8, 2021
3e3bc35
Add arduino-lint CI check (#360)
earlephilhower Jan 14, 2021
4994de7
Revert "Work around Arduino-Builder bug causing ESP8266 build fail (#…
earlephilhower Jan 28, 2021
6ecb6af
API to force HTTPv1.0 allowing streaming clean data from some servers…
d-a-v Jan 28, 2021
714e8cf
Adding a working implementation of a Biquad filter adapted for use wi…
wberube Feb 13, 2021
f4d4e69
Move large OPUS locals to the heap (#374)
earlephilhower Feb 25, 2021
b37e9d2
Add support for Raspberry Pi Pico Arduino Core
earlephilhower Apr 3, 2021
09b1fd1
Update library.properties
earlephilhower Apr 3, 2021
a72bee6
Update README.md
earlephilhower Apr 3, 2021
8d6631e
Update I2S class API for RP2040
earlephilhower Apr 6, 2021
0d6e134
Merge branch 'master' of https://github.com/earlephilhower/ESP8266Audio
earlephilhower Apr 6, 2021
9b4f360
Fix compile error due to insufficient capacity (#384)
hideakitai Apr 11, 2021
f974af9
Add `AudioFileSourceFunction` which can generate sound from functions…
hideakitai Apr 12, 2021
8bf52d4
Fix the start of the arg “time” is not zero (#386)
hideakitai Apr 13, 2021
d4c0949
Update library.json
earlephilhower Jun 12, 2021
4111404
Update library.properties
earlephilhower Jun 12, 2021
c3c9a14
i2s on esp8266: fix include (#402)
d-a-v Jun 29, 2021
5a5c2a8
Update library.properties
earlephilhower Jun 29, 2021
6ed2604
Update library.json
earlephilhower Jun 29, 2021
6882b6e
Fix 'i2s_write_bytes' was not declared in this scope on ESP32 (#428)
qnxsgwy Sep 8, 2021
627a106
Update library.json
earlephilhower Sep 8, 2021
9dd4f24
Update library.properties
earlephilhower Sep 8, 2021
f47793b
Make LittleFS file source available for ESP32 (#430)
Martin-Laclaustra Sep 14, 2021
5411abe
Update Linear Clock links
earlephilhower Oct 19, 2021
c55abbf
Stream MP3 from HTTP to SPDIF (#436)
pintomax Nov 3, 2021
62463b1
Document ESP8266 I2S pinout (#439)
Oderik Nov 4, 2021
9485887
Set FollowRedirects in AudioFileSourceICYStream (#448)
Pixtxa Nov 27, 2021
8459393
Fix typo in comment (#446)
woutput Nov 28, 2021
701ca39
Fix typo in comment (#445)
woutput Nov 28, 2021
f9a78e7
Fix typo in comment (#444)
woutput Nov 28, 2021
b65bc2d
Fix: add missing SPIFFS.begin() (#443)
woutput Nov 28, 2021
86a1818
Add codespell to CI checks (#450)
earlephilhower Nov 28, 2021
e254ad9
Add MOD test, update DIVIDER name (#451)
earlephilhower Nov 29, 2021
617b06d
Fixing I2S includes to work with ESP8266 Arduino version < 3.0.0 (#453)
noer Nov 29, 2021
2c1aeba
ESP32-C3 Support (#454)
FedericoBusero Nov 30, 2021
de30f61
Update to Rel 1.9.4 for ESP-C3 support (#455)
earlephilhower Nov 30, 2021
0d132c1
Support LSB Justified DACs (e.g. PT8211) (#459)
wojtekka Dec 4, 2021
933439f
Update README.md
earlephilhower Dec 17, 2021
7ac86f0
I2S Fix Builtin DAC&PDM on ESP32 & compiling warning ESP32-C3 (#461)
FedericoBusero Dec 18, 2021
faa8b09
Update library.json
earlephilhower Dec 18, 2021
dca33f8
Update library.properties
earlephilhower Dec 18, 2021
29e5e01
AAC playback on RISC-V processor (ESP32C3) (#466)
FedericoBusero Dec 19, 2021
4971e5c
Increase I2S buffer size (#472)
FedericoBusero Dec 26, 2021
fe7a1f7
Fix RTTTL stop on ESP32 (#473)
FedericoBusero Dec 27, 2021
c55d240
Fix for issue #474, and a few other bugs in MODGenerator (#478)
softhack007 Jan 5, 2022
7a82ba2
AudiogeneratorMOD: use full 16bit with slightly better accuracy (#479)
softhack007 Jan 9, 2022
d5dea4f
AudioOutputI2SNoDAC not working for RP2040 due to constructor differe…
smischny Jan 9, 2022
73a1821
Flush MOD output after normal end of playback (#482)
softhack007 Jan 10, 2022
2094387
Fix #define protection macro name
earlephilhower Feb 9, 2022
8b4010b
Fix PlatformIO library search mode (#500)
maxgerhardt Feb 18, 2022
9ffb8a5
Do not compile AudioGeneratorMIDI if GCC is 8 (compiler bug) (#502)
Martin-Laclaustra Mar 10, 2022
c87b662
Fix typo (#504)
woutput Mar 16, 2022
76235d0
fix typos in readme (#513)
rottifant Apr 25, 2022
9384bb0
Update for RP2040 core v2.0 new I2S (#528)
earlephilhower May 19, 2022
be8b8ef
Clean ESP32 build (#529)
earlephilhower May 19, 2022
2069060
Add RP2040 build (#530)
earlephilhower May 19, 2022
a6f1eda
Get ESP8266 CI running again (#531)
earlephilhower May 19, 2022
b9666d3
Get ESP32 CI running again (#532)
earlephilhower May 19, 2022
879fe48
Clean up ESP32 I2S interface undefineds (#533)
earlephilhower May 19, 2022
9a9e030
Add more tests to host testing in CI (#534)
earlephilhower May 20, 2022
19f8029
Update library.json
earlephilhower May 31, 2022
b987ca3
Update library.properties
earlephilhower May 31, 2022
c2adbdc
Enable Werror for ESP32 (#536)
earlephilhower Jun 1, 2022
3b329b8
fixed: tmpSourceSamplePositionF32P32 jumping to incorrect position ca…
ecoriag Jun 11, 2022
c4bf70b
Fix typo in README (#541)
earlephilhower Jun 13, 2022
02225bc
Fix overflow with x256 oversampling in I2SNoDAC (#543)
earlephilhower Jun 14, 2022
6d3b866
sketch_utils.sh now uses flags and breaks current functionality (#555)
ecoriag Jul 17, 2022
e24223e
ESP32: Fix compilation of I2S in Arduino ESP32 core 1.0.6 (#565)
FedericoBusero Aug 24, 2022
bf31f0f
Update macros.h
earlephilhower Aug 31, 2022
93c4e3a
Fix build support gcc8 for other arch (#567)
shuai132 Aug 31, 2022
a323627
Update pr-or-master-push.yml
earlephilhower Aug 31, 2022
72ed4f7
Update pr-or-master-push.yml
earlephilhower Sep 1, 2022
f95f15f
I2S: register I2S object to platform failed (#568)
FedericoBusero Sep 1, 2022
46b3657
fix: Invalid data is assigned to the right channel when playing a mon…
lovyan03 Sep 4, 2022
0b5da0e
Add PWMAudio support for the RP2040 (#597)
earlephilhower Jan 4, 2023
4ba7df1
Add support for I2S MCLK. (#594)
DatanoiseTV Jan 4, 2023
12131e9
Update README.md
earlephilhower Jan 28, 2023
0abcf71
Add ability to SwapClocks(bool) on I2S. rp2040 only. (#639)
nils-trubkin Jun 30, 2023
60b9343
Update README.md (#675)
KDMcMullan Apr 16, 2024
f6c0d56
Update AudioOutputSPDIF.cpp (#677)
earlephilhower Apr 16, 2024
e306df2
Update AudioOutputSPDIF.h
earlephilhower Apr 16, 2024
b7d8905
Update polyphase.c
earlephilhower Apr 16, 2024
139fba4
Update opusfile.c (#678)
earlephilhower Apr 16, 2024
b3c4166
Fix GCC12.3 new warnings for RP2040 (#679)
earlephilhower Apr 16, 2024
89a5a07
Get ESP32 CI builds working again (#680)
earlephilhower Apr 17, 2024
492a5be
Update GH CI actions to latest (#681)
earlephilhower Apr 17, 2024
51a584c
Update AudioGeneratorRTTTL.cpp for dotted length (#668)
foreshadow Apr 26, 2024
b837e7d
Stop output on OOM in MP3 (#658)
ChuckMash Apr 26, 2024
a614147
Update for ESP32 Arduino 3.x (#685)
earlephilhower Jun 6, 2024
c932014
Update pr-or-master-push.yml (#687)
earlephilhower Jun 6, 2024
a0a4a00
Fix release numbering
earlephilhower Sep 21, 2024
79208f6
Fix GCC14-detected warnings (#711)
earlephilhower Oct 6, 2024
50bc3f7
Add MCLK support for RP2040 (#707)
DoomHammer Oct 6, 2024
96dc79c
AudioOutputPWM: added amplification (#605)
jmr-es Oct 8, 2024
a4a9743
Update Arduino Lint GH Action
earlephilhower Oct 8, 2024
235bcb1
Fix UTF-8 warning in RCSL doc
earlephilhower Oct 8, 2024
d32d8b4
Performance improvement: ~13% faster on ESP32 and ~21% faster on ESP8…
ecoriag Oct 9, 2024
52c49af
NoDAC and PDM documentation update for ESP32 (#519)
RomanLut Oct 9, 2024
1278b10
Update library.properties
earlephilhower Oct 9, 2024
7e50a43
Update README.md
earlephilhower Oct 9, 2024
0e5870a
Update library.properties
earlephilhower Oct 9, 2024
2f43b3b
Update README.md
earlephilhower Oct 15, 2024
fbe69b8
Fix AAC HR decode on RP2040
earlephilhower Dec 18, 2024
90b83fb
Update README.md
earlephilhower Dec 18, 2024
aafabf2
Ensure MP3 can safely exit on OOM (#716)
earlephilhower Dec 19, 2024
cdd07c9
Only block tsf.h on Xtensa ESP32, not RISCV (#722)
earlephilhower Dec 19, 2024
b0a06ed
Fixing crash on MP3 playback on ESP8266. (#723)
Misterke Dec 25, 2024
8adeb31
Automate version bumps, avoid manual mistakes (#725)
earlephilhower Dec 31, 2024
3044568
Update version
earlephilhower Dec 31, 2024
7e2b839
Update README.md
earlephilhower Jan 22, 2025
b589145
Add support for MIPS architecture (#738)
nschimme Apr 8, 2025
62dd23a
Bring back ESP8266 Arduino CI (#739)
earlephilhower Apr 10, 2025
f9e72db
Add style check matching RP2040 core (#740)
earlephilhower Apr 11, 2025
88a8220
Remove ESP32 NDEBUG redefinition warnings (#741)
earlephilhower Apr 11, 2025
a852767
Speed up AAC decode by ~20% on Pico/ESP32 (#742)
earlephilhower Apr 12, 2025
9dee301
Added internal DAC support via DMA (#744)
frak0d Apr 18, 2025
ae685b1
Use arduino-cli to build examples, avoid bitrot (#765)
earlephilhower Oct 8, 2025
39188b8
Scan MP3 for header, avoid multiple burst errors (#764)
earlephilhower Oct 8, 2025
4130931
Remove error when ULP included on 8266/Pico (#767)
earlephilhower Oct 8, 2025
df171f5
Add stale issue tracker GH action (#766)
earlephilhower Oct 8, 2025
18796ab
Up GH action operations
earlephilhower Oct 8, 2025
efcb98a
ESP32-S3 has no DAC (#490)
Jason2866 Oct 8, 2025
acc4dc4
Add CodeQL GH action (#768)
earlephilhower Oct 8, 2025
b09bad5
Fix stale acction warnings
earlephilhower Oct 8, 2025
402278a
Potential fix for code scanning alert no. 9: Array offset used before…
earlephilhower Oct 8, 2025
0699450
Pin GH actions to SHA (#770)
earlephilhower Oct 8, 2025
a3e6f97
Add auto-release GH action
earlephilhower Oct 8, 2025
d9e1ea7
Don't set I2S rate unless it's different (#771)
earlephilhower Oct 8, 2025
297943c
Update version
earlephilhower Oct 8, 2025
b63c284
Tell AudioOutputMixer the rate for the next sample (#129)
darookee Oct 8, 2025
6bc8f56
For I2S, only enable mclkPin if it's actually used (#772)
earlephilhower Oct 8, 2025
15f9a65
AudioOutputInternalDAC unitialized variable fix (#773)
earlephilhower Oct 8, 2025
81ebc8a
Fix Talkie output on ESP32 (#774)
earlephilhower Oct 9, 2025
c5613c5
Add PWM/NoDAC filter and amp examples (#775)
earlephilhower Oct 9, 2025
b4e7695
Rename helper fcn stack->stackenter for MAD (#777)
earlephilhower Oct 9, 2025
5cab5b3
Fix div/0 error after WDT in ULP (#778)
earlephilhower Oct 9, 2025
94f6879
Add include for rtc_io_reg.h in AudioOutputULP.cpp
earlephilhower Oct 9, 2025
8fe0911
ESP32 AudioOutputULP fixes (#579)
FedericoBusero Oct 9, 2025
1255a42
Mixer stubs produce 16b, avoid 8b WAV issues (#776)
earlephilhower Oct 9, 2025
c19a615
Add Werror, etc. to CI process (#779)
earlephilhower Oct 9, 2025
36dde3c
Update README, ESP32 is supported
earlephilhower Oct 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
28 changes: 28 additions & 0 deletions .github/codeql/codeql-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: "CodeQL config"

packs:
- trailofbits/cpp-queries
- githubsecuritylab/codeql-cpp-queries
- githubsecuritylab/codeql-python-queries

queries:
- uses: security-extended
- uses: security-and-quality

query-filters:
- exclude:
query path:
- /^experimental\/.*/
- exclude:
tags contain:
- experimental
- exclude:
problem.severity:
- recommendation
- exclude:
id: tob/cpp/use-of-legacy-algorithm # We use legacy algorithms in many places for integrity checks
- exclude:
id: cpp/dead-code-goto # Too many false positives in no-build mode

paths-ignore:
- tests/**
129 changes: 129 additions & 0 deletions .github/scripts/process_sarif.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
#!/usr/bin/env python3

# This script is used to process the SARIF file generated by CodeQL and
# to rename files back to .ino and adjust line numbers to match the original .ino files.

import json
import sys
import os

def process_artifact_location(artifact_location, renamed_files):
"""
Process a single artifact location to rename .cpp files back to .ino
"""
if 'uri' in artifact_location:
uri = artifact_location['uri']
if uri in renamed_files:
print(f"Renaming file: {uri} -> {renamed_files[uri]}")
artifact_location['uri'] = renamed_files[uri]
return True
return False

def process_region(region):
"""
Adjust line numbers in a region by decreasing them by 1
"""
if 'startLine' in region:
region['startLine'] = max(1, region['startLine'] - 1)
if 'endLine' in region:
region['endLine'] = max(1, region['endLine'] - 1)

def process_physical_location(physical_location, renamed_files):
"""
Process a physical location to rename files and adjust line numbers
"""
file_renamed = False

if 'artifactLocation' in physical_location:
if process_artifact_location(physical_location['artifactLocation'], renamed_files):
file_renamed = True

# Adjust line numbers if the file was renamed
if file_renamed and 'region' in physical_location:
process_region(physical_location['region'])

return file_renamed


def process_sarif_file(sarif_file, renamed_files_file):
"""
Process SARIF file to rename files back to .ino and adjust line numbers
"""
# Read the renamed files mapping
with open(renamed_files_file, 'r') as f:
renamed_files = json.load(f)

print(f"Loaded {len(renamed_files)} file mappings:")
for cpp_file, ino_file in renamed_files.items():
print(f" {cpp_file} -> {ino_file}")


# Read the SARIF file
with open(sarif_file, 'r') as f:
sarif_data = json.load(f)

files_processed = 0

# Process each run
if 'runs' in sarif_data:
for run in sarif_data['runs']:
# Process results
if 'results' in run:
for result in run['results']:
# Process all locations in the result
if 'locations' in result:
for location in result['locations']:
if 'physicalLocation' in location:
if process_physical_location(location['physicalLocation'], renamed_files):
files_processed += 1

# Process related locations if they exist
if 'relatedLocations' in result:
for location in result['relatedLocations']:
if 'physicalLocation' in location:
if process_physical_location(location['physicalLocation'], renamed_files):
files_processed += 1

# Process artifacts if they exist
if 'artifacts' in run:
for artifact in run['artifacts']:
if 'location' in artifact and 'uri' in artifact['location']:
uri = artifact['location']['uri']
if uri in renamed_files:
artifact['location']['uri'] = renamed_files[uri]
files_processed += 1

print(f"Processed {files_processed} file references")

# Write the processed SARIF file
with open(sarif_file, 'w') as f:
json.dump(sarif_data, f, indent=2)

def main():
if len(sys.argv) != 3:
print("Usage: python3 sarif_nobuild.py <sarif_file> <renamed_files_file>")
sys.exit(1)

sarif_file = sys.argv[1]
renamed_files_file = sys.argv[2]

# Check if files exist
if not os.path.exists(sarif_file):
print(f"SARIF file not found: {sarif_file}")
sys.exit(1)

if not os.path.exists(renamed_files_file):
print(f"Renamed files mapping not found: {renamed_files_file}")
sys.exit(1)

try:
process_sarif_file(sarif_file, renamed_files_file)
print("SARIF file processed successfully")
except Exception as e:
print(f"Error processing SARIF file: {e}")
import traceback
traceback.print_exc()
sys.exit(1)

if __name__ == "__main__":
main()
94 changes: 94 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
name: CodeQL Analysis

on:
workflow_dispatch:
push:
branches:
- master
pull_request:
paths:
- "**/*.c"
- "**/*.cpp"
- "**/*.h"
- "**/*.ino"
- "**/*.py"
- ".github/workflows/*.yml"
- ".github/workflows/*.yaml"

permissions:
actions: read
contents: read
pull-requests: read
security-events: write

jobs:
codeql-analysis:
name: CodeQL ${{ matrix.language }} analysis
runs-on: ubuntu-latest
strategy:
matrix:
language: [python, actions, cpp]

steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

- name: Process .ino files
if: matrix.language == 'cpp'
run: |
# Create a mapping file to track renamed files
echo "{}" > renamed_files.json

# Find all .ino files and process them
find . -name "*.ino" -type f | while read -r file; do
echo "Processing $file"

# Get the relative path from repository root
rel_path=$(realpath --relative-to=. "$file")
cpp_path="${rel_path%.ino}.cpp"

# Create new .cpp file with Arduino.h include
echo "#include <Arduino.h>" > "$cpp_path"

# Append the original content
cat "$file" >> "$cpp_path"

# Update the mapping file
jq --arg ino "$rel_path" --arg cpp "$cpp_path" '. += {($cpp): $ino}' renamed_files.json > temp.json && mv temp.json renamed_files.json

# Remove the original .ino file
rm "$file"

echo "Converted $file to $cpp_path"
done

echo "Renamed files mapping:"
cat renamed_files.json

- name: Initialize CodeQL
uses: github/codeql-action/init@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
with:
build-mode: none
languages: ${{ matrix.language }}
config-file: ./.github/codeql/codeql-config.yml

- name: Run CodeQL Analysis
uses: github/codeql-action/analyze@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
with:
category: "/language:${{ matrix.language }}"
output: sarif-results
upload: failure-only

- name: Process SARIF file
if: matrix.language == 'cpp'
run: |
sarif_file="sarif-results/${{ matrix.language }}.sarif"

# Run the Python script to process the SARIF file
python3 .github/scripts/process_sarif.py "$sarif_file" "renamed_files.json"

- name: Upload SARIF file
uses: github/codeql-action/upload-sarif@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
with:
sarif_file: sarif-results/${{ matrix.language }}.sarif
category: "/language:${{ matrix.language }}"
25 changes: 25 additions & 0 deletions .github/workflows/make-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Build all and make release on tag

on:
workflow_dispatch:
push:
tags:
- '*'

jobs:
make-release:
runs-on: ubuntu-latest
permissions:
contents: write

steps:

- uses: actions/checkout@v4
with:
submodules: true

- name: Drafting release
uses: ncipollo/release-action@b7eabc95ff50cbeeedec83973935c8f306dfcd0b # v1.20.0
with:
draft: true
generateReleaseNotes: true
Loading