Skip to content

fix(playback): pick HEVC sample-entry tag from the client's DeviceProfile - #413

Open
lostb1t wants to merge 3 commits into
mainfrom
fix/hevc-tag-from-device-profile
Open

fix(playback): pick HEVC sample-entry tag from the client's DeviceProfile#413
lostb1t wants to merge 3 commits into
mainfrom
fix/hevc-tag-from-device-profile

Conversation

@lostb1t

@lostb1t lostb1t commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Alternative to #411.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

It introduces avoidable public-API expansion/breakage in device_profile (public trait method + public constants) that should be made backward-compatible and/or crate-private.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

This PR adjusts HEVC stream-copy behavior in remux-server so the MP4 sample-entry fourcc (hvc1 vs hev1) is selected based on the requesting client’s DeviceProfile, then propagated through playback URLs/sessions into ffmpeg arguments and HLS CODECS signaling.

Changes:

  • Add a per-session/per-transcode hevc_copy_tag propagated from DeviceProfile → querystring → TranscodeSession/params.
  • Apply the resolved tag to ffmpeg -tag:v for HEVC stream-copy (HLS fMP4 path + progressive copy path).
  • Update HLS master playlist CODECS generation to match the actual fourcc used for HEVC fMP4 segment sample entries; add unit tests for tag behavior.
File summaries
File Description
crates/remux-server/src/playback/session.rs Store the resolved HEVC copy tag on TranscodeSession.
crates/remux-server/src/playback/engine.rs Thread tag into transcode params, apply -tag:v, and ensure master playlist CODECS matches; adds tests.
crates/remux-server/src/playback/decision.rs Carry the resolved tag forward on the transcode URL as a query parameter.
crates/remux-server/src/device_profile.rs Add DeviceProfileExt::hevc_copy_tag() and tag constants; implement logic using codec-profile conditions; adds tests.
crates/remux-server/src/api/playback.rs Pass video_codec_tag query value into progressive transcode params.
crates/remux-server/src/api/hls.rs Persist tag into TranscodeSession and into per-segment TranscodeParams.
crates/remux-sdks/src/remux/mod.rs Extend query DTOs with video_codec_tag so the server can deserialize/forward it.
Review details
  • Files reviewed: 7/7 changed files
  • Comments generated: 2
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread crates/remux-server/src/device_profile.rs
Comment thread crates/remux-server/src/device_profile.rs
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Docker image built for this PR and pushed to GitHub Container Registry.

docker pull ghcr.io/lostb1t/remux:pr-413

Image will be removed when this PR is closed or merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants