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