Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/mpc-hc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/thirdparty/MediaInfo/MediaInfo/MediaInfo_Config_MediaInfo.cpp')
-rw-r--r--src/thirdparty/MediaInfo/MediaInfo/MediaInfo_Config_MediaInfo.cpp218
1 files changed, 186 insertions, 32 deletions
diff --git a/src/thirdparty/MediaInfo/MediaInfo/MediaInfo_Config_MediaInfo.cpp b/src/thirdparty/MediaInfo/MediaInfo/MediaInfo_Config_MediaInfo.cpp
index b11f60877..c00de7885 100644
--- a/src/thirdparty/MediaInfo/MediaInfo/MediaInfo_Config_MediaInfo.cpp
+++ b/src/thirdparty/MediaInfo/MediaInfo/MediaInfo_Config_MediaInfo.cpp
@@ -33,6 +33,97 @@ using namespace ZenLib;
using namespace std;
//---------------------------------------------------------------------------
+//---------------------------------------------------------------------------
+// Debug
+#ifdef MEDIAINFO_DEBUG
+ #include <stdio.h>
+ #include <windows.h>
+ namespace MediaInfo_Config_MediaInfo_Debug
+ {
+ FILE* F;
+ std::string Debug;
+ SYSTEMTIME st_In;
+
+ void Debug_Open(bool Out)
+ {
+ F=fopen("C:\\Temp\\MediaInfo_Debug.txt", "a+t");
+ Debug.clear();
+ SYSTEMTIME st;
+ GetLocalTime( &st );
+
+ char Duration[100];
+ if (Out)
+ {
+ FILETIME ft_In;
+ if (SystemTimeToFileTime(&st_In, &ft_In))
+ {
+ FILETIME ft_Out;
+ if (SystemTimeToFileTime(&st, &ft_Out))
+ {
+ ULARGE_INTEGER UI_In;
+ UI_In.HighPart=ft_In.dwHighDateTime;
+ UI_In.LowPart=ft_In.dwLowDateTime;
+
+ ULARGE_INTEGER UI_Out;
+ UI_Out.HighPart=ft_Out.dwHighDateTime;
+ UI_Out.LowPart=ft_Out.dwLowDateTime;
+
+ ULARGE_INTEGER UI_Diff;
+ UI_Diff.QuadPart=UI_Out.QuadPart-UI_In.QuadPart;
+
+ FILETIME ft_Diff;
+ ft_Diff.dwHighDateTime=UI_Diff.HighPart;
+ ft_Diff.dwLowDateTime=UI_Diff.LowPart;
+
+ SYSTEMTIME st_Diff;
+ if (FileTimeToSystemTime(&ft_Diff, &st_Diff))
+ {
+ sprintf(Duration, "%02hd:%02hd:%02hd.%03hd", st_Diff.wHour, st_Diff.wMinute, st_Diff.wSecond, st_Diff.wMilliseconds);
+ }
+ else
+ strcpy(Duration, " ");
+ }
+ else
+ strcpy(Duration, " ");
+
+ }
+ else
+ strcpy(Duration, " ");
+ }
+ else
+ {
+ st_In=st;
+ strcpy(Duration, " ");
+ }
+
+ fprintf(F," %02hd:%02hd:%02hd.%03hd %s", st.wHour, st.wMinute, st.wSecond, st.wMilliseconds, Duration);
+ }
+
+ void Debug_Close()
+ {
+ Debug += "\r\n";
+ fwrite(Debug.c_str(), Debug.size(), 1, F); \
+ fclose(F);
+ }
+ }
+ using namespace MediaInfo_Config_MediaInfo_Debug;
+
+ #define MEDIAINFO_DEBUG1(_NAME,_TOAPPEND) \
+ Debug_Open(false); \
+ Debug+=", ";Debug+=_NAME; \
+ _TOAPPEND; \
+ Debug_Close();
+
+ #define MEDIAINFO_DEBUG2(_NAME,_TOAPPEND) \
+ Debug_Open(true); \
+ Debug+=", ";Debug+=_NAME; \
+ _TOAPPEND; \
+ Debug_Close();
+#else // MEDIAINFO_DEBUG
+ #define MEDIAINFO_DEBUG1(_NAME,__TOAPPEND)
+ #define MEDIAINFO_DEBUG2(_NAME,__TOAPPEND)
+#endif // MEDIAINFO_DEBUG
+
namespace MediaInfoLib
{
@@ -58,9 +149,11 @@ MediaInfo_Config_MediaInfo::MediaInfo_Config_MediaInfo()
#if MEDIAINFO_ADVANCED
File_IgnoreSequenceFileSize=false;
File_IgnoreSequenceFilesCount=false;
+ File_SequenceFilesSkipFrames=0;
File_DefaultFrameRate=0;
File_Source_List=false;
File_RiskyBitRateEstimation=false;
+ File_MergeBitRateInfo=true;
#if MEDIAINFO_DEMUX
File_Demux_Unpacketize_StreamLayoutChange_Skip=false;
#endif //MEDIAINFO_DEMUX
@@ -105,10 +198,12 @@ MediaInfo_Config_MediaInfo::MediaInfo_Config_MediaInfo()
Demux_FirstFrameNumber=(int64u)-1;
Demux_InitData=0; //In Demux event
#endif //MEDIAINFO_DEMUX
- #if MEDIAINFO_IBI
- Ibi_Create=false;
+ #if MEDIAINFO_IBIUSAGE
Ibi_UseIbiInfoIfAvailable=false;
- #endif //MEDIAINFO_IBI
+ #endif //MEDIAINFO_IBIUSAGE
+ #if MEDIAINFO_IBIUSAGE
+ Ibi_Create=false;
+ #endif //MEDIAINFO_IBIUSAGE
//Specific
File_MpegTs_ForceMenu=false;
@@ -148,11 +243,12 @@ MediaInfo_Config_MediaInfo::MediaInfo_Config_MediaInfo()
File_Buffer_Repeat_IsSupported=false;
File_IsGrowing=false;
File_IsNotGrowingAnymore=false;
+ File_IsImageSequence=false;
File_Current_Offset=0;
File_Current_Size=(int64u)-1;
- File_IgnoreFramesBefore=0;
- File_IgnoreFramesAfter=(int64u)-1;
- File_IgnoreFramesRate=0;
+ File_IgnoreEditsBefore=0;
+ File_IgnoreEditsAfter=(int64u)-1;
+ File_EditRate=0;
File_Size=(int64u)-1;
ParseSpeed=MediaInfoLib::Config.ParseSpeed_Get();
#if MEDIAINFO_EVENTS
@@ -308,6 +404,15 @@ Ztring MediaInfo_Config_MediaInfo::Option (const String &Option, const String &V
return __T("Disabled due to compilation options");
#endif //MEDIAINFO_MD5
}
+ else if (Option_Lower==__T("file_sequencefilesskipframes") || Option_Lower==__T("file_sequencefileskipframes"))
+ {
+ #if MEDIAINFO_ADVANCED
+ File_SequenceFilesSkipFrames_Set(Ztring(Value).To_int64u());
+ return Ztring();
+ #else //MEDIAINFO_ADVANCED
+ return __T("Disabled due to compilation options");
+ #endif //MEDIAINFO_ADVANCED
+ }
else if (Option_Lower==__T("file_defaultframerate"))
{
#if MEDIAINFO_MD5
@@ -335,6 +440,15 @@ Ztring MediaInfo_Config_MediaInfo::Option (const String &Option, const String &V
return __T("Advanced features are disabled due to compilation options");
#endif //MEDIAINFO_ADVANCED
}
+ else if (Option_Lower==__T("file_mergebitrateinfo"))
+ {
+ #if MEDIAINFO_ADVANCED
+ File_MergeBitRateInfo_Set(!(Value==__T("0") || Value.empty()));
+ return Ztring();
+ #else //MEDIAINFO_ADVANCED
+ return __T("Advanced features are disabled due to compilation options");
+ #endif //MEDIAINFO_ADVANCED
+ }
else if (Option_Lower==__T("file_demux_unpacketize_streamlayoutchange_skip"))
{
#if MEDIAINFO_DEMUX
@@ -616,36 +730,36 @@ Ztring MediaInfo_Config_MediaInfo::Option (const String &Option, const String &V
}
else if (Option_Lower==__T("file_ibi"))
{
- #if MEDIAINFO_IBI
+ #if MEDIAINFO_IBIUSAGE
Ibi_Set(Value);
return Ztring();
- #else //MEDIAINFO_IBI
+ #else //MEDIAINFO_IBIUSAGE
return __T("IBI support is disabled due to compilation options");
- #endif //MEDIAINFO_IBI
+ #endif //MEDIAINFO_IBIUSAGE
}
else if (Option_Lower==__T("file_ibi_create"))
{
- #if MEDIAINFO_IBI
+ #if MEDIAINFO_IBIUSAGE
if (Ztring(Value).To_int64u()==0)
Ibi_Create_Set(false);
else
Ibi_Create_Set(true);
return Ztring();
- #else //MEDIAINFO_IBI
+ #else //MEDIAINFO_IBIUSAGE
return __T("IBI support is disabled due to compilation options");
- #endif //MEDIAINFO_IBI
+ #endif //MEDIAINFO_IBIUSAGE
}
else if (Option_Lower==__T("file_ibi_useibiinfoifavailable"))
{
- #if MEDIAINFO_IBI
+ #if MEDIAINFO_IBIUSAGE
if (Ztring(Value).To_int64u()==0)
Ibi_UseIbiInfoIfAvailable_Set(false);
else
Ibi_UseIbiInfoIfAvailable_Set(true);
return Ztring();
- #else //MEDIAINFO_IBI
+ #else //MEDIAINFO_IBIUSAGE
return __T("IBI support is disabled due to compilation options");
- #endif //MEDIAINFO_IBI
+ #endif //MEDIAINFO_IBIUSAGE
}
else if (Option_Lower==__T("file_encryption_format"))
{
@@ -1194,6 +1308,21 @@ bool MediaInfo_Config_MediaInfo::File_IgnoreSequenceFilesCount_Get ()
//---------------------------------------------------------------------------
#if MEDIAINFO_ADVANCED
+void MediaInfo_Config_MediaInfo::File_SequenceFilesSkipFrames_Set (int64u NewValue)
+{
+ CriticalSectionLocker CSL(CS);
+ File_SequenceFilesSkipFrames=NewValue;
+}
+
+int64u MediaInfo_Config_MediaInfo::File_SequenceFilesSkipFrames_Get ()
+{
+ CriticalSectionLocker CSL(CS);
+ return File_SequenceFilesSkipFrames;
+}
+#endif //MEDIAINFO_ADVANCED
+
+//---------------------------------------------------------------------------
+#if MEDIAINFO_ADVANCED
void MediaInfo_Config_MediaInfo::File_DefaultFrameRate_Set (float64 NewValue)
{
CriticalSectionLocker CSL(CS);
@@ -1241,6 +1370,21 @@ bool MediaInfo_Config_MediaInfo::File_RiskyBitRateEstimation_Get ()
#endif //MEDIAINFO_ADVANCED
//---------------------------------------------------------------------------
+#if MEDIAINFO_ADVANCED
+void MediaInfo_Config_MediaInfo::File_MergeBitRateInfo_Set (bool NewValue)
+{
+ CriticalSectionLocker CSL(CS);
+ File_MergeBitRateInfo=NewValue;
+}
+
+bool MediaInfo_Config_MediaInfo::File_MergeBitRateInfo_Get ()
+{
+ CriticalSectionLocker CSL(CS);
+ return File_MergeBitRateInfo;
+}
+#endif //MEDIAINFO_ADVANCED
+
+//---------------------------------------------------------------------------
#if MEDIAINFO_DEMUX
#if MEDIAINFO_ADVANCED
void MediaInfo_Config_MediaInfo::File_Demux_Unpacketize_StreamLayoutChange_Skip_Set (bool NewValue)
@@ -1675,7 +1819,7 @@ int8u MediaInfo_Config_MediaInfo::Demux_InitData_Get ()
// IBI support
//***************************************************************************
-#if MEDIAINFO_IBI
+#if MEDIAINFO_IBIUSAGE
//---------------------------------------------------------------------------
void MediaInfo_Config_MediaInfo::Ibi_Set (const Ztring &Value)
{
@@ -1692,31 +1836,33 @@ string MediaInfo_Config_MediaInfo::Ibi_Get ()
}
//---------------------------------------------------------------------------
-void MediaInfo_Config_MediaInfo::Ibi_Create_Set (bool NewValue)
+void MediaInfo_Config_MediaInfo::Ibi_UseIbiInfoIfAvailable_Set (bool NewValue)
{
CriticalSectionLocker CSL(CS);
- Ibi_Create=NewValue;
+ Ibi_UseIbiInfoIfAvailable=NewValue;
}
-bool MediaInfo_Config_MediaInfo::Ibi_Create_Get ()
+bool MediaInfo_Config_MediaInfo::Ibi_UseIbiInfoIfAvailable_Get ()
{
CriticalSectionLocker CSL(CS);
- return Ibi_Create;
+ return Ibi_UseIbiInfoIfAvailable;
}
+#endif //MEDIAINFO_IBIUSAGE
+#if MEDIAINFO_IBIUSAGE
//---------------------------------------------------------------------------
-void MediaInfo_Config_MediaInfo::Ibi_UseIbiInfoIfAvailable_Set (bool NewValue)
+void MediaInfo_Config_MediaInfo::Ibi_Create_Set (bool NewValue)
{
CriticalSectionLocker CSL(CS);
- Ibi_UseIbiInfoIfAvailable=NewValue;
+ Ibi_Create=NewValue;
}
-bool MediaInfo_Config_MediaInfo::Ibi_UseIbiInfoIfAvailable_Get ()
+bool MediaInfo_Config_MediaInfo::Ibi_Create_Get ()
{
CriticalSectionLocker CSL(CS);
- return Ibi_UseIbiInfoIfAvailable;
+ return Ibi_Create;
}
-#endif //MEDIAINFO_IBI
+#endif //MEDIAINFO_IBIUSAGE
//***************************************************************************
// Encryption
@@ -2087,20 +2233,20 @@ void MediaInfo_Config_MediaInfo::Event_Send (File__Analyze* Source, const int8u*
Temp->PTS-=Demux_Offset_DTS_FromStream;
}
}
- if (File_IgnoreFramesBefore)
+ if (File_IgnoreEditsBefore)
{
if (Temp->FrameNumber!=(int64u)-1)
{
- if (Temp->FrameNumber>File_IgnoreFramesBefore)
- Temp->FrameNumber-=File_IgnoreFramesBefore;
+ if (Temp->FrameNumber>File_IgnoreEditsBefore)
+ Temp->FrameNumber-=File_IgnoreEditsBefore;
else
Temp->FrameNumber=0;
}
if (Temp->DTS!=(int64u)-1)
{
- if (File_IgnoreFramesBefore && File_IgnoreFramesRate)
+ if (File_IgnoreEditsBefore && File_EditRate)
{
- int64u TimeOffset=float64_int64s(((float64)File_IgnoreFramesBefore)/File_IgnoreFramesRate*1000000000);
+ int64u TimeOffset=float64_int64s(((float64)File_IgnoreEditsBefore)/File_EditRate*1000000000);
if (Temp->DTS>TimeOffset)
Temp->DTS-=TimeOffset;
else
@@ -2109,9 +2255,9 @@ void MediaInfo_Config_MediaInfo::Event_Send (File__Analyze* Source, const int8u*
}
if (Temp->PTS!=(int64u)-1)
{
- if (File_IgnoreFramesBefore && File_IgnoreFramesRate)
+ if (File_IgnoreEditsBefore && File_EditRate)
{
- int64u TimeOffset=float64_int64s(((float64)File_IgnoreFramesBefore)/File_IgnoreFramesRate*1000000000);
+ int64u TimeOffset=float64_int64s(((float64)File_IgnoreEditsBefore)/File_EditRate*1000000000);
if (Temp->PTS>TimeOffset)
Temp->PTS-=TimeOffset;
else
@@ -2156,7 +2302,15 @@ void MediaInfo_Config_MediaInfo::Event_Send (File__Analyze* Source, const int8u*
}
}
else if (Event_CallBackFunction)
+ {
+ MEDIAINFO_DEBUG1( "CallBackFunction",
+ Debug+=", EventID=";Debug+=Ztring::ToZtring(LittleEndian2int32u(Data_Content), 16).To_UTF8();)
+
Event_CallBackFunction ((unsigned char*)Data_Content, Data_Size, Event_UserHandler);
+
+ MEDIAINFO_DEBUG2( "CallBackFunction",
+ )
+ }
else if (!File_Name.empty())
{
MediaInfo_Event_Generic* Event_Generic=(MediaInfo_Event_Generic*)Data_Content;