Dolby Vision - stuarthicks/stuarthicks GitHub Wiki
# vi: set list ts=8:
.DEFAULT_GOAL = all
DOVI_TOOL = https://github.com/quietvoid/dovi_tool/releases/download/1.4.6/dovi_tool-1.4.6-x86_64-apple-darwin.tar.gz
ifeq ($(shell uname),Linux)
DOVI_TOOL = https://github.com/quietvoid/dovi_tool/releases/download/1.4.6/dovi_tool-1.4.6-x86_64-unknown-linux-musl.tar.gz
endif
bin/dovi_tool:
mkdir -p bin
curl -L $(DOVI_TOOL) | tar -xzvf - -C .
mv dist/dovi_tool ./bin/dovi_tool
rmdir dist
[email protected]_15200kbps.mp4:
curl -o [email protected]_15200kbps.mp4 http://media.developer.dolby.com/DolbyVision_Atmos/mp4/iOS_P5_GlassBlowing2_3840x2160%4059.94fps_15200kbps.mp4
[email protected]_15200kbps.mp4:
curl -o [email protected]_15200kbps.mp4 http://media.developer.dolby.com/DolbyVision_Atmos/mp4/iOS_P5_GlassBlowing2_1920x1080%4059.94fps_15200kbps.mp4
mastering_display_metadata.json: [email protected]_15200kbps.mp4
ffprobe -hide_banner -loglevel warning -select_streams v -print_format json -show_frames -read_intervals "%+#1" -show_entries "frame=color_space,color_primaries,color_transfer,side_data_list,pix_fmt" -i [email protected]_15200kbps.mp4 \
| jq . > mastering_display_metadata.json
RPU.bin: ./bin/dovi_tool
RPU.bin: [email protected]_15200kbps.mp4
ffmpeg -i [email protected]_15200kbps.mp4 -c:v copy -bsf hevc_mp4toannexb -f hevc - \
| ./bin/dovi_tool extract-rpu - -o RPU.bin
rpu_frame_%.json: ./bin/dovi_tool
rpu_frame_%.json: RPU.bin
./bin/dovi_tool info -i RPU.bin -f $* | sed 1d | jq . > $@
# Extract base and enhancement layers of input as BL.hevc and EL.hevc
BL.hevc: ./bin/dovi_tool
BL.hevc: [email protected]_15200kbps.mp4
ffmpeg -i [email protected]_15200kbps.mp4 -c:v copy -bsf hevc_mp4toannexb -f hevc - \
| ./bin/dovi_tool demux -
# Mux base layer to mp4 container
BL.mp4: BL.hevc
ffmpeg -i BL.hevc -c copy -tag:v hvc1 BL.mp4
.PHONY: all
all: [email protected]_15200kbps.mp4
all: RPU.bin
all: BL.mp4
all: mastering_display_metadata.json
all: rpu_frame_0.json
.PHONY: clean
clean:
# rm -f [email protected]_15200kbps.mp4
rm -f RPU.bin
rm -f BL.hevc
rm -f EL.hevc
rm -f BL.mp4
rm -f mastering_display_metadata.json
rm -f rpu_frame_*.json