本文整理汇总了C++中ZtringList类的典型用法代码示例。如果您正苦于以下问题:C++ ZtringList类的具体用法?C++ ZtringList怎么用?C++ ZtringList使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ZtringList类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: Xdcam_Directory_Cleanup
void Reader_Directory::Xdcam_Directory_Cleanup(ZtringList &List)
{
//if there is a XDCAM/Clip folder, this is Xdcam
Ztring ToSearch=Ztring(1, PathSeparator)+_T("Clip")+PathSeparator; //"/Clip/"
for (size_t File_Pos=0; File_Pos<List.size(); File_Pos++)
{
size_t Xdcam_Pos=List[File_Pos].find(ToSearch);
if (Xdcam_Pos!=string::npos && Xdcam_Pos!=0 && Xdcam_Pos+1+4+1+12==List[File_Pos].size())
{
//This is a XDCAM CLIP
Ztring Path_Begin=List[File_Pos];
Path_Begin.resize(Path_Begin.size()-(1+4+1+12));
Path_Begin+=Ztring(1, PathSeparator);
if (Dir::Exists(Path_Begin+_T("Edit")) && Dir::Exists(Path_Begin+_T("General")) && Dir::Exists(Path_Begin+_T("Sub")))
{
bool HasChanged=false;
for (size_t Pos=0; Pos<List.size(); Pos++)
{
if (List[Pos].find(Path_Begin)==0 && (List[Pos].find(Path_Begin+_T("Clip")+PathSeparator)==string::npos || (List[Pos].find(_T(".XML"))!=List[Pos].size()-4))) //Remove all subdirs of Path_Begin but not with the right XML
{
//Removing the file in the XDCAM directory
List.erase(List.begin()+Pos);
Pos--;
HasChanged=true;
}
}
if (HasChanged)
File_Pos=0;
}
}
}
}
开发者ID:thespooler,项目名称:mediainfo-code,代码行数:32,代码来源:Reader_Directory.cpp
示例2:
void Reader_Directory::P2_Directory_Cleanup(ZtringList &List)
{
//if there is a CONTENTS/CLIP folder, this is P2
Ztring ToSearch=Ztring(1, PathSeparator)+_T("CONTENTS")+PathSeparator+_T("CLIP")+PathSeparator; //"/CONTENTS/CLIP/"
for (size_t File_Pos=0; File_Pos<List.size(); File_Pos++)
{
size_t P2_Pos=List[File_Pos].find(ToSearch);
if (P2_Pos!=string::npos && P2_Pos!=0 && P2_Pos+1+8+1+4+1+10==List[File_Pos].size())
{
//This is a P2 CLIP
Ztring Path_Begin=List[File_Pos];
Path_Begin.resize(Path_Begin.size()-(1+8+1+4+1+10));
Path_Begin+=Ztring(1, PathSeparator);
bool HasChanged=false;
for (size_t Pos=0; Pos<List.size(); Pos++)
{
if (List[Pos].find(Path_Begin)==0 && List[Pos].find(Path_Begin+_T("CONTENTS")+PathSeparator+_T("CLIP")+PathSeparator)==string::npos) //Remove all subdirs of Path_Begin but not with CLIP
{
//Removing the file in the P2 directory
List.erase(List.begin()+Pos);
Pos--;
HasChanged=true;
}
}
if (HasChanged)
File_Pos=0;
}
}
}
开发者ID:thespooler,项目名称:mediainfo-code,代码行数:29,代码来源:Reader_Directory.cpp
示例3: Bdmv_Directory_Cleanup
void Reader_Directory::Bdmv_Directory_Cleanup(ZtringList &List)
{
//if there is a BDMV folder, this is blu-ray
Ztring ToSearch=Ztring(1, PathSeparator)+_T("BDMV")+PathSeparator+_T("index.bdmv"); //"\BDMV\index.bdmv"
for (size_t File_Pos=0; File_Pos<List.size(); File_Pos++)
{
size_t BDMV_Pos=List[File_Pos].find(ToSearch);
if (BDMV_Pos!=string::npos && BDMV_Pos!=0 && BDMV_Pos+16==List[File_Pos].size())
{
//This is a BDMV index, parsing the directory only if index and movie objects are BOTH present
ToSearch=List[File_Pos];
ToSearch.resize(ToSearch.size()-10);
ToSearch+=_T("MovieObject.bdmv"); //"%CompletePath%\BDMV\MovieObject.bdmv"
if (List.Find(ToSearch)!=string::npos)
{
//We want the folder instead of the files
List[File_Pos].resize(List[File_Pos].size()-11); //only %CompletePath%\BDMV
ToSearch=List[File_Pos];
for (size_t Pos=0; Pos<List.size(); Pos++)
{
if (List[Pos].find(ToSearch)==0 && List[Pos]!=ToSearch) //Remove all subdirs of ToSearch but not ToSearch
{
//Removing the file in the blu-ray directory
List.erase(List.begin()+Pos);
Pos--;
}
}
}
}
}
}
开发者ID:thespooler,项目名称:mediainfo-code,代码行数:32,代码来源:Reader_Directory.cpp
示例4: reserve
ZtringList::ZtringList(const ZtringList &Source)
{
Separator[0]=Source.Separator[0];
Quote=Source.Quote;
reserve(Source.size());
for (intu Pos=0; Pos<Source.size(); Pos++)
push_back(Source[Pos]);
}
开发者ID:aidv,项目名称:scripts,代码行数:9,代码来源:ZtringList.cpp
示例5: reserve
ZtringList::ZtringList(const ZtringList &Source)
: std::vector<ZenLib::Ztring, std::allocator<ZenLib::Ztring> > ()
{
Separator[0]=Source.Separator[0];
Quote=Source.Quote;
reserve(Source.size());
for (intu Pos=0; Pos<Source.size(); Pos++)
push_back(Source[Pos]);
}
开发者ID:3F,项目名称:FlightSDCpp,代码行数:10,代码来源:ZtringList.cpp
示例6: F
//---------------------------------------------------------------------------
// Chargement CFG
bool ZtringListListF::CFG_Charger ()
{
//Read file
File F(Name);
int8u* Buffer=new int8u[(size_t)F.Size_Get()+1];
size_t BytesCount=F.Read(Buffer, (size_t)F.Size_Get());
F.Close();
if (BytesCount==Error)
{
delete[] Buffer; //Buffer=NULL;
return false;
}
Buffer[(int32u)BytesCount]=(int8u)'\0';
//Convert File --> ZtringList
ZtringList List;
List.Separator_Set(0, EOL);
Ztring Z1;
Z1.From_UTF8((char*)Buffer, 0, BytesCount);
List.Write(Z1);
Ztring SeparatorT=Separator[1];
Separator[1]=__T(";");
Ztring Propriete, Valeur, Commentaire;
for (size_t Pos=0; Pos<List.size(); Pos++)
{
Ztring &Lu=List(Pos);
if (Lu.find(__T("="))>0)
{
//Obtention du Name
Propriete=Lu.SubString(Ztring(), __T("="));
NettoyerEspaces(Propriete);
//Obtention de la valeur
Valeur=Lu.SubString(__T("="), __T(";"), 0, Ztring_AddLastItem);
NettoyerEspaces(Valeur);
}
//Obtention du commentaire
Commentaire=Lu.SubString(__T(";"), Ztring(), 0, Ztring_AddLastItem);
NettoyerEspaces(Commentaire);
//Ecriture
push_back((Propriete+__T(";")+Valeur+__T(";")+Commentaire).c_str()); //Visual C++ 6 is old...
}
Separator[1]=SeparatorT;
delete[] Buffer; //Buffer=NULL;
return true;
}
开发者ID:0vermind,项目名称:NeoLoader,代码行数:51,代码来源:ZtringListListF.cpp
示例7: curl_data
//---------------------------------------------------------------------------
size_t Reader_libcurl::Format_Test_PerParser(MediaInfo_Internal* MI, const String &File_Name)
{
#if defined MEDIAINFO_LIBCURL_DLL_RUNTIME
if (libcurl_Module_Count==0)
return 0; //No libcurl library
#endif //defined MEDIAINFO_LIBCURL_DLL_RUNTIME
Curl_Data=new curl_data();
Curl_Data->Curl=curl_easy_init();
if (Curl_Data->Curl==NULL)
return 0;
#if MEDIAINFO_NEXTPACKET
if (MI->Config.NextPacket_Get())
{
Curl_Data->CurlM=curl_multi_init( );
if (Curl_Data->CurlM==NULL)
return 0;
CURLMcode CodeM=curl_multi_add_handle(Curl_Data->CurlM, Curl_Data->Curl);
if (CodeM!=CURLM_OK)
return 0;
Curl_Data->NextPacket=true;
}
#endif //MEDIAINFO_NEXTPACKET
Curl_Data->MI=MI;
Curl_Data->File_Name=File_Name;
string FileName_String=Ztring(Curl_Data->File_Name).To_Local();
if (MI->Config.File_TimeToLive_Get())
Curl_Data->Time_Max=time(0)+(time_t)MI->Config.File_TimeToLive_Get();
if (!MI->Config.File_Curl_Get(_T("UserAgent")).empty())
curl_easy_setopt(Curl_Data->Curl, CURLOPT_USERAGENT, MI->Config.File_Curl_Get(_T("UserAgent")).To_Local().c_str());
if (!MI->Config.File_Curl_Get(_T("Proxy")).empty())
curl_easy_setopt(Curl_Data->Curl, CURLOPT_PROXY, MI->Config.File_Curl_Get(_T("Proxy")).To_Local().c_str());
if (!MI->Config.File_Curl_Get(_T("HttpHeader")).empty())
{
ZtringList HttpHeaderStrings; HttpHeaderStrings.Separator_Set(0, EOL); //End of line is set depending of the platform: \n on Linux, \r on Mac, or \r\n on Windows
HttpHeaderStrings.Write(MI->Config.File_Curl_Get(_T("HttpHeader")));
for (size_t Pos=0; Pos<HttpHeaderStrings.size(); Pos++)
curl_slist_append(Curl_Data->HttpHeader, HttpHeaderStrings[Pos].To_Local().c_str());
curl_easy_setopt(Curl_Data->Curl, CURLOPT_HTTPHEADER, Curl_Data->HttpHeader);
}
curl_easy_setopt(Curl_Data->Curl, CURLOPT_URL, FileName_String.c_str());
curl_easy_setopt(Curl_Data->Curl, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt(Curl_Data->Curl, CURLOPT_MAXREDIRS, 3);
curl_easy_setopt(Curl_Data->Curl, CURLOPT_WRITEFUNCTION, &libcurl_WriteData_CallBack);
curl_easy_setopt(Curl_Data->Curl, CURLOPT_WRITEDATA, Curl_Data);
//Test the format with buffer
return Format_Test_PerParser_Continue(MI);
}
开发者ID:eagleatustb,项目名称:p2pdown,代码行数:50,代码来源:Reader_libcurl.cpp
示例8: Element_Name
//---------------------------------------------------------------------------
void File_Dsdiff::DSD__PROP_CHNL()
{
Element_Name("Channels");
//Parsing
int16u numChannels;
vector<int32u> chIDs;
Get_B2 (numChannels, "numChannels");
while (Element_Offset<Element_Size)
{
int32u chID;
Get_C4 (chID, "chID");
chIDs.push_back(chID);
}
FILLING_BEGIN();
Fill(Stream_Audio, 0, Audio_Channel_s_, numChannels);
int32u ChannelPositions=0;
int32u ChannelPositions2=0;
ZtringList ChannelLayout;
ChannelLayout.Separator_Set(0, __T(" "));
for (size_t i=0; i<chIDs.size(); i++)
{
DSDIFF_CHNL_chID_ChannelPositions(chIDs[i], ChannelPositions);
DSDIFF_CHNL_chID_ChannelPositions2(chIDs[i], ChannelPositions2);
ChannelLayout.push_back(DSDIFF_CHNL_chID(chIDs[i]));
}
Ztring ChannelPositions_New=DSDIFF_CHNL_chID_ChannelPositions(ChannelPositions);
const Ztring& ChannelPositions_Old=Retrieve_Const(Stream_Audio, 0, Audio_ChannelPositions);
if (ChannelPositions_New!=ChannelPositions_Old)
Fill(Stream_Audio, 0, Audio_ChannelPositions, ChannelPositions_New);
Ztring ChannelPositions2_New=DSDIFF_CHNL_chID_ChannelPositions2(ChannelPositions2);
const Ztring& ChannelPositions2_Old=Retrieve_Const(Stream_Audio, 0, Audio_ChannelPositions_String2);
if (ChannelPositions2_New!=ChannelPositions2_Old)
Fill(Stream_Audio, 0, Audio_ChannelPositions_String2, ChannelPositions2_New);
const Ztring& ChannelLayout_New=ChannelLayout.Read();
const Ztring& ChannelLayout_Old=Retrieve_Const(Stream_Audio, 0, Audio_ChannelLayout);
if (ChannelLayout_New!=ChannelLayout_Old)
Fill(Stream_Audio, 0, Audio_ChannelLayout, ChannelLayout_New);
FILLING_END();
}
开发者ID:MediaArea,项目名称:MediaInfoLib,代码行数:42,代码来源:File_Dsdiff.cpp
示例9: clear
//---------------------------------------------------------------------------
// Set
void InfoMap::Write(const Ztring &NewInfoMap)
{
clear();
if (NewInfoMap.empty())
return;
size_t Pos1=0, Pos2_EOL=0, Pos2_Separator=0;
while (Pos2_EOL!=(size_t)-1)
{
Pos2_EOL=NewInfoMap.find(__T('\n'), Pos1);
Pos2_Separator=NewInfoMap.find(__T(';'), Pos1);
if (Pos2_Separator<Pos2_EOL)
{
ZtringList List; List.Write(NewInfoMap.substr(Pos1, Pos2_EOL-Pos1));
insert (pair<Ztring, ZtringList>(NewInfoMap.substr(Pos1, Pos2_Separator-Pos1), List));
}
Pos1=Pos2_EOL+1;
}
}
开发者ID:0vermind,项目名称:NeoLoader,代码行数:23,代码来源:InfoMap.cpp
示例10: _T
//---------------------------------------------------------------------------
void File__Analyze::Fill (stream_t StreamKind, size_t StreamPos, size_t Parameter, const Ztring &Value, bool Replace)
{
//Integrity
if (StreamKind>Stream_Max)
return;
//Handling values with \r\n inside
if (Value.find(_T('\r'))!=string::npos || Value.find(_T('\n'))!=string::npos)
{
Ztring NewValue=Value;
NewValue.FindAndReplace(_T("\r\n"), _T(" / "), 0, Ztring_Recursive);
NewValue.FindAndReplace(_T("\r"), _T(" / "), 0, Ztring_Recursive);
NewValue.FindAndReplace(_T("\n"), _T(" / "), 0, Ztring_Recursive);
if (NewValue.size()>=3 && NewValue.rfind(_T(" / "))==NewValue.size()-3)
NewValue.resize(NewValue.size()-3);
Fill(StreamKind, StreamPos, Parameter, NewValue, Replace);
return;
}
//Handle Value before StreamKind
if (StreamKind==Stream_Max || StreamPos>=(*Stream)[StreamKind].size())
{
ZtringList NewList;
NewList.push_back(Ztring().From_Number(Parameter));
NewList.push_back(Value);
Fill_Temp.push_back(NewList);
return; //No streams
}
Ztring &Target=(*Stream)[StreamKind][StreamPos](Parameter);
if (Target.empty() || Replace)
Target=Value; //First value
else if (Value.empty())
Target.clear(); //Empty value --> clear other values
else
{
Target+=MediaInfoLib::Config.TagSeparator_Get();
Target+=Value;
}
}
开发者ID:thespooler,项目名称:mediainfo-code,代码行数:41,代码来源:File__Analyze_Streams.cpp
示例11: Element_WaitForMoreData
void File_OtherText::Read_Buffer_Continue()
{
if (Buffer_Size<0x200)
{
Element_WaitForMoreData();
return;
}
Element_Offset=File_Size-(File_Offset+Buffer_Offset);
Ztring Format, FormatMore, Codec;
Ztring File;
ZtringList Lines;
//Feed File and Lines
File.From_UTF8((const char*)Buffer, Buffer_Size>65536?65536:Buffer_Size);
if (File.empty())
File.From_Local((const char*)Buffer, Buffer_Size>65536?65536:Buffer_Size); // Trying from local code page
if (File.size()<0x100)
{
File.From_Unicode((wchar_t*)Buffer, 0, Buffer_Size/sizeof(wchar_t)); //Unicode with BOM
//TODO: Order of bytes (big or Little endian)
if (File.size()<0x100)
{
Reject("Other text");
return;
}
}
if (File.size()>0x1000)
File.resize(0x1000); //Do not work on too big
File.FindAndReplace(__T("\r\n"), __T("\n"), 0, Ztring_Recursive);
File.FindAndReplace(__T("\r"), __T("\n"), 0, Ztring_Recursive);
Lines.Separator_Set(0, __T("\n"));
Lines.Write(File);
Lines.resize(0x20);
if (Lines[0]==__T("[Script Info]")
&& (Lines.Find(__T("ScriptType: v4.00"))!=Error || Lines.Find(__T("Script Type: V4.00"))!=Error)
&& Lines.Find(__T("[V4 Styles]"))!=Error
)
{
Format=__T("SSA");
FormatMore=__T("SubStation Alpha");
Codec=__T("SSA");
}
else if (Lines[0]==__T("[Script Info]")
&& (Lines.Find(__T("ScriptType: v4.00+"))!=Error || Lines.Find(__T("Script Type: V4.00+"))!=Error)
&& Lines.Find(__T("[V4+ Styles]"))!=Error
)
{
Format=__T("ASS");
FormatMore=__T("Advanced SubStation Alpha");
Codec=__T("ASS");
}
else if (Lines[0].size()>24
&& Lines[0][ 0]==__T('0') && Lines[0][ 1]==__T('0')
&& Lines[0][ 2]==__T(':') && Lines[0][ 5]==__T(':') && Lines[0][ 8]==__T(':')
&& Lines[0][11]==__T(' ')
&& Lines[0][12]==__T('0') && Lines[0][13]==__T('0')
&& Lines[0][14]==__T(':') && Lines[0][17]==__T(':') && Lines[0][20]==__T(':')
&& Lines[0][23]==__T(' ')
)
{
Format=__T("Adobe encore DVD");
Codec=__T("Adobe");
}
else if (Lines[0].size()==11
&& Lines[0][0]==__T('-') && Lines[0][1]==__T('-') && Lines[0][2]==__T('>') && Lines[0][3]==__T('>') && Lines[0][4]==__T(' ')
&& Lines[0][5]==__T('0')
&& Lines[1].empty()!=true
)
{
Format=__T("AQTitle");
Codec=__T("AQTitle");
}
else if (Lines[0].size()>28
&& Lines[0][ 0]==__T('0') && Lines[0][ 1]==__T('0')
&& Lines[0][ 2]==__T(':') && Lines[0][ 5]==__T(':') && Lines[0][ 8]==__T(':')
&& Lines[0][11]==__T(' ') && Lines[0][12]==__T(',') && Lines[0][13]==__T(' ')
&& Lines[0][14]==__T('0') && Lines[0][15]==__T('0')
&& Lines[0][16]==__T(':') && Lines[0][19]==__T(':') && Lines[0][22]==__T(':')
&& Lines[0][25]==__T(' ') && Lines[0][16]==__T(',') && Lines[0][27]==__T(' ')
)
{
Format=__T("Captions 32");
Codec=__T("Caption 32");
}
else if (Lines[0].size()==23
&& Lines[0]==__T("*Timecode type: PAL/EBU")
&& Lines[1].empty()
&& Lines[2].size()==23
&& Lines[2][ 0]==__T('0') && Lines[2][ 1]==__T('0')
&& Lines[2][ 2]==__T(':') && Lines[2][ 5]==__T(':') && Lines[2][ 8]==__T(':')
&& Lines[2][11]==__T(' ')
&& Lines[2][12]==__T('0') && Lines[2][13]==__T('0')
&& Lines[2][14]==__T(':') && Lines[2][17]==__T(':') && Lines[2][20]==__T(':')
&& Lines[2].size()>0
)
{
Format=__T("Captions Inc");
//.........这里部分代码省略.........
开发者ID:0vermind,项目名称:NeoLoader,代码行数:101,代码来源:File_OtherText.cpp
示例12: Reject
//---------------------------------------------------------------------------
bool File_Hls::FileHeader_Begin()
{
//Element_Size
if (File_Size>1024*1024 || File_Size<10)
{
Reject("HLS");
return false; //HLS files are not big
}
if (Buffer_Size<File_Size)
return false; //Wait for complete file
Ztring Document; Document.From_UTF8((char*)Buffer, Buffer_Size);
ZtringList Lines;
size_t LinesSeparator_Pos=Document.find_first_of(__T("\r\n"));
if (LinesSeparator_Pos>File_Size-1)
{
Reject("HLS");
return false;
}
Ztring LinesSeparator;
if (Document[LinesSeparator_Pos]==__T('\r') && LinesSeparator_Pos+1<Document.size() && Document[LinesSeparator_Pos+1]==__T('\n'))
LinesSeparator=__T("\r\n");
else if (Document[LinesSeparator_Pos]==__T('\r'))
LinesSeparator=__T("\r");
else if (Document[LinesSeparator_Pos]==__T('\n'))
LinesSeparator=__T("\n");
else
{
Reject("HLS");
return false;
}
Lines.Separator_Set(0, LinesSeparator);
Lines.Write(Document);
if (Lines(0)!=__T("#EXTM3U"))
{
Reject("HLS");
return false;
}
Accept("HLS");
Fill(Stream_General, 0, General_Format, "HLS");
ReferenceFiles=new File__ReferenceFilesHelper(this, Config);
if (!IsSub)
ReferenceFiles->ContainerHasNoId=true;
File__ReferenceFilesHelper::reference ReferenceFile;
bool IsGroup=false;
for (size_t Line=0; Line<Lines.size(); Line++)
{
if (!Lines[Line].empty())
{
if (Lines[Line].find(__T("#EXT-X-STREAM-INF"))==0)
IsGroup=true;
else if (Lines[Line][0]==__T('#'))
;
else
{
if (IsGroup)
{
File__ReferenceFilesHelper::reference ReferenceStream;
ReferenceStream.FileNames.push_back(Lines[Line]);
ReferenceStream.StreamID=ReferenceFiles->References.size()+1;
ReferenceFiles->References.push_back(ReferenceStream);
IsGroup=false;
#if MEDIAINFO_EVENTS
ParserIDs[0]=MediaInfo_Parser_HlsIndex;
StreamIDs_Width[0]=sizeof(size_t)*2;
#endif //MEDIAINFO_EVENTS
}
else
ReferenceFile.FileNames.push_back(Lines[Line]);
}
}
}
if (ReferenceFiles->References.empty())
{
ReferenceFiles->References.push_back(ReferenceFile);
ReferenceFiles->TestContinuousFileNames=true;
}
Element_Offset=File_Size;
//All should be OK...
return true;
}
开发者ID:snarkus,项目名称:flylinkdc-r5xx,代码行数:91,代码来源:File_Hls.cpp
示例13: if
ZtringList Dir::GetAllFileNames(const Ztring &Dir_Name_, dirlist_t Options)
{
ZtringList ToReturn;
Ztring Dir_Name=Dir_Name_;
#ifdef ZENLIB_USEWX
int Flags=wxDIR_FILES | wxDIR_DIRS;
//Search for files
wxArrayString Liste;
wxFileName FullPath; FullPath=Dir_Name.c_str();
//-File
if (FullPath.FileExists())
{
FullPath.Normalize();
Liste.Add(FullPath.GetFullPath());
}
//-Directory
else if (FullPath.DirExists())
{
FullPath.Normalize();
wxDir::GetAllFiles(FullPath.GetFullPath(), &Liste, Ztring(), Flags);
}
//-WildCards
else
{
wxString FileName=FullPath.GetFullName();
FullPath.SetFullName(Ztring()); //Supress filename
FullPath.Normalize();
if (FullPath.DirExists())
wxDir::GetAllFiles(FullPath.GetPath(), &Liste, FileName, Flags);
}
//Compatible array
ToReturn.reserve(Liste.GetCount());
for (size_t Pos=0; Pos<Liste.GetCount(); Pos++)
ToReturn.push_back(Liste[Pos].c_str());
#else //ZENLIB_USEWX
#ifdef WINDOWS
//Is a dir?
if (Exists(Dir_Name))
Dir_Name+=_T("\\*");
//Path
Ztring Path=FileName::Path_Get(Dir_Name);
if (Path.empty())
{
#ifdef UNICODE
#ifndef ZENLIB_NO_WIN9X_SUPPORT
if (IsWin9X_Fast())
{
DWORD Path_Size=GetFullPathNameA(Dir_Name.To_Local().c_str(), 0, NULL, NULL);
char* PathTemp=new char[Path_Size+1];
if (GetFullPathNameA(Dir_Name.To_Local().c_str(), Path_Size+1, PathTemp, NULL))
Path=FileName::Path_Get(PathTemp);
delete [] PathTemp; //PathTemp=NULL;
}
else
#endif //ZENLIB_NO_WIN9X_SUPPORT
{
DWORD Path_Size=GetFullPathName(Dir_Name.c_str(), 0, NULL, NULL);
Char* PathTemp=new Char[Path_Size+1];
if (GetFullPathNameW(Dir_Name.c_str(), Path_Size+1, PathTemp, NULL))
Path=FileName::Path_Get(PathTemp);
delete [] PathTemp; //PathTemp=NULL;
}
#else
DWORD Path_Size=GetFullPathName(Dir_Name.c_str(), 0, NULL, NULL);
Char* PathTemp=new Char[Path_Size+1];
if (GetFullPathName(Dir_Name.c_str(), Path_Size+1, PathTemp, NULL))
Path=FileName::Path_Get(PathTemp);
delete [] PathTemp; //PathTemp=NULL;
#endif //UNICODE
}
#ifdef UNICODE
WIN32_FIND_DATAW FindFileDataW;
HANDLE hFind;
#ifndef ZENLIB_NO_WIN9X_SUPPORT
WIN32_FIND_DATAA FindFileDataA;
if (IsWin9X_Fast())
hFind=FindFirstFileA(Dir_Name.To_Local().c_str(), &FindFileDataA);
else
#endif //ZENLIB_NO_WIN9X_SUPPORT
hFind=FindFirstFileW(Dir_Name.c_str(), &FindFileDataW);
#else
WIN32_FIND_DATA FindFileData;
HANDLE hFind=FindFirstFile(Dir_Name.c_str(), &FindFileData);
#endif //UNICODE
if (hFind==INVALID_HANDLE_VALUE)
return ZtringList();
BOOL ReturnValue;
do
{
#ifdef UNICODE
Ztring File_Name;
#ifndef ZENLIB_NO_WIN9X_SUPPORT
if (IsWin9X_Fast())
//.........这里部分代码省略.........
开发者ID:achiarifman,项目名称:mkm4v,代码行数:101,代码来源:Dir.cpp
示例14: Reject
//.........这里部分代码省略.........
if (!strcmp(ResourceList_Item->Value(), "Resource"))
{
Ztring Resource_Id;
File__ReferenceFilesHelper::reference::completeduration Resource;
for (XMLElement* Resource_Item=ResourceList_Item->FirstChildElement(); Resource_Item; Resource_Item=Resource_Item->NextSiblingElement())
{
//EditRate
if (!strcmp(Resource_Item->Value(), "EditRate"))
{
const char* EditRate=Resource_Item->GetText();
Resource.IgnoreFramesRate=atof(EditRate);
const char* EditRate2=strchr(EditRate, ' ');
if (EditRate2!=NULL)
{
float64 EditRate2f=atof(EditRate2);
if (EditRate2f)
Resource.IgnoreFramesRate/=EditRate2f;
}
}
//EntryPoint
if (!strcmp(Resource_Item->Value(), "EntryPoint"))
Resource.IgnoreFramesBefore=atoi(Resource_Item->GetText());
//Id
if (!strcmp(File_Item->Value(), "Id") && Resource_Id.empty())
Resource_Id.From_UTF8(File_Item->GetText());
//SourceDuration
if (!strcmp(Resource_Item->Value(), "SourceDuration"))
Resource.IgnoreFramesAfterDuration=atoi(Resource_Item->GetText());
//TrackFileId
if (!strcmp(Resource_Item->Value(), "TrackFileId"))
Resource.FileName.From_UTF8(Resource_Item->GetText());
}
if (Resource.FileName.empty())
Resource.FileName=Resource_Id;
ReferenceFile.CompleteDuration.push_back(Resource);
}
}
}
}
if (ReferenceFile.CompleteDuration.empty())
{
File__ReferenceFilesHelper::reference::completeduration Resource;
Resource.FileName=Asset_Id;
ReferenceFile.CompleteDuration.push_back(Resource);
}
ReferenceFile.StreamID=ReferenceFiles->References.size()+1;
ReferenceFiles->References.push_back(ReferenceFile);
}
}
}
}
}
}
}
}
Element_Offset=File_Size;
//Getting files names
if (!Config->File_IsReferenced_Get())
{
FileName Directory(File_Name);
ZtringList List;
if (IsImf)
List=Dir::GetAllFileNames(Directory.Path_Get()+PathSeparator+__T("PKL_*.xml"), Dir::Include_Files);
if (IsDcp || List.empty())
List=Dir::GetAllFileNames(Directory.Path_Get()+PathSeparator+__T("*_pkl.xml"), Dir::Include_Files);
for (size_t Pos=0; Pos<List.size(); Pos++)
{
MediaInfo_Internal MI;
MI.Option(__T("File_KeepInfo"), __T("1"));
Ztring ParseSpeed_Save=MI.Option(__T("ParseSpeed_Get"), __T(""));
Ztring Demux_Save=MI.Option(__T("Demux_Get"), __T(""));
MI.Option(__T("ParseSpeed"), __T("0"));
MI.Option(__T("Demux"), Ztring());
MI.Option(__T("File_IsReferenced"), __T("1"));
size_t MiOpenResult=MI.Open(List[Pos]);
MI.Option(__T("ParseSpeed"), ParseSpeed_Save); //This is a global value, need to reset it. TODO: local value
MI.Option(__T("Demux"), Demux_Save); //This is a global value, need to reset it. TODO: local value
if (MiOpenResult
&& ((IsDcp && MI.Get(Stream_General, 0, General_Format)==__T("DCP PKL"))
|| (IsImf && MI.Get(Stream_General, 0, General_Format)==__T("IMF PKL"))))
{
DcpCpl_MergeFromPkl(ReferenceFiles, ((File_DcpCpl*)MI.Info)->ReferenceFiles);
}
}
}
ReferenceFiles->FilesForStorage=true;
//All should be OK...
return true;
}
开发者ID:drizt,项目名称:libmediainfo-all-inclusive,代码行数:101,代码来源:File_DcpCpl.cpp
示例15: Close
//---------------------------------------------------------------------------
size_t MediaInfoList_Internal::Open(const String &File_Name, const fileoptions_t Options)
{
//Option FileOption_Close
if (Options & FileOption_CloseAll)
Close(All);
//Option Recursive
//TODO
//Get all filenames
ZtringList List;
if ((File_Name.size()>=7
&& File_Name[0]==_T('h')
&& File_Name[1]==_T('t')
&& File_Name[2]==_T('t')
&& File_Name[3]==_T('p')
&& File_Name[4]==_T(':')
&& File_Name[5]==_T('/')
&& File_Name[6]==_T('/'))
|| (File_Name.size()>=6
&& File_Name[0]==_T('f')
&& File_Name[1]==_T('t')
&& File_Name[2]==_T('p')
&& File_Name[3]==_T(':')
&& File_Name[4]==_T('/')
&& File_Name[5]==_T('/'))
|| (File_Name.size()>=6
&& File_Name[0]==_T('m')
&& File_Name[1]==_T('m')
&& File_Name[2]==_T('s')
&& File_Name[3]==_T(':')
&& File_Name[4]==_T('/')
&& File_Name[5]==_T('/'))
|| (File_Name.size()>=7
&& File_Name[0]==_T('m')
&& File_Name[1]==_T('m')
&& File_Name[2]==_T('s')
&& File_Name[3]==_T('h')
&& File_Name[4]==_T(':')
&& File_Name[5]==_T('/')
&& File_Name[6]==_T('/')))
List.push_back(File_Name);
else if (File::Exists(File_Name))
List.push_back(File_Name);
else
List=Dir::GetAllFileNames(File_Name, (Options&FileOption_NoRecursive)?Dir::Nothing:Dir::Parse_SubDirs);
Reader_Directory::Directory_Cleanup(List);
//Registering files
CS.Enter();
if (ToParse.empty())
CountValid=0;
for (ZtringList::iterator L=List.begin(); L!=List.end(); L++)
ToParse.push(*L);
ToParse_Total+=List.size();
if (ToParse_Total)
State=ToParse_AlreadyDone*10000/ToParse_Total;
else
State=10000;
CS.Leave();
//Parsing
if (BlockMethod==1)
{
CS.Enter();
if (!IsRunning()) //If already created, the routine will read the new files
{
RunAgain();
IsInThread=true;
}
CS.Leave();
return 0;
}
else
{
Entry(); //Normal parsing
return Count_Get();
}
}
开发者ID:thespooler,项目名称:mediainfo-code,代码行数:81,代码来源:MediaInfoList_Internal.cpp
示例16: Get_Local
//---------------------------------------------------------------------------
void File_Y4m::FileHeader_Parse()
{
//Parsing
Ztring Header;
Get_Local(HeaderEnd, Header, "Data");
ZtringList List; List.Separator_Set(0, " ");
List.Write(Header);
int64u Width=0, Height=0, Multiplier=0, Divisor=1;
float64 FrameRate=0;
for (size_t Pos=1; Pos<List.size(); Pos++)
{
if (!List[Pos].empty())
{
switch (List[Pos][0])
{
case 'A' : //Pixel aspect ratio
{
ZtringList Value; Value.Separator_Set(0, ":");
Value.Write(List[Pos].substr(1));
if (Value.size()==2)
{
float64 x=Value[0].To_float64();
float64 y=Value[1].To_float64();
if (x && y)
Fill(Stream_Video, 0, Video_PixelAspectRatio, x/y, 3);
}
}
break;
case 'C' : //Color space
if (List[Pos]==__T("C420jpeg") || List[Pos]==__T("C420paldv") || List[Pos]==__T("C420"))
{
Fill(Stream_Video, 0, Video_ChromaSubsampling, "4:2:0");
Multiplier=3;
Divisor=2;
}
if (List[Pos]==__T("C422"))
{
Fill(Stream_Video, 0, Video_ChromaSubsampling, "4:2:2");
Multiplier=2;
}
if (List[Pos]==__T("C444"))
{
Fill(Stream_Video, 0, Video_ChromaSubsampling, "4:4:4");
Multiplier=3;
}
break;
case 'F' : //Frame rate
{
ZtringList Value; Value.Separator_Set(0, ":");
Value.Write(List[Pos].substr(1));
if (Value.size()==2)
{
float64 N=Value[0].To_float64();
float64 D=Value[1].To_float64();
if (N && D)
{
FrameRate=N/D;
Fill(Stream_Video, 0, Video_FrameRate, FrameRate, 3);
}
}
}
break;
case 'H' : //Height
{
Ztring Value=List[Pos].substr(1);
Height=Value.To_int64u();
Fill(Stream_Video, 0, Video_Height, Height); break;
}
break;
case 'I' : //Interlacing
if (List[Pos].size()==2)
switch (List[Pos][1])
{
case 'p' : Fill(Stream_Video, 0, Video_ScanType, "Progressive"); break;
case 't' : Fill(Stream_Video, 0, Video_ScanType, "Progressive"); Fill(Stream_Video, 0, Video_ScanOrder, "TFF"); break;
case 'b' : Fill(Stream_Video, 0, Video_ScanType, "Progressive"); Fill(Stream_Video, 0, Video_ScanOrder, "BFF"); break;
case 'm' : Fill(Stream_Video, 0, Video_ScanType, "Mixed"); break;
default : ;
}
break;
case 'W' : //Width
{
Ztring Value=List[Pos].substr(1);
Width=Value.To_int64u();
Fill(Stream_Video, 0, Video_Width, Width); break;
}
break;
default : ;
}
}
}
//Duration (we expect no meta per frame)
if (Width && Height && Multiplier)
{
int64u Frame_ByteSize=6+Width*Height*Multiplier/Divisor; //5 for "FRAME\0"
Fill(Stream_Video, 0, Video_FrameCount, File_Size/Frame_ByteSize);
if (FrameRate)
//.........这里部分代码省略.........
开发者ID:AeonAxan,项目名称:mpc-hc,代码行数:101,代码来源:File_Y4m.cpp
示例17: Reject
//---------------------------------------------------------------------------
void File_Ptx::Read_Buffer_Continue()
{
if (File_Offset || Buffer_Offset)
{
if (Buffer_Size)
Reject(); //Problem
return;
}
//Parsing
ZtringList Names;
Ztring LibraryName, LibraryVersion, Format, Directory;
int32u LibraryName_Length, LibraryVersion_Length, LibraryRelease_Length, Format_Length, Platform_Length, Info_Count, Names_Count, Info_Length, Name_Length, FileName_Count, Directory_Length;
int32u Unknown_Length;
int16u Audio_Count;
Element_Begin1("Header");
Skip_B1( "Magic");
Skip_Local(16, "Magic");
Skip_L2( "0x0500");
Skip_L1( "Unknown");
Skip_L1( "0x5A");
Skip_L2( "0x0001");
Skip_L2( "0x0004");
Skip_L2( "0x0000");
Skip_L4( "Unknown");
Skip_L2( "0x035A");
Skip_L2( "0x6400");
Skip_L2( "0x0000");
Skip_L2( "0x0300");
Skip_L2( "0x0000");
Get_L4 (LibraryName_Length, "WritingLibrary name length");
Get_UTF8(LibraryName_Length, LibraryName, "Library name");
Skip_L4( "0x00000003");
Skip_L4( "Library version, major");
Skip_L4( "Library version, minor");
Skip_L4( "
|
请发表评论