From 8a5ac893bff6d6882d0d757ab6dc57a24b74e040 Mon Sep 17 00:00:00 2001 From: haoruiwang <1905811497@qq.com> Date: Fri, 20 Sep 2024 22:44:34 +0800 Subject: [PATCH] =?UTF-8?q?[what][feature][h264]=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E4=BB=85=E8=A7=A3=E6=9E=90=20SPS=20=E5=92=8C=20PPS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- H264Deserialize.cpp | 26 ++++++++++++++++---------- H264Deserialize.h | 3 +++ 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/H264Deserialize.cpp b/H264Deserialize.cpp index 6bcc692..a4e2621 100644 --- a/H264Deserialize.cpp +++ b/H264Deserialize.cpp @@ -192,23 +192,29 @@ bool H264Deserialize::DeserializeNalSyntax(H26xBinaryReader::ptr br, H264NalSynt case H264NaluType::MMP_H264_NALU_TYPE_IDR: /* pass through */ case H264NaluType::MMP_H264_NALU_TYPE_SLICE: { - // Hint : Slice = Slice header + Slice data + rbsp_trailing_bits() - // only parse slice header and may move to next nal unit - nal->slice = std::make_shared(); - if (!DeserializeSliceHeaderSyntax(br, nal, nal->slice)) + if (enableParseSLICE) { - assert(false); - return false; + // Hint : Slice = Slice header + Slice data + rbsp_trailing_bits() + // only parse slice header and may move to next nal unit + nal->slice = std::make_shared(); + if (!DeserializeSliceHeaderSyntax(br, nal, nal->slice)) + { + assert(false); + return false; + } + br->MoveNextByte(); } - br->MoveNextByte(); break; } case H264NaluType::MMP_H264_NALU_TYPE_SEI: { - nal->sei = std::make_shared(); - if (!DeserializeSeiSyntax(br, nal->sei)) + if (enableParseSEI) { - return false; + nal->sei = std::make_shared(); + if (!DeserializeSeiSyntax(br, nal->sei)) + { + return false; + } } break; } diff --git a/H264Deserialize.h b/H264Deserialize.h index 57ebef3..33d0aa0 100644 --- a/H264Deserialize.h +++ b/H264Deserialize.h @@ -67,6 +67,9 @@ class H264Deserialize bool DeserializeSeiFramePackingArrangementSyntax(H26xBinaryReader::ptr br, H264SeiFramePackingArrangementSyntax::ptr fpa); bool DeserializeSeiAlternativeTransferCharacteristicsSyntax(H26xBinaryReader::ptr br, H264SeiAlternativeTransferCharacteristicsSyntax::ptr atc); bool DeserializeAmbientViewingEnvironmentSyntax(H26xBinaryReader::ptr br, H264AmbientViewingEnvironmentSyntax::ptr awe); +public: + bool enableParseSEI = true; + bool enableParseSLICE = true; private: H264ContextSyntax::ptr _contex; };