/* Copyright (c) MediaArea.net SARL. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license that can
* be found in the License.html file in the root of the source tree.
*/
//---------------------------------------------------------------------------
// Pre-compilation
#include "MediaInfo/PreComp.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include "MediaInfo/Setup.h"
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include "MediaInfo/MediaInfo_Config_PerPackage.h"
#include "MediaInfo/MediaInfo_Config.h"
#include <algorithm>
using namespace std;
//---------------------------------------------------------------------------
namespace MediaInfoLib
{
//***************************************************************************
// Info
//***************************************************************************
MediaInfo_Config_PerPackage::MediaInfo_Config_PerPackage()
{
#if MEDIAINFO_EVENTS
Event_CallBackFunction=NULL;
Event_UserHandler=NULL;
#endif //MEDIAINFO_EVENTS
CountOfPackages=(size_t)-1;
}
MediaInfo_Config_PerPackage::~MediaInfo_Config_PerPackage()
{
}
//***************************************************************************
// Info
//***************************************************************************
Ztring MediaInfo_Config_PerPackage::Option (const String &Option, const String &Value)
{
String Option_Lower(Option);
size_t Egal_Pos=Option_Lower.find(__T('='));
if (Egal_Pos==string::npos)
Egal_Pos=Option_Lower.size();
transform(Option_Lower.begin(), Option_Lower.begin()+Egal_Pos, Option_Lower.begin(), (int(*)(int))tolower); //(int(*)(int)) is a patch for unix
if (Option_Lower==__T("file_event_callbackfunction"))
{
#if MEDIAINFO_EVENTS
return Event_CallBackFunction_Set(Value);
#else //MEDIAINFO_EVENTS
return __T("Event manager is disabled due to compilation options");
#endif //MEDIAINFO_EVENTS
}
else
return __T("Option not known");
}
//---------------------------------------------------------------------------
#if MEDIAINFO_EVENTS
void MediaInfo_Config_PerPackage::Unsynch ()
{
}
#endif //MEDIAINFO_EVENTS
//***************************************************************************
// Event
//***************************************************************************
//---------------------------------------------------------------------------
#if MEDIAINFO_EVENTS
bool MediaInfo_Config_PerPackage::Event_CallBackFunction_IsSet ()
{
CriticalSectionLocker CSL(CS);
return Event_CallBackFunction?true:false;
}
#endif //MEDIAINFO_EVENTS
//---------------------------------------------------------------------------
#if MEDIAINFO_EVENTS
Ztring MediaInfo_Config_PerPackage::Event_CallBackFunction_Set (const Ztring &Value)
{
ZtringList List=Value;
CriticalSectionLocker CSL(CS);
if (List.empty())
{
Event_CallBackFunction=(MediaInfo_Event_CallBackFunction*)NULL;
Event_UserHandler=NULL;
}
else
for (size_t Pos=0; Pos<List.size(); Pos++)
{
if (List[Pos].find(__T("CallBack=memory://"))==0)
Event_CallBackFunction=(MediaInfo_Event_CallBackFunction*)Ztring(List[Pos].substr(18, std::string::npos)).To_int64u();
else if (List[Pos].find(__T("UserHandle=memory://"))==0)
Event_UserHandler=(void*)Ztring(List[Pos].substr(20, std::string::npos)).To_int64u();
else if (List[Pos].find(__T("UserHandler=memory://"))==0)
Event_UserHandler=(void*)Ztring(List[Pos].substr(21, std::string::npos)).To_int64u();
else
return("Problem during Event_CallBackFunction value parsing");
}
return Ztring();
}
#endif //MEDIAINFO_EVENTS
//---------------------------------------------------------------------------
#if MEDIAINFO_EVENTS
Ztring MediaInfo_Config_PerPackage::Event_CallBackFunction_Get ()
{
CriticalSectionLocker CSL(CS);
return __T("CallBack=memory://")+Ztring::ToZtring((size_t)Event_CallBackFunction)+__T(";UserHandler=memory://")+Ztring::ToZtring((size_t)Event_UserHandler);
}
#endif //MEDIAINFO_EVENTS
//---------------------------------------------------------------------------
#if MEDIAINFO_EVENTS
void MediaInfo_Config_PerPackage::Event_Send (File__Analyze* Source, const int8u* Data_Content, size_t Data_Size, const Ztring &File_Name)
{
CriticalSectionLocker CSL(CS);
if (Event_CallBackFunction)
Event_CallBackFunction ((unsigned char*)Data_Content, Data_Size, Event_UserHandler);
}
#endif //MEDIAINFO_EVENTS
//---------------------------------------------------------------------------
#if MEDIAINFO_EVENTS
void MediaInfo_Config_PerPackage::FrameForAlignment (File__Analyze* Source, bool IsClosedGop)
{
}
#endif //MEDIAINFO_EVENTS
//---------------------------------------------------------------------------
#if MEDIAINFO_EVENTS
void MediaInfo_Config_PerPackage::IsClosedGOP (File__Analyze* Source)
{
}
#endif //MEDIAINFO_EVENTS
} //NameSpace
↑ V832 It's better to use '= default;' syntax instead of empty destructor body.