Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: Red5/red5-server
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v2.0.25
Choose a base ref
...
head repository: Red5/red5-server
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v2.0.26
Choose a head ref
  • 13 commits
  • 27 files changed
  • 2 contributors

Commits on Dec 27, 2025

  1. Improve late subscriber handling and keyframe detection in PlayEngine

    Add timestamp offset tracking for late subscribers joining live streams.
    Keyframe detection mode now properly switches to SEND_ALL once a keyframe
    is available. Added waitingForKeyframe flag to track state when waiting for
    the first keyframe before allowing frame sending.
    
    Changes:
    - Add publisherTimestampOffset field for tracking publisher timestamp
    - Add waitingForKeyframe flag to control frame sending before first keyframe
    - Initialize streamStartTS to 0 for late subscribers to generate
      proper relative timestamps
    - Enhance debug logging for keyframe availability and codec state
    - Clean up unused code in RTMP protocol encoders/decoders
    mondain committed Dec 27, 2025
    Configuration menu
    Copy the full SHA
    a10b3b1 View commit details
    Browse the repository at this point in the history

Commits on Dec 28, 2025

  1. Fix LEB128 decode to properly handle little-endian format

    The decode(byte[]) method was incorrectly processing LEB128 encoded data,
    treating it as big-endian when LEB128 is by definition little-endian
    (Little Endian Base 128).
    
    Key fixes:
    - decode(byte[]): Now correctly reads bytes in little-endian order, where
      the LSB 7-bit group comes first. Each byte is processed sequentially
      with the 7 data bits shifted into position.
    - encode(byte[]): Simplified to delegate to decode, as the original logic
      was fundamentally broken for LEB128 encoding.
    
    LEB128 format per AV1 spec:
    - Each byte contains 7 bits of data (LSB) + 1 continuation bit (MSB)
    - Bytes are read in the order they appear in the packet
    - First byte contains least significant 7-bit group
    
    Example: value 150
    - Old (wrong): Would read bytes in big-endian order, producing incorrect results
    - New (correct): Reads [0x96, 0x01] as: (0x16 << 0) | (0x01 << 7) = 22 + 128 = 150
    
    Also fixed test data with correct LEB128 expected values.
    mondain committed Dec 28, 2025
    Configuration menu
    Copy the full SHA
    c94a47f View commit details
    Browse the repository at this point in the history

Commits on Dec 31, 2025

  1. Configuration menu
    Copy the full SHA
    5538edd View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    cdf2177 View commit details
    Browse the repository at this point in the history

Commits on Jan 1, 2026

  1. Update common/src/main/java/org/red5/server/net/rtmp/codec/RTMPProtoc…

    …olEncoder.java
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    mondain and Copilot authored Jan 1, 2026
    Configuration menu
    Copy the full SHA
    7c0b729 View commit details
    Browse the repository at this point in the history
  2. Update common/src/main/java/org/red5/server/net/rtmp/codec/RTMPProtoc…

    …olEncoder.java
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    mondain and Copilot authored Jan 1, 2026
    Configuration menu
    Copy the full SHA
    cb75621 View commit details
    Browse the repository at this point in the history
  3. Update io/src/main/java/org/red5/io/utils/LEB128.java

    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    mondain and Copilot authored Jan 1, 2026
    Configuration menu
    Copy the full SHA
    d6c55ce View commit details
    Browse the repository at this point in the history
  4. Update common/src/main/java/org/red5/server/net/rtmp/codec/RTMPProtoc…

    …olEncoder.java
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    mondain and Copilot authored Jan 1, 2026
    Configuration menu
    Copy the full SHA
    6ce893c View commit details
    Browse the repository at this point in the history
  5. Update common/src/main/java/org/red5/server/net/rtmp/codec/RTMPProtoc…

    …olEncoder.java
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    mondain and Copilot authored Jan 1, 2026
    Configuration menu
    Copy the full SHA
    142a67a View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    26c7d0b View commit details
    Browse the repository at this point in the history
  7. Fix A/V sync for late subscribers and improve RTMP timestamp handling

    PlayEngine changes:
    - Track audio and video base timestamps separately for late subscribers
    - Both audio and video now start at ts=2 for proper A/V sync
    - Reorder playLive() to send audio config before keyframe (DTS ordering fix)
    - Add debug logging for video frame delivery path
    
    RTMPConnection changes:
    - Reduce BytesRead acknowledgement interval from 1MB to 128KB
    - More frequent acknowledgements improve encoder compatibility
    - Add debug logging for BytesRead messages
    
    RTMP codec improvements:
    - Enhanced extended timestamp handling for timestamps >= 0xFFFFFF
    - Per-channel timestamp offset tracking for discontinuity compensation
    - Improved timestamp delta calculations in encoder
    
    Debug logging additions:
    - ClientBroadcastStream: video reception and livePipe push logging
    - VideoFrameDropper: state transition and frame drop decision logging
    - TestRTMPUtils: comprehensive tests for RTMP utility methods
    mondain committed Jan 1, 2026
    Configuration menu
    Copy the full SHA
    4fdd3fe View commit details
    Browse the repository at this point in the history

Commits on Jan 2, 2026

  1. Configuration menu
    Copy the full SHA
    2c71e59 View commit details
    Browse the repository at this point in the history
  2. Merge pull request #429 from Red5/glm

    Proposed 2.0.26 release with RTMP encode/decode fixes
    mondain authored Jan 2, 2026
    Configuration menu
    Copy the full SHA
    a941add View commit details
    Browse the repository at this point in the history
Loading