Conversation
Preserve the dvvC box through bypass remux by setting FF_COMPLIANCE_UNOFFICIAL when a Dolby Vision stream is detected (mirrors the existing MV-HEVC path). Expose DOVI config in probe output (C side data → Go StreamInfo). Parse dvcC/dvvC boxes in mp4e for codec info extraction. Add XcParams JSON logging, early nil guard for getCParams, and doc comments on all transcoding entry points.
Probe: set StreamInfo.DolbyAtmos from ec3_joc in stream_info_t, which is populated in avpipe_probe() by checking s->codecpar->profile == AV_PROFILE_EAC3_DDP_ATMOS — consistent with is_dolby_atmos() in avpipe_format.c. Tests: add TestAudioAtmosBypassExplicit, which uses BypassTranscoding=true to remux EAC-3 without re-encoding and without relying on the is_dolby_atmos() auto-bypass heuristic (PENDING(SS) WIP). Update TestAudioAtmosBypass comment to document that it intentionally exercises that heuristic and should be updated (not deleted) if it is removed. goavpipe: add ProbeInfo.StreamByCodecType() helper; use it at all five call sites in avpipe_test.go that previously open-coded the same loop.
Tests: add TestAudioAtmosBypassExplicit, which uses BypassTranscoding=true to remux EAC-3 without re-encoding and without relying on the is_dolby_atmos() auto-bypass heuristic (PENDING(SS) WIP). Update TestAudioAtmosBypass comment to document that it intentionally exercises that heuristic and should be updated if it is removed. Both bypass tests now assert codec, DolbyAtmos, BitRate, Channels, and ChannelLayoutName. Replace hand-written TestProbeDolbyVision81 assertions with TestProbeDolbyVision81Golden, a full JSON comparison against a new golden fixture (testdata/avprobe_dolby_vision_81.jsonc). goavpipe: add ProbeInfo.StreamByCodecType() helper; replace all five open-coded range loops in avpipe_test.go with calls to it. Add unit tests for the helper in goavpipe/probe_test.go driven from the Dolby Atmos golden fixture. C comment: correct the claim that avcodec_parameters_from_context clears codecpar->extradata — the actual cause is mov_read_dec3 discarding the dec3 box bytes. Use codecpar->profile consistently instead of codec_context->profile, matching is_dolby_atmos(). testdata: rename .json → .jsonc; convert _comments object in ffprobe_dolby_atmos to a // comment; add command comment to avprobe_dolby_atmos.jsonc.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Dolby Vision Profile 8.1 (commit 4d01b7f)
Preserve the dvvC box through bypass remux by setting
FF_COMPLIANCE_UNOFFICIAL when a Dolby Vision stream is detected (mirrors
the existing MV-HEVC path). Expose the DOVI decoder configuration record
in probe output via a new
DOVI *mp4e.DOVIInfofield onStreamInfo(C side data → Go). Parse dvcC/dvvC boxes in
mp4efor codec infoextraction. Add
XcParamsJSON logging, early nil guard forgetCParams, and doc comments on all transcoding entry points.Dolby Atmos probe (commit f2c4008)
Add
DolbyAtmos booltoStreamInfo, populated froms->codecpar->profile == AV_PROFILE_EAC3_DDP_ATMOSinavpipe_probe()— consistent with
is_dolby_atmos()inavpipe_format.c. The profileis set by the EAC-3 decoder from sync-frame headers during
avformat_find_stream_infoand propagated back tocodecparviaavcodec_parameters_from_context.Add
TestAudioAtmosBypassExplicit, which usesBypassTranscoding=trueto remux EAC-3 without re-encoding and without relying on the
is_dolby_atmos()auto-bypass heuristic (PENDING(SS) WIP).TestAudioAtmosBypassis kept and documented as the test for thatheuristic — it should be updated when the heuristic is replaced.
Add
ProbeInfo.StreamByCodecType()helper togoavpipe; replace allopen-coded range loops in
avpipe_test.gowith calls to it.Test and doc cleanup (commit ffe6303)
DolbyAtmos,BitRate,Channels, andChannelLayoutNameTestProbeDolbyVision81assertions withTestProbeDolbyVision81Golden(full JSON comparison against a newgolden fixture
testdata/avprobe_dolby_vision_81.jsonc)StreamByCodecTypeingoavpipe/probe_test.go,driven from the Dolby Atmos golden fixture
mov_read_dec3discards the dec3 box bytes (notavcodec_parameters_from_context); uses->codecpar->profileconsistently instead of
codec_context->profile*.json→*.jsonc; convert_commentsobjects to//comments