From b493976f908ff733a97ffb3d90ebaa2ac3dfb89b Mon Sep 17 00:00:00 2001 From: Erik Zandvliet Date: Mon, 5 Oct 2015 17:08:18 +0200 Subject: [PATCH] MP4 HEVC fix --- lib/mp4.cpp | 1 + src/input/input_mp4.cpp | 13 ++++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/mp4.cpp b/lib/mp4.cpp index 53e428cb..7a63ebf6 100644 --- a/lib/mp4.cpp +++ b/lib/mp4.cpp @@ -369,6 +369,7 @@ namespace MP4 { case 0x61616320: return ((AAC *)this)->toPrettyString(indent); break; + case 0x68766331: case 0x68657631: return ((HEV1 *)this)->toPrettyString(indent); break; diff --git a/src/input/input_mp4.cpp b/src/input/input_mp4.cpp index ea87841d..deb1aa23 100644 --- a/src/input/input_mp4.cpp +++ b/src/input/input_mp4.cpp @@ -387,15 +387,22 @@ namespace Mist { if (tmpContent.getType() == "avcC"){ myMeta.tracks[trackNo].init = std::string(tmpContent.payload(),tmpContent.payloadSize()); } - }else if (tmpType == "hev1"){ + }else if (tmpType == "hev1" || tmpType == "hvc1"){ myMeta.tracks[trackNo].type = "video"; myMeta.tracks[trackNo].codec = "HEVC"; if (!myMeta.tracks[trackNo].width){ myMeta.tracks[trackNo].width = ((MP4::VisualSampleEntry&)tmpBox).getWidth(); myMeta.tracks[trackNo].height = ((MP4::VisualSampleEntry&)tmpBox).getHeight(); } - MP4::Box tmpBox2 = ((MP4::VisualSampleEntry&)tmpBox).getCLAP(); - myMeta.tracks[trackNo].init = std::string(tmpBox2.payload(),tmpBox2.payloadSize()); + MP4::Box tmpBox2 = tmpBox; + MP4::Box tmpContent = ((MP4::VisualSampleEntry&)tmpBox2).getCLAP(); + if (tmpContent.getType() == "hvcC"){ + myMeta.tracks[trackNo].init = std::string(tmpContent.payload(),tmpContent.payloadSize()); + } + tmpContent = ((MP4::VisualSampleEntry&)tmpBox2).getPASP(); + if (tmpContent.getType() == "hvcC"){ + myMeta.tracks[trackNo].init = std::string(tmpContent.payload(),tmpContent.payloadSize()); + } }else if (tmpType == "mp4a" || tmpType == "aac " || tmpType == "ac-3"){ myMeta.tracks[trackNo].type = "audio"; myMeta.tracks[trackNo].channels = ((MP4::AudioSampleEntry&)tmpBox).getChannelCount();