diff --git a/Project/MSVC2022/Dll/MediaInfoDll.vcxproj b/Project/MSVC2022/Dll/MediaInfoDll.vcxproj index 6dd27e6e0..5e8d0cd6e 100644 --- a/Project/MSVC2022/Dll/MediaInfoDll.vcxproj +++ b/Project/MSVC2022/Dll/MediaInfoDll.vcxproj @@ -184,6 +184,7 @@ true Disabled true + stdcpp20 Windows @@ -198,6 +199,7 @@ true Disabled true + stdcpp20 Windows @@ -212,6 +214,7 @@ true Disabled true + stdcpp20 Windows @@ -226,6 +229,7 @@ true Disabled true + stdcpp20 Windows @@ -258,6 +262,7 @@ NoExtensions true Guard + stdcpp20 Windows @@ -279,6 +284,7 @@ None true Guard + stdcpp20 Windows @@ -301,6 +307,7 @@ Guard true true + stdcpp20 Windows @@ -323,6 +330,7 @@ Guard true true + stdcpp20 Windows @@ -343,6 +351,7 @@ true Guard true + stdcpp20 Windows diff --git a/Project/MSVC2022/Library/MediaInfoLib.vcxproj b/Project/MSVC2022/Library/MediaInfoLib.vcxproj index 575801130..15e1a402d 100644 --- a/Project/MSVC2022/Library/MediaInfoLib.vcxproj +++ b/Project/MSVC2022/Library/MediaInfoLib.vcxproj @@ -186,6 +186,7 @@ true Disabled true + stdcpp20 @@ -198,6 +199,7 @@ true Disabled true + stdcpp20 @@ -210,6 +212,7 @@ true Disabled true + stdcpp20 @@ -222,6 +225,7 @@ true Disabled true + stdcpp20 @@ -253,6 +257,7 @@ NoExtensions true Guard + stdcpp20 @@ -267,6 +272,7 @@ None true Guard + stdcpp20 @@ -283,6 +289,7 @@ Guard true true + stdcpp20 @@ -299,6 +306,7 @@ Guard true true + stdcpp20 @@ -313,6 +321,7 @@ true Guard true + stdcpp20 diff --git a/Source/MediaInfo/Audio/File_Aac.cpp b/Source/MediaInfo/Audio/File_Aac.cpp index 2c59c124e..dc5260764 100644 --- a/Source/MediaInfo/Audio/File_Aac.cpp +++ b/Source/MediaInfo/Audio/File_Aac.cpp @@ -126,6 +126,7 @@ void File_Aac::Streams_Accept() case Mode_ADTS : if (!IsSub) TestContinuousFileNames(); + break; default : ; } if (Frame_Count_NotParsedIncluded==(int64u)-1) diff --git a/Source/MediaInfo/Audio/File_Aac_GeneralAudio_Sbr.cpp b/Source/MediaInfo/Audio/File_Aac_GeneralAudio_Sbr.cpp index 1949e0893..40bbf3f65 100644 --- a/Source/MediaInfo/Audio/File_Aac_GeneralAudio_Sbr.cpp +++ b/Source/MediaInfo/Audio/File_Aac_GeneralAudio_Sbr.cpp @@ -893,7 +893,7 @@ bool Aac_f_master_Compute(int8u &num_env_bands_Master, int8u* f_Master, sbr_hand } int8u numBands0=2*Aac_bands_Compute(false, bands, k0, k1, divisor); - if (numBands0 == 0 || numBands0 >= 64) + if (numBands0 <= 0 || numBands0 >= 64) return false; int8u vDk0[64]; diff --git a/Source/MediaInfo/Audio/File_Aac_Main.cpp b/Source/MediaInfo/Audio/File_Aac_Main.cpp index 36d06dacf..d78742580 100644 --- a/Source/MediaInfo/Audio/File_Aac_Main.cpp +++ b/Source/MediaInfo/Audio/File_Aac_Main.cpp @@ -723,6 +723,7 @@ void File_Aac::AudioSpecificConfig (size_t End) Frame_Count=(size_t)-1; //Forcing not to parse following data anymore } } + break; default : ; } diff --git a/Source/MediaInfo/Audio/File_Ac4.cpp b/Source/MediaInfo/Audio/File_Ac4.cpp index 6ef5a7e5e..7a200dc5b 100644 --- a/Source/MediaInfo/Audio/File_Ac4.cpp +++ b/Source/MediaInfo/Audio/File_Ac4.cpp @@ -1152,7 +1152,7 @@ void File_Ac4::Streams_Fill() { set::iterator It=IFrames_IsVariable.begin(); size_t Value1=*It; - It++; + ++It; size_t Value2=*It; if (Value1+1==Value2) { @@ -1577,7 +1577,7 @@ void File_Ac4::Streams_Fill() continue; size_t AudioSubstream_Pos=0; std::map::iterator Substream_Type_Item=Substream_Type.begin(); - for (; Substream_Type_Item!=Substream_Type.end() && Substream_Type_Item->first!=GroupInfo.substream_index; Substream_Type_Item++) + for (; Substream_Type_Item!=Substream_Type.end() && Substream_Type_Item->first!=GroupInfo.substream_index; ++Substream_Type_Item) if (Substream_Type_Item->second==Type_Ac4_Substream) AudioSubstream_Pos++; if (Substream_Type_Item==Substream_Type.end()) @@ -1592,7 +1592,7 @@ void File_Ac4::Streams_Fill() Fill(Stream_Audio, 0, (G+" LinkedTo_Substream_Pos/String").c_str(), SubstreamNum.Read()); Fill_SetOptions(Stream_Audio, 0, (G+" LinkedTo_Substream_Pos/String").c_str(), "Y NIN"); } - for (map::iterator Substream_Info=AudioSubstreams.begin(); Substream_Info!=AudioSubstreams.end(); Substream_Info++) + for (map::iterator Substream_Info=AudioSubstreams.begin(); Substream_Info!=AudioSubstreams.end(); ++Substream_Info) { string ChannelMode, ImmersiveStereo; for (size_t g=0; g::iterator Substream_Type_Item=Substream_Type.begin(); Substream_Type_Item!=Substream_Type.end() && Substream_Type_Item->first!=Substream_Info->first; Substream_Type_Item++) + for (std::map::iterator Substream_Type_Item=Substream_Type.begin(); Substream_Type_Item!=Substream_Type.end() && Substream_Type_Item->first!=Substream_Info->first; ++Substream_Type_Item) if (Substream_Type_Item->second==Type_Ac4_Substream) AudioSubstream_Pos++; string S=Ztring(__T("Substream")+Ztring::ToZtring(AudioSubstream_Pos)).To_UTF8(); @@ -1820,7 +1820,7 @@ void File_Ac4::Read_Buffer_Unsynched() bool File_Ac4::Synchronize() { //Synchronizing - size_t Buffer_Offset_Current; + size_t Buffer_Offset_Current{}; while (Buffer_Offset::iterator Substream_Info=AudioSubstreams.begin(); Substream_Info!=AudioSubstreams.end(); Substream_Info++) + for (map::iterator Substream_Info=AudioSubstreams.begin(); Substream_Info!=AudioSubstreams.end(); ++Substream_Info) if (Substream_Info->second.Buffer_Index) NoSkip=true; } @@ -3799,7 +3799,7 @@ void File_Ac4::metadata(audio_substream& AudioSubstream, size_t Substream_Index) Get_SB (b_discard_unknown_payload, "b_discard_unknown_payload"); if (!b_discard_unknown_payload) { - bool b_payload_frame_aligned; + bool b_payload_frame_aligned{}; if (!b_smpoffst) { TEST_SB_GET(b_payload_frame_aligned, "b_payload_frame_aligned"); diff --git a/Source/MediaInfo/Audio/File_Ac4.h b/Source/MediaInfo/Audio/File_Ac4.h index 37f9b11ef..b642eea1e 100644 --- a/Source/MediaInfo/Audio/File_Ac4.h +++ b/Source/MediaInfo/Audio/File_Ac4.h @@ -360,10 +360,12 @@ private : uint8_t* Data_ToDelete=Data; Size=NewOffset; Data=new int8u[Size]; - memcpy(Data, Data_ToDelete, Offset); + if (Data_ToDelete) + memcpy(Data, Data_ToDelete, Offset); delete[] Data_ToDelete; } - memcpy(Data+Offset, BufferToAdd, SizeToAdd); + if (Data+Offset) + memcpy(Data+Offset, BufferToAdd, SizeToAdd); Offset=NewOffset; } diff --git a/Source/MediaInfo/Audio/File_Adm.cpp b/Source/MediaInfo/Audio/File_Adm.cpp index 84cfc3ceb..a97b9425c 100644 --- a/Source/MediaInfo/Audio/File_Adm.cpp +++ b/Source/MediaInfo/Audio/File_Adm.cpp @@ -2141,7 +2141,10 @@ size_t Atmos_zone_Pos(const string& Name, float32* Values) { } string CraftName(const char* Name, bool ID = false) { - return (ID && !strcmp(Name, "Track")) ? "track" : ((Name && Name[0] < 'a' ? "audio" : "") + string(Name)); + if (Name) + return (ID && !strcmp(Name, "Track")) ? "track" : ((Name && Name[0] < 'a' ? "audio" : "") + string(Name)); + else + return ""; } enum class E { @@ -2398,7 +2401,7 @@ class file_adm_private : public tfsxml file_adm_private() { auto OldLocale_Temp = setlocale(LC_NUMERIC, nullptr); - if (*OldLocale_Temp != 'C' || *(OldLocale_Temp + 1)) { + if (OldLocale_Temp && (*OldLocale_Temp != 'C' || *(OldLocale_Temp + 1))) { OldLocale = OldLocale_Temp; setlocale(LC_NUMERIC, "C"); } @@ -2827,6 +2830,8 @@ static void CheckErrors_ID_Additions(file_adm_private* File_Adm_Private, item it }; //--------------------------------------------------------------------------- +#pragma warning( push ) +#pragma warning( disable : 26813 ) //false positive "Use 'bitwise and' to check if a flag is set." static void CheckErrors_formatLabelDefinition(file_adm_private* File_Adm_Private, item item_Type, size_t i, const label_info& label_Info) { const bool IsAtmos = File_Adm_Private->IsAtmos; auto& Item = File_Adm_Private->Items[item_Type].Items[i]; @@ -2892,6 +2897,7 @@ static void CheckErrors_formatLabelDefinition(file_adm_private* File_Adm_Private } } }; +#pragma warning( pop ) //--------------------------------------------------------------------------- static void CheckErrors_Attributes(file_adm_private* File_Adm_Private, item Item_Type, const vector& Attributes_Counts) { @@ -2923,7 +2929,7 @@ static void CheckErrors_Attributes(file_adm_private* File_Adm_Private, item Item break; default: Item.AddError(Error, ':' + CraftName(item_Infos[Item_Type].Name) + to_string(i) + ":" + CraftName(Attribute_Infos[j].Name) + ":" + string(Attribute_Infos[j].Name) + " attribute shall be unique"); - // Fallthrough + [[fallthrough]]; case 1: { Attributes_Present[j] = true; @@ -3027,7 +3033,7 @@ static void CheckErrors_Elements(file_adm_private* File_Adm_Private, item Item_T } else if (Elem.empty() && Item_Type) { #define ITEM_ELEM(A,B) ((A << 8) | B) - switch (ITEM_ELEM(Item_Type, j)) { + switch (ITEM_ELEM(static_cast(Item_Type), j)) { case ITEM_ELEM(item_audioProgrammeReferenceScreen, audioProgrammeReferenceScreen_screenCentrePosition): case ITEM_ELEM(item_audioProgrammeReferenceScreen, audioProgrammeReferenceScreen_screenWidth): case ITEM_ELEM(item_audioBlockFormat, audioBlockFormat_headphoneVirtualise): @@ -3572,7 +3578,7 @@ void audioBlockFormat_Check(file_adm_private* File_Adm_Private) { BlockFormat.AddError(Error, ":GeneralCompliance:jumpPosition subelement count " + to_string(jumpPositions.size()) + " is not permitted, max is 1", Source_Atmos_1_0); break; } - // Fallthrough + [[fallthrough]]; case 1: switch (Type) { case Type_Objects: { @@ -5482,7 +5488,7 @@ void File_Adm::Streams_Fill() IsAdvSSE = true; IsAdvSSE_Versions.push_back(strtoul(Profile_Item.Attributes[profile_profileVersion].c_str(), nullptr, 10)); IsAdvSSE_Levels.push_back(strtoul(Profile_Item.Attributes[profile_profileLevel].c_str(), nullptr, 10)); - if (IsAdvSSE_Levels.back() > 2 && (Profile == "ITU-R BS.[ADM-NGA-EMISSION]-0" || Profile == "ITU-R BS.[ADM-NGA-EMISSION]-0")) { + if (IsAdvSSE_Levels.back() > 2 && (Profile == "ITU-R BS.[ADM-NGA-EMISSION]-0")) { Profiles.back().AddError(Error, ':' + CraftName(item_Infos[item_profile].Name) + to_string(i) + ":profileLevel:profileLevel attribute value " + Profile_Item.Attributes[profile_profileLevel] + " is not permitted, max is 2", Source_AdvSSE_1); } } diff --git a/Source/MediaInfo/Audio/File_ChannelGrouping.cpp b/Source/MediaInfo/Audio/File_ChannelGrouping.cpp index 2b4aca55e..b941804b0 100644 --- a/Source/MediaInfo/Audio/File_ChannelGrouping.cpp +++ b/Source/MediaInfo/Audio/File_ChannelGrouping.cpp @@ -329,7 +329,7 @@ void File_ChannelGrouping::Read_Buffer_Continue() { if (!Common->Parsers[Pos]->Status[IsAccepted] && Common->Parsers[Pos]->Status[IsFinished]) { - delete *(Common->Parsers.begin()+Pos); + delete static_cast(*(Common->Parsers.begin()+Pos)); Common->Parsers.erase(Common->Parsers.begin()+Pos); Pos--; } @@ -339,7 +339,7 @@ void File_ChannelGrouping::Read_Buffer_Continue() for (size_t Pos2=0; Pos2Parsers.size(); Pos2++) { if (Pos2!=Pos) - delete *(Common->Parsers.begin()+Pos2); + delete static_cast(*(Common->Parsers.begin()+Pos2)); } Common->Parsers.clear(); Common->Parsers.push_back(Parser); diff --git a/Source/MediaInfo/Audio/File_ChannelSplitting.cpp b/Source/MediaInfo/Audio/File_ChannelSplitting.cpp index 0db41d756..03b475a86 100644 --- a/Source/MediaInfo/Audio/File_ChannelSplitting.cpp +++ b/Source/MediaInfo/Audio/File_ChannelSplitting.cpp @@ -430,7 +430,7 @@ void File_ChannelSplitting::Read_Buffer_Continue_Parse() } if (!SplittedChannel->Parsers[Pos]->Status[IsAccepted] && SplittedChannel->Parsers[Pos]->Status[IsFinished]) { - delete *(SplittedChannel->Parsers.begin()+Pos); + delete static_cast(*(SplittedChannel->Parsers.begin()+Pos)); SplittedChannel->Parsers.erase(SplittedChannel->Parsers.begin()+Pos); Pos--; } @@ -443,7 +443,7 @@ void File_ChannelSplitting::Read_Buffer_Continue_Parse() for (size_t Pos2=0; Pos2Parsers.size(); Pos2++) { if (Pos2!=Pos) - delete *(SplittedChannel->Parsers.begin()+Pos2); + delete static_cast(*(SplittedChannel->Parsers.begin()+Pos2)); } SplittedChannel->Parsers.clear(); SplittedChannel->Parsers.push_back(Parser); diff --git a/Source/MediaInfo/Audio/File_Dat.cpp b/Source/MediaInfo/Audio/File_Dat.cpp index 501ce8ab8..2f6d6dcd4 100644 --- a/Source/MediaInfo/Audio/File_Dat.cpp +++ b/Source/MediaInfo/Audio/File_Dat.cpp @@ -401,7 +401,7 @@ void File_Dat::Data_Parse() } Frame.dtsubid_pno = pno; } - if (dataid || numpacks >= 8 || numpacks >= 8 || !pno_IsValid) { + if (dataid || numpacks >= 8 || !pno_IsValid) { Trusted_IsNot("dtsubid"); } Element_End0(); @@ -536,7 +536,7 @@ void File_Dat::Data_Parse() Previous = Priv->Frame_Last.TCs[i]; Previous.SetFramesMax(Frame.TCs[i].GetFramesMax()); Ref = Previous; - Ref++; + ++Ref; } int32u Value = 0; Value |= (int32u)Frame.TCs[i].ToSeconds() << 8; diff --git a/Source/MediaInfo/Audio/File_DolbyE.cpp b/Source/MediaInfo/Audio/File_DolbyE.cpp index 7ce8c9d9b..c0086319a 100644 --- a/Source/MediaInfo/Audio/File_DolbyE.cpp +++ b/Source/MediaInfo/Audio/File_DolbyE.cpp @@ -2388,7 +2388,7 @@ void File_DolbyE::program_assignment() { bool b_standard_chan_assign; Get_SB (b_standard_chan_assign, "b_standard_chan_assign"); - int32u nonstd_bed_channel_assignment_mask; + int32u nonstd_bed_channel_assignment_mask{}; if (b_standard_chan_assign) { int16u bed_channel_assignment_mask; diff --git a/Source/MediaInfo/Audio/File_Dts.cpp b/Source/MediaInfo/Audio/File_Dts.cpp index 3ca65062d..a9b870f55 100644 --- a/Source/MediaInfo/Audio/File_Dts.cpp +++ b/Source/MediaInfo/Audio/File_Dts.cpp @@ -956,13 +956,20 @@ void File_Dts_Common::FileHeader_Parse() //https://www.atsc.org/wp-content/uploads/2015/03/Non-Real-Time-Content-Delivery.pdf if (IsSub || CC8(Buffer)!=CHUNK_DTSHDHDR || CC4(Buffer+8)) return; - int64u StreamSize=-1; - int16u Bitw_Stream_Metadata; - bool Header_Parsed=false; - int64u Num_Samples_Orig_Audio_At_Max_Fs=0; - int32u Num_Frames_Total, TimeStamp, Max_Sample_Rate_Hz=0, Ext_Ss_Avg_Bit_Rate_Kbps=0, Ext_Ss_Peak_Bit_Rate_Kbps=0; - int16u Core_Ss_Bit_Rate_Kbps=0, Samples_Per_Frame_At_Max_Fs=0, Codec_Delay_At_Max_Fs=0; - int8u RefClockCode, TC_Frame_Rate=-1; + int64u StreamSize{ static_cast(-1) }; + int16u Bitw_Stream_Metadata{}; + bool Header_Parsed{ false }; + int64u Num_Samples_Orig_Audio_At_Max_Fs{ 0 }; + int32u Num_Frames_Total{}; + int32u TimeStamp{}; + int32u Max_Sample_Rate_Hz{ 0 }; + int32u Ext_Ss_Avg_Bit_Rate_Kbps{ 0 }; + int32u Ext_Ss_Peak_Bit_Rate_Kbps{ 0 }; + int16u Core_Ss_Bit_Rate_Kbps{ 0 }; + int16u Samples_Per_Frame_At_Max_Fs{ 0 }; + int16u Codec_Delay_At_Max_Fs{ 0 }; + int8u RefClockCode{}; + int8u TC_Frame_Rate{ static_cast(-1) }; while (StreamSize==-1 && Element_Size-Element_Offset>=16) { int64u Name, Size; diff --git a/Source/MediaInfo/Audio/File_Flac.cpp b/Source/MediaInfo/Audio/File_Flac.cpp index 790ad973e..2fec46a80 100644 --- a/Source/MediaInfo/Audio/File_Flac.cpp +++ b/Source/MediaInfo/Audio/File_Flac.cpp @@ -159,7 +159,7 @@ void File_Flac::Data_Parse() CASE_INFO(CUESHEET); CASE_INFO(PICTURE); case (int8u)-1: Element_Name("Frame"); - // Fallthrough + [[fallthrough]]; default : Skip_XX(Element_Size, "Data"); } diff --git a/Source/MediaInfo/Audio/File_Opus.cpp b/Source/MediaInfo/Audio/File_Opus.cpp index e26eae855..bbf04cc5b 100644 --- a/Source/MediaInfo/Audio/File_Opus.cpp +++ b/Source/MediaInfo/Audio/File_Opus.cpp @@ -160,7 +160,7 @@ void File_Opus::Identification() case 0 : // Mono/Stereo if (ch_count>2) break; // Not in spec - // else it is as Vorbis specs, no break + [[fallthrough]]; // else it is as Vorbis specs, no break case 1 : // Vorbis order if (ch_count && ch_count<=Opus_ChannelLayout_Max) { @@ -174,6 +174,7 @@ void File_Opus::Identification() if (ChannelLayout2!=Retrieve(Stream_Audio, 0, Audio_ChannelLayout)) Fill(Stream_Audio, 0, Audio_ChannelLayout, ChannelLayout2); } + break; default: ; //Unknown } diff --git a/Source/MediaInfo/Audio/File_Usac.cpp b/Source/MediaInfo/Audio/File_Usac.cpp index 9e2246d48..ebbe45371 100644 --- a/Source/MediaInfo/Audio/File_Usac.cpp +++ b/Source/MediaInfo/Audio/File_Usac.cpp @@ -1896,7 +1896,7 @@ void File_Usac::Streams_Finish_Conformance() auto& Conformance_Total = ConformanceErrors_Total[Level]; if (Conformance_Total.empty()) continue; - for (size_t i = Conformance_Total.size() - 1; i < Conformance_Total.size(); i--) { + for (size_t i = Conformance_Total.size(); i-- > 0;) { if (!CheckIf(Conformance_Total[i].Flags)) { Conformance_Total.erase(Conformance_Total.begin() + i); } @@ -2406,7 +2406,7 @@ void File_Usac::UsacDecoderConfig() bool AccrossCpe = false; for (size_t i = 0 ; i < C.usacElements.size(); i++) { - auto usacElement = C.usacElements[i]; + auto& usacElement = C.usacElements[i]; switch (usacElement.usacElementType) { case ID_USAC_SCE : ChannelCount_NonLfe++; break; @@ -2465,7 +2465,7 @@ void File_Usac::UsacDecoderConfig() channelConfiguration_Orders_Pos = channelConfiguration_Orders_Max; channelConfiguration_Orders_Max = channelConfiguration_Orders[i]; auto channelConfiguration_Orders_Base = channelConfiguration_Orders + Aac_Channels_Size_Usac; - for (auto usacElement : C.usacElements) + for (auto& usacElement : C.usacElements) { if (usacElement.usacElementType >= ID_USAC_EXT) continue; @@ -2477,14 +2477,14 @@ void File_Usac::UsacDecoderConfig() if (!IsNotMatch) { string ActualOrder; - for (auto usacElement : C.usacElements) + for (auto& usacElement : C.usacElements) { if (usacElement.usacElementType >= ID_USAC_EXT) continue; ActualOrder += usacElementType_IdNames[usacElement.usacElementType]; ActualOrder += ' '; } - ActualOrder.pop_back(); + if (!ActualOrder.empty()) ActualOrder.pop_back(); Fill_Conformance("UsacConfig channelConfigurationIndex", ("channelConfigurationIndex " + to_string(C.channelConfigurationIndex) + " is used but the usacElementType sequence contains " + ActualOrder + ", which is the configuration indicated by channelConfigurationIndex " + to_string(i)).c_str(), bitset8(), Warning); break; } @@ -2501,16 +2501,16 @@ void File_Usac::UsacDecoderConfig() ExpectedOrder += usacElementType_IdNames[channelConfiguration_Orders_Base[channelConfiguration_Orders_Pos]]; ExpectedOrder += ' '; } - ExpectedOrder.pop_back(); + if (!ExpectedOrder.empty()) ExpectedOrder.pop_back(); string ActualOrder; - for (auto usacElement : C.usacElements) + for (auto& usacElement : C.usacElements) { if (usacElement.usacElementType >= ID_USAC_EXT) continue; ActualOrder += usacElementType_IdNames[usacElement.usacElementType]; ActualOrder += ' '; } - ActualOrder.pop_back(); + if (!ActualOrder.empty()) ActualOrder.pop_back(); Fill_Conformance("UsacConfig channelConfigurationIndex", ("channelConfigurationIndex " + to_string(C.channelConfigurationIndex) + " implies element order " + ExpectedOrder + " but actual element order is " + ActualOrder).c_str()); } #endif @@ -2902,6 +2902,7 @@ void File_Usac::uniDrcConfigExtension() default: Skip_BS(bitSize, "Unknown"); } + #pragma warning (suppress : 6385) //Visual Studio fail to detect 'uniDrcConfigExtType(SamplingRate)<<(3*dsf))/8/1000; float32 CompressionRatio=((float32)UncompressedSize)/CompressedSize; Fill(Stream_Audio, 0, Audio_StreamSize, CompressedSize, 3, true); Fill(Stream_Audio, 0, Audio_Duration, Duration, 10, true); @@ -576,7 +576,7 @@ void File_Wvpk::Data_Parse_Fill() { Fill(Stream_Audio, StreamPos_Last, Audio_SamplingRate, (Wvpk_SamplingRate[SamplingRate_Index]< this is a valid value - Fill(Stream_Audio, 0, Audio_Duration, ((int64u)total_samples_FirstFrame)*1000/(Wvpk_SamplingRate[SamplingRate_Index]<1 || Audio_Count>1 diff --git a/Source/MediaInfo/ExternalCommandHelpers.cpp b/Source/MediaInfo/ExternalCommandHelpers.cpp index b11e807c1..411eceb59 100644 --- a/Source/MediaInfo/ExternalCommandHelpers.cpp +++ b/Source/MediaInfo/ExternalCommandHelpers.cpp @@ -159,8 +159,8 @@ int External_Command_Run(const Ztring& Command, const ZtringList& Arguments, Ztr { if (!CreatePipe(&StdErrRead, &StdErrWrite, &Attrs, 0)) { - CloseHandle(StdOutWrite); - CloseHandle(StdOutRead); + if (StdOutWrite) CloseHandle(StdOutWrite); + if (StdOutRead) CloseHandle(StdOutRead); return -1; } } @@ -182,15 +182,15 @@ int External_Command_Run(const Ztring& Command, const ZtringList& Arguments, Ztr if (!CreateProcessW(nullptr, (LPWSTR)CommandLine.Read().To_Unicode().c_str(), nullptr, nullptr, TRUE, CREATE_NO_WINDOW, nullptr, nullptr, &StartupInfo, &ProcessInfo)) { - CloseHandle(StdOutWrite); - CloseHandle(StdOutRead); - CloseHandle(StdErrWrite); - CloseHandle(StdErrRead); + if (StdOutWrite) CloseHandle(StdOutWrite); + if (StdOutRead) CloseHandle(StdOutRead); + if (StdErrWrite) CloseHandle(StdErrWrite); + if (StdErrRead) CloseHandle(StdErrRead); return -1; } - CloseHandle(StdOutWrite); - CloseHandle(StdErrWrite); + if (StdOutWrite) CloseHandle(StdOutWrite); + if (StdErrWrite) CloseHandle(StdErrWrite); char Buf[128]; if (StdOut) @@ -214,8 +214,8 @@ int External_Command_Run(const Ztring& Command, const ZtringList& Arguments, Ztr } } - CloseHandle(StdOutRead); - CloseHandle(StdErrRead); + if (StdOutRead) CloseHandle(StdOutRead); + if (StdErrRead) CloseHandle(StdErrRead); WaitForSingleObject(ProcessInfo.hProcess, INFINITE); GetExitCodeProcess(ProcessInfo.hProcess, &ExitCode); diff --git a/Source/MediaInfo/File__Analyze.cpp b/Source/MediaInfo/File__Analyze.cpp index e5367350b..819304c2e 100644 --- a/Source/MediaInfo/File__Analyze.cpp +++ b/Source/MediaInfo/File__Analyze.cpp @@ -266,7 +266,7 @@ string BuildConformanceName(const string& ParserName, const char* Prefix, const } if (Suffix) { Result += Suffix; - if (Result.empty() && Result.back() >= '0' && Result.back() <= '9') { + if (!Result.empty() && Result.back() >= '0' && Result.back() <= '9') { Result += '_'; } } @@ -362,7 +362,7 @@ void conformance::Streams_Finish_Conformance() auto& Conformance_Total = ConformanceErrors_Total[Level]; if (Conformance_Total.empty()) continue; - for (size_t i = Conformance_Total.size() - 1; i < Conformance_Total.size(); i--) { + for (size_t i = Conformance_Total.size(); i-- > 0;) { if (!CheckIf(Conformance_Total[i].Flags)) { Conformance_Total.erase(Conformance_Total.begin() + i); } @@ -397,7 +397,7 @@ void conformance::Streams_Finish_Conformance() size_t Frames_HasContent, Times_HasContent, Offsets_HasContent; Frames_HasContent = Times_HasContent = Offsets_HasContent = Pos_Total; for (size_t i = 0; i < Pos_Total; i++) { - auto FramePos = ConformanceError.FramePoss[i]; + auto& FramePos = ConformanceError.FramePoss[i]; if (FramePos.Frame_Count_Min == (int64u)-2) { Frames += "conf"; } @@ -1829,6 +1829,7 @@ size_t File__Analyze::Read_Buffer_Seek_OneFramePerFile (size_t Method, int64u Va if (Config->Demux_Rate_Get()==0) return (size_t)-1; //Not supported Value=float64_int64s(((float64)Value)/1000000000*Config->Demux_Rate_Get()); + return 1; #else //MEDIAINFO_DEMUX return (size_t)-1; //Not supported #endif //MEDIAINFO_DEMUX diff --git a/Source/MediaInfo/File__Analyze_Buffer.cpp b/Source/MediaInfo/File__Analyze_Buffer.cpp index 016262bcf..2ae4b9774 100644 --- a/Source/MediaInfo/File__Analyze_Buffer.cpp +++ b/Source/MediaInfo/File__Analyze_Buffer.cpp @@ -1440,6 +1440,7 @@ void File__Analyze::Get_VL(const vlc Vlc[], size_t &Info, const char* Name) if (BS->GetB()) Value++; CountOfBits++; + break; case 0 : ; } diff --git a/Source/MediaInfo/File__Analyze_Streams.cpp b/Source/MediaInfo/File__Analyze_Streams.cpp index 36f28180a..cd653d384 100644 --- a/Source/MediaInfo/File__Analyze_Streams.cpp +++ b/Source/MediaInfo/File__Analyze_Streams.cpp @@ -68,7 +68,7 @@ inline void add_dec_2chars(string& In, uint8_t Value) Value=(uint8_t)Value100.rem; In+='0'+Value100.quot; } - In.append(add_dec_cache+(Value<<1), 2); + In.append(add_dec_cache+((size_t)Value<<1), 2); } //--------------------------------------------------------------------------- @@ -98,7 +98,7 @@ bool DateTime_Adapt(string& Value_) IsUtc = false; // Unix style - if (Value.size() < 4) + if (Value.size() < 5) return false; if (Value[4]!='-') { @@ -583,7 +583,7 @@ void File__Analyze::dvcC(bool has_dependency_pid, std::map* } string Layers; - if (rpu_present_flag|el_present_flag|bl_present_flag) + if (rpu_present_flag||el_present_flag||bl_present_flag) { if (bl_present_flag) Layers +="BL+"; @@ -665,7 +665,7 @@ void File__Analyze::Get_LightLevel(Ztring &MaxCLL, Ztring &MaxFALL, int32u Divis size_t File__Analyze::Stream_Prepare (stream_t KindOfStream, size_t StreamPos) { //Integrity - if (KindOfStream>Stream_Max) + if (KindOfStream<0 || KindOfStream>Stream_Max) return Error; //Clear @@ -1000,7 +1000,7 @@ void File__Analyze::Fill (stream_t StreamKind, size_t StreamPos, size_t Paramete "ContainerExtra", }; assert(sizeof(SourceValue)==StreamSource_Max*sizeof(const char*)); - if (StreamKind==Stream_Video && ShowSource_IsInList((video)Parameter) && StreamSource=0 && StreamSource=(*Stream)[StreamKind].size()) { size_t StreamKindS=(size_t)StreamKind; - if (StreamKind!=Stream_Max) + if (StreamKind>=0 && StreamKind!=Stream_Max) { //Stream kind is found, moving content for (size_t Pos=0; Pos=(*Stream)[StreamKind].size()) { size_t StreamKindS=(size_t)StreamKind; - if (StreamKind!=Stream_Max) + if (StreamKind>=0 && StreamKind!=Stream_Max) { //Stream kind is found, moving content for (size_t Pos=0; Pos=(*Stream)[StreamKind].size()) + if (StreamKind>=0 && (StreamKind==Stream_Max || StreamPos>=(*Stream)[StreamKind].size())) { Fill_Temp_Options[StreamKind][Parameter]=Options; return; //No streams @@ -3098,21 +3098,18 @@ void File__Analyze::Duration_Duration123(stream_t StreamKind, size_t StreamPos, if (FrameRateF>=FrameRateF_Min && FrameRateFFile_DefaultTimeCodeDropFrame_Get()) - { - case 0 : - DropFrame=false; - break; - default: - DropFrame=true; - } - #else //MEDIAINFO_ADVANCED - DropFrame=true; - #endif //MEDIAINFO_ADVANCED - } + #if MEDIAINFO_ADVANCED + switch (Config->File_DefaultTimeCodeDropFrame_Get()) + { + case 0 : + DropFrame=false; + break; + default: + DropFrame=true; + } + #else //MEDIAINFO_ADVANCED + DropFrame=true; + #endif //MEDIAINFO_ADVANCED } else DropFrame=false; diff --git a/Source/MediaInfo/File__Analyze_Streams_Finish.cpp b/Source/MediaInfo/File__Analyze_Streams_Finish.cpp index 3d70aaa93..a9fc2650a 100644 --- a/Source/MediaInfo/File__Analyze_Streams_Finish.cpp +++ b/Source/MediaInfo/File__Analyze_Streams_Finish.cpp @@ -931,7 +931,7 @@ void File__Analyze::Streams_Finish_StreamOnly(stream_t StreamKind, size_t Pos) const auto& Item=List[i]; if (HI_ME_Pos==(size_t)-1 && (Item==HI_ME_Text || Item==VI_ME_Text)) HI_ME_Pos=i; - if (HI_D_Pos==(size_t)-1 && (Item==HI_D_Text || Item==HI_D_Text)) + if (HI_D_Pos==(size_t)-1 && (Item==HI_D_Text || Item==VI_D_Text)) HI_D_Pos=i; } if (HI_ME_Pos!=(size_t)-1 && HI_D_Pos!=(size_t)-1) @@ -1153,7 +1153,7 @@ void File__Analyze::Streams_Finish_StreamOnly_Video(size_t Pos) { case Video_HDR_Format_Version: Summary[j]+=__T(", Version "); break; case Video_HDR_Format_Level: Summary[j]+=__T('.'); break; - case Video_HDR_Format_Compression: ToAdd[j][0]+=0x20; if (ToAdd[j].size()==4) ToAdd[j].resize(2); ToAdd[j]+=__T(" metadata compression"); // Fallthrough + case Video_HDR_Format_Compression: ToAdd[j][0]+=0x20; if (ToAdd[j].size()==4) ToAdd[j].resize(2); ToAdd[j]+=__T(" metadata compression"); [[fallthrough]]; default: Summary[j] += __T(", "); } Summary[j]+=ToAdd[j]; diff --git a/Source/MediaInfo/HashWrapper.h b/Source/MediaInfo/HashWrapper.h index 59f9665c6..9b4bc5c34 100644 --- a/Source/MediaInfo/HashWrapper.h +++ b/Source/MediaInfo/HashWrapper.h @@ -64,7 +64,7 @@ class HashWrapper void Update (const int8u* Buffer, const size_t Buffer_Size); string Generate (const HashFunction Function); - static string Generate (const HashFunction Function, const int8u* Buffer, const size_t Buffer_Size) {return HashWrapper(1<(1)<=InfoCodecID_Format_Max || KindOfStream>=Stream_Max) + if (Format>=InfoCodecID_Format_Max || Format<0 || KindOfStream>=Stream_Max || KindOfStream<0) return EmptyString_Get(); { CriticalSectionLocker CSL(CS); @@ -2957,7 +2957,7 @@ const Ztring &MediaInfo_Config::CodecID_Get (stream_t KindOfStream, infocodecid_ //--------------------------------------------------------------------------- const Ztring &MediaInfo_Config::Library_Get (infolibrary_format_t Format, const Ztring &Value, infolibrary_t KindOfLibraryInfo) { - if (Format>=InfoLibrary_Format_Max) + if (Format>=InfoLibrary_Format_Max || Format<0) return EmptyString_Get(); { CriticalSectionLocker CSL(CS); @@ -3039,7 +3039,7 @@ const Ztring MediaInfo_Config::Iso639_Translate (const Ztring &Value) void MediaInfo_Config::Language_Set_Internal(stream_t KindOfStream) { //Loading codec table if not yet done - if (KindOfStream=0 && KindOfStream=Stream_Max) + if (KindOfStream<0 || KindOfStream>=Stream_Max) return EmptyString_Get(); size_t Pos=Info[KindOfStream].Find(Value); if (Pos==Error || (size_t)KindOfInfo>=Info[KindOfStream][Pos].size()) @@ -3069,7 +3069,7 @@ const Ztring &MediaInfo_Config::Info_Get (stream_t KindOfStream, size_t Pos, inf { Language_Set_All(KindOfStream); - if (KindOfStream>=Stream_Max) + if (KindOfStream<0 || KindOfStream>=Stream_Max) return EmptyString_Get(); if (Pos>=Info[KindOfStream].size() || (size_t)KindOfInfo>=Info[KindOfStream][Pos].size()) return EmptyString_Get(); @@ -3078,7 +3078,7 @@ const Ztring &MediaInfo_Config::Info_Get (stream_t KindOfStream, size_t Pos, inf const ZtringListList &MediaInfo_Config::Info_Get(stream_t KindOfStream) { - if (KindOfStream>=Stream_Max) + if (KindOfStream<0 || KindOfStream>=Stream_Max) return EmptyStringListList_Get(); Language_Set_All(KindOfStream); diff --git a/Source/MediaInfo/MediaInfo_Config.h b/Source/MediaInfo/MediaInfo_Config.h index 0e97e3507..f5515f8e3 100644 --- a/Source/MediaInfo/MediaInfo_Config.h +++ b/Source/MediaInfo/MediaInfo_Config.h @@ -230,10 +230,10 @@ public : Ztring Input_Compressed_Get(); #endif //MEDIAINFO_COMPRESS #if MEDIAINFO_FLAG1 - bool Flags1_Get(config_flags1 Flag) { return Flags1&(1 << Flag); } + bool Flags1_Get(config_flags1 Flag) { return Flags1&(static_cast(1) << Flag); } #endif //MEDIAINFO_FLAGX #if MEDIAINFO_FLAGX - bool FlagsX_Get(config_flagsX Flag) { return FlagsX&(1 << Flag); } + bool FlagsX_Get(config_flagsX Flag) { return FlagsX&(static_cast(1) << Flag); } #endif //MEDIAINFO_FLAGX const Ztring &Format_Get (const Ztring &Value, infoformat_t KindOfFormatInfo=InfoFormat_Name); diff --git a/Source/MediaInfo/MediaInfo_Config_MediaInfo.cpp b/Source/MediaInfo/MediaInfo_Config_MediaInfo.cpp index c0a61af70..7bbe75457 100644 --- a/Source/MediaInfo/MediaInfo_Config_MediaInfo.cpp +++ b/Source/MediaInfo/MediaInfo_Config_MediaInfo.cpp @@ -3689,19 +3689,19 @@ Ztring MediaInfo_Config_MediaInfo::File_ProbeCaption_Set (const Ztring& NewValue { case 'E': Value_Int <<= 10; - // Fall through + [[fallthrough]]; case 'P': Value_Int <<= 10; - // Fall through + [[fallthrough]]; case 'T': Value_Int <<= 10; - // Fall through + [[fallthrough]]; case 'G': Value_Int <<= 10; - // Fall through + [[fallthrough]]; case 'M': Value_Int <<= 10; - // Fall through + [[fallthrough]]; default: Value_Int <<= 10; } @@ -3774,7 +3774,7 @@ config_probe MediaInfo_Config_MediaInfo::File_ProbeCaption_Get(const string& Par return {}; const auto& Item = File_ProbeCaption[File_ProbeCaption_Pos]; File_ProbeCaption_Pos++; - if (Item.Parser.empty()) { + if (!Item.Parser.empty()) { if (Item.Parser[0] == '-') { if (Item.Parser.rfind(ParserName, 1) == 1) { continue; diff --git a/Source/MediaInfo/MediaInfo_Inform.cpp b/Source/MediaInfo/MediaInfo_Inform.cpp index 7b550dabb..de063eafd 100644 --- a/Source/MediaInfo/MediaInfo_Inform.cpp +++ b/Source/MediaInfo/MediaInfo_Inform.cpp @@ -638,7 +638,7 @@ namespace { struct nested { - std::vector* Target; + std::vector* Target{}; Ztring Name; }; } diff --git a/Source/MediaInfo/Multiple/File_Bdmv.cpp b/Source/MediaInfo/Multiple/File_Bdmv.cpp index 6a548ad78..8374936c0 100644 --- a/Source/MediaInfo/Multiple/File_Bdmv.cpp +++ b/Source/MediaInfo/Multiple/File_Bdmv.cpp @@ -1542,6 +1542,7 @@ void File_Bdmv::Mpls_ExtensionData_SubPath_entries() for (int8u Pos=0; Pos1 && !AbstBf_Current_Weighted.StoredValues.empty()) { //Difficult to trust one value other another one, we use the smallest trustable stored value - for (set::iterator StoredValue=AbstBf_Current_Weighted.StoredValues.begin(); ; StoredValue++) + for (set::iterator StoredValue=AbstBf_Current_Weighted.StoredValues.begin(); ; ++StoredValue) if (abst<=*StoredValue) { abst=*StoredValue; AbstBf_Current_MaxAbst=abst; - for (; StoredValue!=AbstBf_Current_Weighted.StoredValues.end(); StoredValue++) + for (; StoredValue!=AbstBf_Current_Weighted.StoredValues.end(); ++StoredValue) { if (*StoredValue>=(abst+(DSF?12:10)*(FSC_WasSet?2:1)*2)) //Max 2x the expected gap break; @@ -1422,8 +1422,7 @@ void File_DvDif::Errors_Stats_Update() #if MEDIAINFO_EVENTS Event.Arb|=1<<7; #endif //MEDIAINFO_EVENTS - if (Speed_Arb_Current.Value!=0xF) - Arb_AreDetected=true; + Arb_AreDetected=true; Speed_Arb_Current_Theory.IsValid=false; } diff --git a/Source/MediaInfo/Multiple/File_Gxf.cpp b/Source/MediaInfo/Multiple/File_Gxf.cpp index e686643e6..c1af5ad42 100644 --- a/Source/MediaInfo/Multiple/File_Gxf.cpp +++ b/Source/MediaInfo/Multiple/File_Gxf.cpp @@ -713,7 +713,7 @@ size_t File_Gxf::Read_Buffer_Seek (size_t Method, int64u Value, int64u) else Value=float64_int64s(((float64)(Value-Delay))/1000000000*Gxf_FrameRate(Streams[0x00].FrameRate_Code)); } - //No break; + [[fallthrough]]; case 3 : //FrameNumber { if (Seeks.empty()) @@ -1482,7 +1482,7 @@ void File_Gxf::media() { if (!Streams[TrackNumber].Parsers[Pos]->Status[IsAccepted] && Streams[TrackNumber].Parsers[Pos]->Status[IsFinished]) { - delete *(Streams[TrackNumber].Parsers.begin()+Pos); + delete static_cast(*(Streams[TrackNumber].Parsers.begin()+Pos)); Streams[TrackNumber].Parsers.erase(Streams[TrackNumber].Parsers.begin()+Pos); Pos--; } @@ -1492,7 +1492,7 @@ void File_Gxf::media() for (size_t Pos2=0; Pos2(*(Streams[TrackNumber].Parsers.begin()+Pos2)); } Streams[TrackNumber].Parsers.clear(); Streams[TrackNumber].Parsers.push_back(Parser); diff --git a/Source/MediaInfo/Multiple/File_Lxf.cpp b/Source/MediaInfo/Multiple/File_Lxf.cpp index 480eafcc5..f367e6cfd 100644 --- a/Source/MediaInfo/Multiple/File_Lxf.cpp +++ b/Source/MediaInfo/Multiple/File_Lxf.cpp @@ -1552,7 +1552,7 @@ void File_Lxf::Audio_Stream(size_t Pos) { if (!Audios[Pos].Parsers[Pos2]->Status[IsAccepted] && Audios[Pos].Parsers[Pos2]->Status[IsFinished]) { - delete *(Audios[Pos].Parsers.begin()+Pos2); + delete static_cast(*(Audios[Pos].Parsers.begin()+Pos2)); Audios[Pos].Parsers.erase(Audios[Pos].Parsers.begin()+Pos2); Pos2--; } @@ -1562,7 +1562,7 @@ void File_Lxf::Audio_Stream(size_t Pos) for (size_t Pos3=0; Pos3(*(Audios[Pos].Parsers.begin()+Pos3)); } Audios[Pos].Parsers.clear(); Audios[Pos].Parsers.push_back(Parser); @@ -1843,7 +1843,7 @@ void File_Lxf::Video_Stream_2() { if (!Videos[2].Parsers[Pos2]->Status[IsAccepted] && Videos[2].Parsers[Pos2]->Status[IsFinished]) { - delete *(Videos[2].Parsers.begin()+Pos2); + delete static_cast(*(Videos[2].Parsers.begin()+Pos2)); Videos[2].Parsers.erase(Videos[2].Parsers.begin()+Pos2); Pos2--; } @@ -1853,7 +1853,7 @@ void File_Lxf::Video_Stream_2() for (size_t Pos3=0; Pos3(*(Videos[2].Parsers.begin()+Pos3)); } Videos[2].Parsers.clear(); Videos[2].Parsers.push_back(Parser); diff --git a/Source/MediaInfo/Multiple/File_Mk.cpp b/Source/MediaInfo/Multiple/File_Mk.cpp index f80924360..eb5da2e74 100644 --- a/Source/MediaInfo/Multiple/File_Mk.cpp +++ b/Source/MediaInfo/Multiple/File_Mk.cpp @@ -1439,7 +1439,7 @@ void File_Mk::Read_Buffer_Unsynched() if (!File_GoTo) Element_Level=0; - for (std::map::iterator streamItem=Stream.begin(); streamItem!=Stream.end(); streamItem++) + for (std::map::iterator streamItem=Stream.begin(); streamItem!=Stream.end(); ++streamItem) { if (!File_GoTo) streamItem->second.PacketCount=0; @@ -5361,7 +5361,7 @@ void File_Mk::sei_message_user_data_registered_itu_t_t35_B5_003C_0001_04() Get_B1 (application_version, "application_version"); if (application_version<=1) { - int32u targeted_system_display_maximum_luminance, maxscl[4], distribution_maxrgb_percentiles[16]; + int32u targeted_system_display_maximum_luminance, maxscl[4]{}, distribution_maxrgb_percentiles[16]; int16u fraction_bright_pixels; int8u num_distribution_maxrgb_percentiles, distribution_maxrgb_percentages[16], num_windows, num_bezier_curve_anchors; bool targeted_system_display_actual_peak_luminance_flag, mastering_display_actual_peak_luminance_flag, color_saturation_mapping_flag; diff --git a/Source/MediaInfo/Multiple/File_Mpeg4_Descriptors.cpp b/Source/MediaInfo/Multiple/File_Mpeg4_Descriptors.cpp index 1fbf871bd..e4cb5bafb 100644 --- a/Source/MediaInfo/Multiple/File_Mpeg4_Descriptors.cpp +++ b/Source/MediaInfo/Multiple/File_Mpeg4_Descriptors.cpp @@ -545,7 +545,7 @@ void File_Mpeg4_Descriptors::Data_Parse() void File_Mpeg4_Descriptors::Descriptor_01() { //Parsing - int8u ProfileLevel[5]; + int8u ProfileLevel[5]{}; bool URL_Flag; BS_Begin(); Skip_S2(10, "ObjectDescriptorID"); diff --git a/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp b/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp index 77e7d921d..0e8d5bd01 100644 --- a/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp +++ b/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp @@ -1677,10 +1677,11 @@ void File_Mpeg4::ftyp() #if MEDIAINFO_CONFORMANCE IsCmaf=true; #endif - //fall through + [[fallthrough]]; case Elements::ftyp_dash : if (Config->File_Names.size()==1) TestContinuousFileNames(1, __T("m4s")); + [[fallthrough]]; default : ; } CodecID_Fill(Ztring().From_CC4(MajorBrand), Stream_General, 0, InfoCodecID_Format_Mpeg4); @@ -2177,12 +2178,9 @@ void File_Mpeg4::mdat_xxxx() File_Offset_Next_IsValid=false; } mdat_pos mdat_Pos_New; - if (!mdat_Pos.empty()) - { - for (mdat_Pos_Type* mdat_Pos_Item=&mdat_Pos[0]; mdat_Pos_ItemStreamID!=(int32u)Element_Code) - mdat_Pos_New.push_back(*mdat_Pos_Item); - } + for (mdat_Pos_Type* mdat_Pos_Item=&mdat_Pos[0]; mdat_Pos_ItemStreamID!=(int32u)Element_Code) + mdat_Pos_New.push_back(*mdat_Pos_Item); if (!mdat_Pos_New.empty()) { mdat_Pos=std::move(mdat_Pos_New); @@ -2217,7 +2215,7 @@ void File_Mpeg4::mdat_xxxx() Probe.Start=Probe.Start*100/File_Size; //File pos is not relevant there if (!Probe.Start) Probe.Start=50; - // Fall through + [[fallthrough]]; case config_probe_percent: ProbeCaption_mdatPos=Stream.second.stts_FrameCount*Probe.Start/100; break; @@ -2230,7 +2228,7 @@ void File_Mpeg4::mdat_xxxx() Probe.Duration=Probe.Duration*100/File_Size; //File pos is not relevant there if (!Probe.Duration) Probe.Duration++; - // Fall through + [[fallthrough]]; case config_probe_percent: ProbeCaption_mdatDur=Stream.second.stts_FrameCount*Probe.Duration/100; break; @@ -2289,17 +2287,17 @@ void File_Mpeg4::mdat_xxxx() { if (!Stream_Temp.Parsers[Pos]->Status[IsAccepted] && Stream_Temp.Parsers[Pos]->Status[IsFinished]) { - delete *(Stream_Temp.Parsers.begin()+Pos); + delete static_cast(*(Stream_Temp.Parsers.begin()+Pos)); Stream_Temp.Parsers.erase(Stream_Temp.Parsers.begin()+Pos); Pos--; } - else if (Stream_Temp.Parsers.size()>1 && Stream_Temp.Parsers[Pos]->Status[IsAccepted]) + else if (Stream_Temp.Parsers[Pos]->Status[IsAccepted]) { File__Analyze* Parser=Stream_Temp.Parsers[Pos]; for (size_t Pos2=0; Pos2(*(Stream_Temp.Parsers.begin()+Pos2)); } Stream_Temp.Parsers_Clear(); Stream_Temp.Parsers.push_back(Parser); @@ -2322,14 +2320,9 @@ void File_Mpeg4::mdat_StreamJump() std::map::iterator StreamOffset_Jump_Temp=StreamOffset_Jump.find(File_Offset+Buffer_Offset+Element_Size); if (StreamOffset_Jump_Temp!=StreamOffset_Jump.end()) { - if (!mdat_Pos.empty()) - { - mdat_Pos_Temp=&mdat_Pos[0]; - while (mdat_Pos_TempOffset!=StreamOffset_Jump_Temp->second) - mdat_Pos_Temp++; - } - else - mdat_Pos_Temp=NULL; + mdat_Pos_Temp=&mdat_Pos[0]; + while (mdat_Pos_TempOffset!=StreamOffset_Jump_Temp->second) + mdat_Pos_Temp++; } } #endif // MEDIAINFO_DEMUX @@ -3556,6 +3549,7 @@ void File_Mpeg4::moov_meta_ilst_xxxx_data() //Not normal Kind=0x00; } + [[fallthrough]]; default : ; } @@ -4025,6 +4019,7 @@ void File_Mpeg4::moov_meta_ilst_xxxx_data() Fill(Stream_General, 0, Parameter.c_str(), Value, true); FILLING_END(); } + break; default: ; } } @@ -4405,6 +4400,7 @@ void File_Mpeg4::moov_trak_mdia_hdlr() break; case Elements::moov_trak_mdia_hdlr_MPEG : mdat_MustParse=true; //Data is in MDAT + break; case Elements::moov_trak_mdia_hdlr_alis : //Stream_Prepare(Stream_Other); //Fill(Stream_Other, StreamPos_Last, Other_Type, "Alias"); //TODO: what is the meaning of such hdlr? @@ -5124,7 +5120,7 @@ void File_Mpeg4::moov_trak_mdia_minf_stbl_sgpd() } //Parsing - int32u grouping_type, Count, default_length; + int32u grouping_type, Count, default_length{}; Get_C4 (grouping_type, "grouping_type"); if (Version==1) Get_B4 (default_length, "default_length"); @@ -8105,7 +8101,7 @@ void File_Mpeg4::moov_trak_mdia_minf_stbl_stsd_xxxx_pcmC() if (Streams[moov_trak_tkhd_TrackID].IsPcm) { char EndiannessC=(format_flags&1)?'L':'B'; - std::vector& Parsers=Streams[moov_trak_tkhd_TrackID].Parsers; + const std::vector& Parsers=Streams[moov_trak_tkhd_TrackID].Parsers; for (size_t i=0; i< Parsers.size(); i++) { ((File_Pcm_Base*)Parsers[i])->Endianness=EndiannessC; @@ -8400,7 +8396,7 @@ void File_Mpeg4::moov_trak_mdia_minf_stbl_stsd_xxxx_wave_enda() if (Streams[moov_trak_tkhd_TrackID].IsPcm) { char EndiannessC=Endianness?'L':'B'; - std::vector& Parsers=Streams[moov_trak_tkhd_TrackID].Parsers; + const std::vector& Parsers=Streams[moov_trak_tkhd_TrackID].Parsers; for (size_t i=0; i< Parsers.size(); i++) ((File_Pcm_Base*)Parsers[i])->Endianness=EndiannessC; } @@ -8979,7 +8975,6 @@ void File_Mpeg4::moov_trak_tkhd() FILLING_BEGIN(); //Handle tracks with same ID than a previous track - bool tkhd_SameID=false; std::map::iterator PreviousTrack=Streams.find(moov_trak_tkhd_TrackID); if (PreviousTrack!=Streams.end() && PreviousTrack->second.tkhd_Found) { @@ -9798,7 +9793,7 @@ void File_Mpeg4::moov_udta_thmb() MediaInfo_Internal MI; Ztring Demux_Save = MI.Option(__T("Demux_Get"), __T("")); MI.Option(__T("Demux"), Ztring()); - size_t MiOpenResult = MI.Open(Buffer + (size_t)(Buffer_Offset + Element_Offset), (size_t)(Element_Size - Element_Offset), nullptr, 0, (size_t)(Element_Size - Element_Offset)); + MI.Open(Buffer + (size_t)(Buffer_Offset + Element_Offset), (size_t)(Element_Size - Element_Offset), nullptr, 0, (size_t)(Element_Size - Element_Offset)); MI.Option(__T("Demux"), Demux_Save); //This is a global value, need to reset it. TODO: local value if (MI.Count_Get(Stream_Image)) { diff --git a/Source/MediaInfo/Multiple/File_MpegPs.cpp b/Source/MediaInfo/Multiple/File_MpegPs.cpp index 33640c1c6..72818ea1f 100644 --- a/Source/MediaInfo/Multiple/File_MpegPs.cpp +++ b/Source/MediaInfo/Multiple/File_MpegPs.cpp @@ -4032,6 +4032,7 @@ void File_MpegPs::xxx_stream_Parse(ps_stream &Temp, int8u &stream_Count) Temp.Searching_TimeStamp_Start=false; } } + break; default : ; } @@ -4095,7 +4096,7 @@ void File_MpegPs::xxx_stream_Parse(ps_stream &Temp, int8u &stream_Count) { if (!Temp.Parsers[Pos]->Status[IsAccepted] && Temp.Parsers[Pos]->Status[IsFinished]) { - delete *(Temp.Parsers.begin()+Pos); + delete static_cast(*(Temp.Parsers.begin()+Pos)); Temp.Parsers.erase(Temp.Parsers.begin()+Pos); Pos--; } @@ -4105,7 +4106,7 @@ void File_MpegPs::xxx_stream_Parse(ps_stream &Temp, int8u &stream_Count) for (size_t Pos2=0; Pos2(*(Temp.Parsers.begin()+Pos2)); } Temp.Parsers.clear(); Temp.Parsers.push_back(Parser); diff --git a/Source/MediaInfo/Multiple/File_Mpeg_Descriptors.cpp b/Source/MediaInfo/Multiple/File_Mpeg_Descriptors.cpp index 82edb16af..8e5979f67 100644 --- a/Source/MediaInfo/Multiple/File_Mpeg_Descriptors.cpp +++ b/Source/MediaInfo/Multiple/File_Mpeg_Descriptors.cpp @@ -3266,6 +3266,7 @@ void File_Mpeg_Descriptors::Descriptor_7B() { Complete_Stream->Streams[elementary_PID]->descriptor_tag=0x7B; } + break; default : ; } FILLING_END(); @@ -3304,6 +3305,7 @@ void File_Mpeg_Descriptors::Descriptor_7C() Complete_Stream->Streams[elementary_PID]->descriptor_tag=0x7C; Complete_Stream->Streams[elementary_PID]->Infos["Format_Profile"]=Mpeg_Descriptors_MPEG_4_audio_profile_and_level(Profile_and_level); } + break; default : ; } FILLING_END(); @@ -3497,7 +3499,7 @@ void File_Mpeg_Descriptors::Descriptor_7F_19() { Complete_Stream->Streams[elementary_PID]->StreamKind_FromDescriptor=Stream_Audio; size_t Infos_Pos=0; - for (map::iterator Info=Infos.begin(); Info!=Infos.end(); Info++) + for (map::iterator Info=Infos.begin(); Info!=Infos.end(); ++Info) { string Prefix="Preselection"+Ztring::ToZtring(Info->first).To_UTF8(); if (Info->second.preselection_id!=Infos_Pos) diff --git a/Source/MediaInfo/Multiple/File_Mxf.cpp b/Source/MediaInfo/Multiple/File_Mxf.cpp index ef0901d90..411f67949 100644 --- a/Source/MediaInfo/Multiple/File_Mxf.cpp +++ b/Source/MediaInfo/Multiple/File_Mxf.cpp @@ -2718,7 +2718,7 @@ void File_Mxf::Streams_Finish_Essence(int32u EssenceUID, int128u TrackUID) //Fill(StreamKind_Last, StreamPos_Last, Fill_Parameter(StreamKind_Last, Generic_TimeCode_FirstFrame), TC.ToString().c_str()); //Fill(StreamKind_Last, StreamPos_Last, Fill_Parameter(StreamKind_Last, Generic_TimeCode_Source), "Time code track (stripped)"); } - size_t SDTI_TimeCode_StartTimecode_StreamPos_Last; + size_t SDTI_TimeCode_StartTimecode_StreamPos_Last{}; if (SDTI_TimeCode_StartTimecode.IsSet()) { SDTI_TimeCode_StartTimecode_StreamPos_Last=StreamPos_Last; @@ -2729,7 +2729,7 @@ void File_Mxf::Streams_Finish_Essence(int32u EssenceUID, int128u TrackUID) //Fill(StreamKind_Last, StreamPos_Last, Fill_Parameter(StreamKind_Last, Generic_TimeCode_FirstFrame), SDTI_TimeCode_StartTimecode.c_str()); //Fill(StreamKind_Last, StreamPos_Last, Fill_Parameter(StreamKind_Last, Generic_TimeCode_Source), "SDTI"); } - size_t SystemScheme1_TimeCodeArray_StartTimecode_StreamPos_Last; + size_t SystemScheme1_TimeCodeArray_StartTimecode_StreamPos_Last{}; if (!SystemScheme1s.empty() && !SystemScheme1s.begin()->second.TimeCodeArray_StartTimecodes.empty()) { SystemScheme1_TimeCodeArray_StartTimecode_StreamPos_Last=StreamPos_Last; @@ -4034,7 +4034,7 @@ void File_Mxf::Streams_Finish_Component_ForTimeCode(const int128u ComponentUID, TimeCode TC2=Component_TC2->second.MxfTimeCode.RoundedTimecodeBase<0x8000?TimeCode((int64_t)(Component_TC2->second.MxfTimeCode.StartTimecode+Config->File_IgnoreEditsBefore), Component_TC2->second.MxfTimeCode.RoundedTimecodeBase-1, TimeCode::DropFrame(Component2->second.MxfTimeCode.DropFrame).FPS1001(Component2->second.MxfTimeCode.DropFrame)):TimeCode(); if (TC2.ToFrames()-TC.ToFrames()==2) { - TC++; + ++TC; IsHybridTimeCode=true; } } @@ -5132,7 +5132,7 @@ size_t File_Mxf::Read_Buffer_Seek (size_t Method, int64u Value, int64u ID) } Value=float64_int64s(((float64)Value)/1000000000*Descriptor->second.SampleRate); } - //No break; + [[fallthrough]]; case 3 : //FrameNumber Value+=Config->File_IgnoreEditsBefore; @@ -6503,7 +6503,7 @@ void File_Mxf::Data_Parse() { if (!Essence->second.Parsers[Pos]->Status[IsAccepted] && Essence->second.Parsers[Pos]->Status[IsFinished]) { - delete *(Essence->second.Parsers.begin()+Pos); + delete static_cast(*(Essence->second.Parsers.begin()+Pos)); Essence->second.Parsers.erase(Essence->second.Parsers.begin()+Pos); Pos--; } @@ -6513,7 +6513,7 @@ void File_Mxf::Data_Parse() for (size_t Pos2=0; Pos2second.Parsers.size(); Pos2++) { if (Pos2!=Pos) - delete *(Essence->second.Parsers.begin()+Pos2); + delete static_cast(*(Essence->second.Parsers.begin()+Pos2)); } Essence->second.Parsers.clear(); Essence->second.Parsers.push_back(Parser); @@ -8817,7 +8817,7 @@ void File_Mxf::SDTISystemMetadataPack() //SMPTE 385M + 326M if (SDTI_TimeCode_Previous.IsSet() && TimeCode_Current==SDTI_TimeCode_Previous) { SDTI_TimeCode_RepetitionCount++; - TimeCode_Current++; + ++TimeCode_Current; if (!SDTI_TimeCode_StartTimecode.IsSet() && SDTI_TimeCode_RepetitionCount>=RepetitionMaxCount) SDTI_TimeCode_StartTimecode=SDTI_TimeCode_Previous; //The first time code was the first one of the repetition sequence } @@ -8828,7 +8828,7 @@ void File_Mxf::SDTISystemMetadataPack() //SMPTE 385M + 326M SDTI_TimeCode_StartTimecode=SDTI_TimeCode_Previous; while(SDTI_TimeCode_RepetitionCountsecond.ChannelCount>=2 && Descriptor->second.ChannelCount!=(int32u)-1) //PCM, but one file is found with Dolby E in it ChooseParser_ChannelSplitting(Essence, Descriptor); + [[fallthrough]]; default : return ChooseParser_Pcm(Essence, Descriptor); } case 0x02 : //Compressed coding diff --git a/Source/MediaInfo/Multiple/File_Nsv.cpp b/Source/MediaInfo/Multiple/File_Nsv.cpp index c7cffd723..c5469ed7d 100644 --- a/Source/MediaInfo/Multiple/File_Nsv.cpp +++ b/Source/MediaInfo/Multiple/File_Nsv.cpp @@ -837,7 +837,7 @@ void File_StarDiva::Read_Buffer_Continue() size_t Begin; - size_t End; + size_t End{}; Element_Begin1("StarDiva time line data"); Element_Begin1("Header"); @@ -1248,7 +1248,7 @@ void File_StarDiva::Read_Buffer_Continue() // Eliminate obviously wrong catches: 1 char long but another catch has longer strings size_t MinMinStringSize=(size_t)-1; size_t MaxMinStringSize=0; - for(map::iterator It=CheckOfMultiplesOfTimes2x_Values.begin(); It!=CheckOfMultiplesOfTimes2x_Values.end(); It++) + for(map::iterator It=CheckOfMultiplesOfTimes2x_Values.begin(); It!=CheckOfMultiplesOfTimes2x_Values.end(); ++It) { if (MinMinStringSize>It->second) MinMinStringSize=It->second; @@ -1256,7 +1256,7 @@ void File_StarDiva::Read_Buffer_Continue() MaxMinStringSize=It->second; } if (MinMinStringSize==1 && MaxMinStringSize>1) - for(map::iterator It=CheckOfMultiplesOfTimes2x_Values.begin(); It!=CheckOfMultiplesOfTimes2x_Values.end(); It++) + for(map::iterator It=CheckOfMultiplesOfTimes2x_Values.begin(); It!=CheckOfMultiplesOfTimes2x_Values.end(); ++It) { if (It->second!=1) { diff --git a/Source/MediaInfo/Multiple/File_Riff_Elements.cpp b/Source/MediaInfo/Multiple/File_Riff_Elements.cpp index 2c241b1bd..c2cc90f0f 100644 --- a/Source/MediaInfo/Multiple/File_Riff_Elements.cpp +++ b/Source/MediaInfo/Multiple/File_Riff_Elements.cpp @@ -482,7 +482,7 @@ static std::string Riff_CodePage(int16u CodePage) case 28591: return "ISO-8859-1"; case 28592: return "ISO-8859-2"; case 65001: return "UTF-8"; - default: return to_string(CodePage); + default: return to_string(CodePage); } } @@ -2169,6 +2169,7 @@ void File_Riff::AVI__hdlr_strl_vprp() Fill(Stream_Video, 0, Video_ScanOrder, "TFF"); if (VideoYValidStartLines.size()==2 && VideoYValidStartLines[0]>VideoYValidStartLines[1]) Fill(Stream_Video, 0, Video_ScanOrder, "BFF"); + break; default: ; } FILLING_END(); @@ -2634,7 +2635,7 @@ void File_Riff::AVI__movi_xxxx() { if (!StreamItem.Parsers[Pos]->Status[IsAccepted] && StreamItem.Parsers[Pos]->Status[IsFinished]) { - delete *(StreamItem.Parsers.begin()+Pos); + delete static_cast(*(StreamItem.Parsers.begin()+Pos)); StreamItem.Parsers.erase(StreamItem.Parsers.begin()+Pos); Pos--; } @@ -2644,7 +2645,7 @@ void File_Riff::AVI__movi_xxxx() for (size_t Pos2=0; Pos2(*(StreamItem.Parsers.begin()+Pos2)); } StreamItem.Parsers.clear(); StreamItem.Parsers.push_back(Parser); @@ -2794,7 +2795,7 @@ void File_Riff::AVI__movi_StreamJump() else if (Stream_Structure_Temp!=Stream_Structure.end()) { do - Stream_Structure_Temp++; + ++Stream_Structure_Temp; while (Stream_Structure_Temp!=Stream_Structure.end() && !(Stream[(int32u)Stream_Structure_Temp->second.Name].SearchingPayload && Config->ParseSpeed<1.0)); if (Stream_Structure_Temp!=Stream_Structure.end()) { diff --git a/Source/MediaInfo/Multiple/File__ReferenceFilesHelper.cpp b/Source/MediaInfo/Multiple/File__ReferenceFilesHelper.cpp index 4b1fda085..e7243790d 100644 --- a/Source/MediaInfo/Multiple/File__ReferenceFilesHelper.cpp +++ b/Source/MediaInfo/Multiple/File__ReferenceFilesHelper.cpp @@ -1220,7 +1220,8 @@ void File__ReferenceFilesHelper::ParseReference() } #endif //MEDIAINFO_DEMUX - DTS_Temp+=Sequences[Sequences_Current]->Resources[Sequences[Sequences_Current]->Resources_Current]->Demux_Offset_DTS; + if (!Sequences[Sequences_Current]->Resources.empty()) + DTS_Temp+=Sequences[Sequences_Current]->Resources[Sequences[Sequences_Current]->Resources_Current]->Demux_Offset_DTS; if (!Sequences[Sequences_Current]->Resources.empty() && Sequences[Sequences_Current]->Resources_CurrentResources.size() && Sequences[Sequences_Current]->Resources[Sequences[Sequences_Current]->Resources_Current]->EditRate && Sequences[Sequences_Current]->Resources[Sequences[Sequences_Current]->Resources_Current]->IgnoreEditsBefore) { int64u TimeOffset=float64_int64s(((float64)Sequences[Sequences_Current]->Resources[Sequences[Sequences_Current]->Resources_Current]->IgnoreEditsBefore)/Sequences[Sequences_Current]->Resources[Sequences[Sequences_Current]->Resources_Current]->EditRate*1000000000); @@ -1445,7 +1446,7 @@ void File__ReferenceFilesHelper::ParseReference_Finalize_PerStream () MI2.Option(__T("File_Demux_Rate"), Ztring::ToZtring(FrameRate)); else if (!Sequences[Sequences_Current]->Resources.empty() && Sequences[Sequences_Current]->Resources[0]->EditRate) //TODO: per Pos MI2.Option(__T("File_Demux_Rate"), Ztring::ToZtring(Sequences[Sequences_Current]->Resources[0]->EditRate)); - size_t MiOpenResult=MI2.Open(Sequences[Sequences_Current]->Resources[Pos]->FileNames.Read()); + size_t MiOpenResult = (!Sequences[Sequences_Current]->Resources.empty()) ? MI2.Open(Sequences[Sequences_Current]->Resources[Pos]->FileNames.Read()) : 0; MI2.Option(__T("ParseSpeed"), ParseSpeed_Save); //This is a global value, need to reset it. TODO: local value MI2.Option(__T("Demux"), Demux_Save); //This is a global value, need to reset it. TODO: local value if (MiOpenResult) diff --git a/Source/MediaInfo/Text/File_AribStdB24B37.cpp b/Source/MediaInfo/Text/File_AribStdB24B37.cpp index 00dc97c1b..ebfb511ff 100644 --- a/Source/MediaInfo/Text/File_AribStdB24B37.cpp +++ b/Source/MediaInfo/Text/File_AribStdB24B37.cpp @@ -748,8 +748,9 @@ void File_AribStdB24B37::caption_statement() //caption_data() MuxingMode=HasCcis?7:(int8u)-1; // "CCIS" or nothing } Frame_Count_NotParsedIncluded=Frame_Count; - EVENT_BEGIN (Global, SimpleText, 0) - Event.Content=Streams[(size_t)(Element_Code-1)].Line.To_Unicode().c_str(); + EVENT_BEGIN(Global, SimpleText, 0) + std::wstring Line_Unicode{ Streams[(size_t)(Element_Code - 1)].Line.To_Unicode() }; + Event.Content=Line_Unicode.c_str(); Event.Flags=0; Event.MuxingMode=MuxingMode; Event.Service=(int8u)Element_Code; diff --git a/Source/MediaInfo/Text/File_Eia608.cpp b/Source/MediaInfo/Text/File_Eia608.cpp index e755e55f8..637e98ee9 100644 --- a/Source/MediaInfo/Text/File_Eia608.cpp +++ b/Source/MediaInfo/Text/File_Eia608.cpp @@ -982,6 +982,7 @@ void File_Eia608::Special_14(int8u cc_data_2) case 0x2F : //EOC - end of Caption TextMode=false; StreamPos=TextMode*2+DataChannelMode; + break; default: ; } diff --git a/Source/MediaInfo/Text/File_N19.cpp b/Source/MediaInfo/Text/File_N19.cpp index 4fa7f1b76..a7e99f0e6 100644 --- a/Source/MediaInfo/Text/File_N19.cpp +++ b/Source/MediaInfo/Text/File_N19.cpp @@ -826,11 +826,12 @@ void File_N19::Data_Parse() } } - EVENT_BEGIN (Global, SimpleText, 0) + EVENT_BEGIN(Global, SimpleText, 0) + std::wstring TF_Unicode{ TF.To_Unicode() }; Event.DTS=((int64u)N19_HHMMSSFF_TC(TCI, FrameRate).ToMilliseconds())*1000000; // "-TCP" removed for the moment. TODO: find a way for when TCP should be removed and when it should not Event.PTS=Event.DTS; Event.DUR=((int64u)(N19_HHMMSSFF_TC(TCO, FrameRate)-N19_HHMMSSFF_TC(TCI, FrameRate)).ToMilliseconds())*1000000; - Event.Content=TF.To_Unicode().c_str(); + Event.Content=TF_Unicode.c_str(); Event.Flags=0; Event.MuxingMode=(int8u)-1; Event.Service=(int8u)-1; diff --git a/Source/MediaInfo/Text/File_Pac.cpp b/Source/MediaInfo/Text/File_Pac.cpp index c1269f5e1..e31cf36a5 100644 --- a/Source/MediaInfo/Text/File_Pac.cpp +++ b/Source/MediaInfo/Text/File_Pac.cpp @@ -115,7 +115,7 @@ void File_Pac::Streams_Finish() Fill(Stream_Text, 0, Text_TimeCode_FirstFrame, Time_Start_Command.ToString()); Fill(Stream_Text, 0, Text_Duration_End_Command, (int64s)(Time_End_Command - Offset).ToMilliseconds()); TimeCode LastFrame = Time_End_Command; - LastFrame--; + --LastFrame; Fill(Stream_Text, 0, Text_TimeCode_LastFrame, LastFrame.ToString()); if (Time_Start.IsValid()) { Time_Start.SetFramesMax(FrameMax); diff --git a/Source/MediaInfo/Text/File_SubRip.cpp b/Source/MediaInfo/Text/File_SubRip.cpp index 549b2ee7c..df34c2138 100644 --- a/Source/MediaInfo/Text/File_SubRip.cpp +++ b/Source/MediaInfo/Text/File_SubRip.cpp @@ -438,11 +438,12 @@ void File_SubRip::Read_Buffer_Continue() for (; Items_PosTime_Begin) { TimeCode LastFrame=Time_End; - LastFrame--; + --LastFrame; Fill(Stream_Text, 0, Text_TimeCode_LastFrame, LastFrame.ToString()); } auto MediaTimeToMilliseconds=[&](TimeCode TC) @@ -736,10 +736,11 @@ void File_Ttml::Read_Buffer_Continue() Content.FindAndReplace(__T("
"), EOL, 0, ZenLib::Ztring_Recursive); Content.FindAndReplace(__T("
"), EOL, 0, ZenLib::Ztring_Recursive); + std::wstring Content_Unicode{ Content.To_Unicode() }; Event.DTS=DTS_Begin; Event.PTS=Event.DTS; Event.DUR=DTS_End-DTS_Begin; - Event.Content=Content.To_Unicode().c_str(); + Event.Content=Content_Unicode.c_str(); Event.Flags=0; Event.MuxingMode=MuxingMode; Event.Service=(int8u)Element_Code; diff --git a/Source/MediaInfo/TimeCode.cpp b/Source/MediaInfo/TimeCode.cpp index 728c6d446..cfa27d70d 100644 --- a/Source/MediaInfo/TimeCode.cpp +++ b/Source/MediaInfo/TimeCode.cpp @@ -508,6 +508,10 @@ int TimeCode::FromString(const string_view& V, bool Ignore1001FromDropFrame) return 1; } int FramesRate_Index = i - 1 - i_Start; + if (FramesRate_Index < 0) { + *this = TimeCode(); + return 1; + } uint64_t FramesRate = PowersOf10[FramesRate_Index]; SetFramesMax((uint32_t)FramesRate - 1); switch (Unit) @@ -723,7 +727,7 @@ TimeCode TimeCode::ToRescaled(uint32_t FramesMax, flags Flags, rounding Rounding { case Nearest: Result += FrameRate / 2; - //fall through + [[fallthrough]]; case Floor: Result /= FrameRate; break; diff --git a/Source/MediaInfo/Video/File_Av1.cpp b/Source/MediaInfo/Video/File_Av1.cpp index 66ffd8fe0..90831637c 100644 --- a/Source/MediaInfo/Video/File_Av1.cpp +++ b/Source/MediaInfo/Video/File_Av1.cpp @@ -259,7 +259,7 @@ void File_Av1::sequence_header() { //Parsing int32u max_frame_width_minus_1, max_frame_height_minus_1; - int8u seq_profile, seq_level_idx[33], operating_points_cnt_minus_1, buffer_delay_length_minus_1, frame_width_bits_minus_1, frame_height_bits_minus_1, seq_force_screen_content_tools, BitDepth, color_primaries, transfer_characteristics, matrix_coefficients, chroma_sample_position; + int8u seq_profile, seq_level_idx[33]{}, operating_points_cnt_minus_1, buffer_delay_length_minus_1, frame_width_bits_minus_1, frame_height_bits_minus_1, seq_force_screen_content_tools, BitDepth, color_primaries, transfer_characteristics, matrix_coefficients, chroma_sample_position; bool reduced_still_picture_header, seq_tier[33], timing_info_present_flag, decoder_model_info_present_flag, seq_choose_screen_content_tools, mono_chrome, color_range, color_description_present_flag, subsampling_x, subsampling_y; BS_Begin(); Get_S1 ( 3, seq_profile, "seq_profile"); Param_Info1(Av1_seq_profile(seq_profile)); @@ -678,7 +678,7 @@ void File_Av1::Get_leb128(int64u& Info, const char* Name) break; // End of stream reached, not normal int8u leb128_byte=BigEndian2int8u(Buffer+Buffer_Offset+(size_t)Element_Offset); Element_Offset++; - Info|=((leb128_byte&0x7f)<<(i*7)); + Info|=(static_cast(leb128_byte&0x7f)<<(i*7)); if (!(leb128_byte&0x80)) { #if MEDIAINFO_TRACE diff --git a/Source/MediaInfo/Video/File_Avc.cpp b/Source/MediaInfo/Video/File_Avc.cpp index 24aaa66c6..d8a0cfe96 100644 --- a/Source/MediaInfo/Video/File_Avc.cpp +++ b/Source/MediaInfo/Video/File_Avc.cpp @@ -1181,7 +1181,7 @@ void File_Avc::Streams_Fill(std::vector::iterator seq case Video_MasteringDisplay_Luminance: if (Retrieve_Const(Stream_Video, 0, Item->first) == Item->second) break; - // Fallthrough + [[fallthrough]]; default: Fill(Stream_Video, 0, Item->first, Item->second); } @@ -2950,7 +2950,7 @@ void File_Avc::dec_ref_pic_marking(std::vector &memory_management_control break; case 3 : Skip_UE( "difference_of_pic_nums_minus1"); - //break; 3 --> difference_of_pic_nums_minus1 then long_term_frame_idx + [[fallthrough]]; // 3 --> difference_of_pic_nums_minus1 then long_term_frame_idx case 6 : Skip_UE( "long_term_frame_idx"); break; @@ -3160,7 +3160,7 @@ void File_Avc::sei_message_pic_timing(int32u /*payloadSize*/, int32u seq_paramet n_frames=0; FrameMax=0; //Unsupported type } - else if ((*seq_parameter_set_Item)->vui_parameters->flags[fixed_frame_rate_flag] && (*seq_parameter_set_Item)->vui_parameters->time_scale && (*seq_parameter_set_Item)->vui_parameters->time_scale && (*seq_parameter_set_Item)->vui_parameters->num_units_in_tick) + else if ((*seq_parameter_set_Item)->vui_parameters->flags[fixed_frame_rate_flag] && (*seq_parameter_set_Item)->vui_parameters->time_scale && (*seq_parameter_set_Item)->vui_parameters->num_units_in_tick) FrameMax=(int32u)(float64_int64s((float64)(*seq_parameter_set_Item)->vui_parameters->time_scale/(*seq_parameter_set_Item)->vui_parameters->num_units_in_tick/((*seq_parameter_set_Item)->frame_mbs_only_flag?2:(((*seq_parameter_set_Item)->pic_order_cnt_type==2 && Structure_Frame/2>Structure_Field)?1:2))/FrameRate_Divider)-1); else if (n_frames>99) FrameMax=n_frames; @@ -4796,6 +4796,7 @@ void File_Avc::SPS_PPS() Element_End0(); } } + break; default:; } } diff --git a/Source/MediaInfo/Video/File_Avc.h b/Source/MediaInfo/Video/File_Avc.h index 7d06f53b5..24bf5f688 100644 --- a/Source/MediaInfo/Video/File_Avc.h +++ b/Source/MediaInfo/Video/File_Avc.h @@ -75,12 +75,14 @@ private : { delete[] Iso14496_10_Buffer; Iso14496_10_Buffer_Size = (size_t)(Element_Size + 4); - Iso14496_10_Buffer = new int8u[Iso14496_10_Buffer_Size]; - Iso14496_10_Buffer[0] = 0x00; - Iso14496_10_Buffer[1] = 0x00; - Iso14496_10_Buffer[2] = 0x01; - Iso14496_10_Buffer[3] = c; - std::memcpy(Iso14496_10_Buffer + 4, Buffer, (size_t)Element_Size); + if (Iso14496_10_Buffer_Size > 3) { + Iso14496_10_Buffer = new int8u[Iso14496_10_Buffer_Size]; + Iso14496_10_Buffer[0] = 0x00; + Iso14496_10_Buffer[1] = 0x00; + Iso14496_10_Buffer[2] = 0x01; + Iso14496_10_Buffer[3] = c; + std::memcpy(Iso14496_10_Buffer + 4, Buffer, (size_t)Element_Size); + } } #endif //MEDIAINFO_DEMUX }; diff --git a/Source/MediaInfo/Video/File_Hevc.cpp b/Source/MediaInfo/Video/File_Hevc.cpp index aefcda50d..cda62a098 100644 --- a/Source/MediaInfo/Video/File_Hevc.cpp +++ b/Source/MediaInfo/Video/File_Hevc.cpp @@ -3182,7 +3182,7 @@ void File_Hevc::sei_message_user_data_registered_itu_t_t35_B5_003C_0001_04() Get_B1 (application_version, "application_version"); if (application_version==1) { - int32u targeted_system_display_maximum_luminance, maxscl[4], distribution_maxrgb_percentiles[16]; + int32u targeted_system_display_maximum_luminance, maxscl[4]{}, distribution_maxrgb_percentiles[16]; int16u fraction_bright_pixels; int8u num_distribution_maxrgb_percentiles, distribution_maxrgb_percentages[16], num_windows, num_bezier_curve_anchors; bool targeted_system_display_actual_peak_luminance_flag, mastering_display_actual_peak_luminance_flag, color_saturation_mapping_flag; diff --git a/Source/MediaInfo/Video/File_ProRes.cpp b/Source/MediaInfo/Video/File_ProRes.cpp index ba21e013a..727223d8e 100644 --- a/Source/MediaInfo/Video/File_ProRes.cpp +++ b/Source/MediaInfo/Video/File_ProRes.cpp @@ -209,7 +209,7 @@ void File_ProRes::Read_Buffer_Continue() //Parsing int32u Name, creatorID; int16u hdrSize, version, frameWidth, frameHeight; - int8u chrominance_factor, frame_type, primaries, transf_func, colorMatrix, alpha_info; + int8u chrominance_factor{}, frame_type{}, primaries{}, transf_func{}, colorMatrix{}, alpha_info{}; bool IsOk=true, luma, chroma; Element_Begin1("Header"); Skip_B4( "Size"); diff --git a/Source/MediaInfo/Video/File_Vp9.cpp b/Source/MediaInfo/Video/File_Vp9.cpp index 01eaf2ae4..cf98ddb7b 100644 --- a/Source/MediaInfo/Video/File_Vp9.cpp +++ b/Source/MediaInfo/Video/File_Vp9.cpp @@ -178,9 +178,9 @@ void File_Vp9::Read_Buffer_Continue() Element_Begin1("uncompressed_header"); BS_Begin(); - int16u width_minus_one, height_minus_one; - int8u FRAME_MARKER, profile, bit_depth, colorspace, subsampling; - bool version0, version1, version2, show_existing_frame, frame_type, show_frame, error_resilient_mode, yuv_range_flag; + int16u width_minus_one{}, height_minus_one{}; + int8u FRAME_MARKER, profile, bit_depth{}, colorspace{}, subsampling{}; + bool version0, version1, version2, show_existing_frame, frame_type, show_frame, error_resilient_mode, yuv_range_flag{}; Get_S1(2, FRAME_MARKER, "FRAME_MARKER (0b10)"); if (FRAME_MARKER!=0x2) Trusted_IsNot("FRAME_MARKER is wrong"); diff --git a/Source/ThirdParty/tinyxml2/tinyxml2.cpp b/Source/ThirdParty/tinyxml2/tinyxml2.cpp index 89b791336..0f955e245 100644 --- a/Source/ThirdParty/tinyxml2/tinyxml2.cpp +++ b/Source/ThirdParty/tinyxml2/tinyxml2.cpp @@ -432,17 +432,17 @@ void XMLUtil::ConvertUTF32ToUTF8( unsigned long input, char* output, int* length --output; *output = (char)((input | BYTE_MARK) & BYTE_MASK); input >>= 6; - //fall through + [[fallthrough]]; case 3: --output; *output = (char)((input | BYTE_MARK) & BYTE_MASK); input >>= 6; - //fall through + [[fallthrough]]; case 2: --output; *output = (char)((input | BYTE_MARK) & BYTE_MASK); input >>= 6; - //fall through + [[fallthrough]]; case 1: --output; *output = (char)(input | FIRST_BYTE_MARK[*length]);