Procházet zdrojové kódy

h264: Make WriteUe take a u32

Enforces the type of the desired value in calling code.
Lioncash před 5 roky
rodič
revize
cce14b4cd7

+ 7 - 6
src/video_core/command_classes/codecs/h264.cpp

@@ -63,7 +63,8 @@ std::vector<u8>& H264::ComposeFrameHeader(NvdecCommon::NvdecRegisters& state, bo
         writer.WriteU(0, 8);
         writer.WriteU(31, 8);
         writer.WriteUe(0);
-        const s32 chroma_format_idc = (context.h264_parameter_set.flags >> 12) & 0x3;
+        const auto chroma_format_idc =
+            static_cast<u32>((context.h264_parameter_set.flags >> 12) & 3);
         writer.WriteUe(chroma_format_idc);
         if (chroma_format_idc == 3) {
             writer.WriteBit(false);
@@ -74,8 +75,8 @@ std::vector<u8>& H264::ComposeFrameHeader(NvdecCommon::NvdecRegisters& state, bo
         writer.WriteBit(false); // QpprimeYZeroTransformBypassFlag
         writer.WriteBit(false); // Scaling matrix present flag
 
-        const s32 order_cnt_type = static_cast<s32>((context.h264_parameter_set.flags >> 14) & 3);
-        writer.WriteUe(static_cast<s32>((context.h264_parameter_set.flags >> 8) & 0xf));
+        const auto order_cnt_type = static_cast<u32>((context.h264_parameter_set.flags >> 14) & 3);
+        writer.WriteUe(static_cast<u32>((context.h264_parameter_set.flags >> 8) & 0xf));
         writer.WriteUe(order_cnt_type);
         if (order_cnt_type == 0) {
             writer.WriteUe(context.h264_parameter_set.log2_max_pic_order_cnt);
@@ -115,7 +116,7 @@ std::vector<u8>& H264::ComposeFrameHeader(NvdecCommon::NvdecRegisters& state, bo
         writer.WriteUe(0);
         writer.WriteUe(0);
 
-        writer.WriteBit(context.h264_parameter_set.entropy_coding_mode_flag);
+        writer.WriteBit(context.h264_parameter_set.entropy_coding_mode_flag != 0);
         writer.WriteBit(false);
         writer.WriteUe(0);
         writer.WriteUe(context.h264_parameter_set.num_refidx_l0_default_active);
@@ -187,8 +188,8 @@ void H264BitWriter::WriteSe(s32 value) {
     WriteExpGolombCodedInt(value);
 }
 
-void H264BitWriter::WriteUe(s32 value) {
-    WriteExpGolombCodedUInt((u32)value);
+void H264BitWriter::WriteUe(u32 value) {
+    WriteExpGolombCodedUInt(value);
 }
 
 void H264BitWriter::End() {

+ 1 - 1
src/video_core/command_classes/codecs/h264.h

@@ -38,7 +38,7 @@ public:
     /// WriteSe and WriteUe write in the Exp-Golomb-coded syntax
     void WriteU(s32 value, s32 value_sz);
     void WriteSe(s32 value);
-    void WriteUe(s32 value);
+    void WriteUe(u32 value);
 
     /// Finalize the bitstream
     void End();