Skip to content
Permalink
Browse files

* r504 release sp build-21632

  • Loading branch information...
pavel-pimenov committed Sep 5, 2018
1 parent 31f32b4 commit 8796c7d3ba8f335ab654f1c4e9af9b33df11d51a
Showing with 9,141 additions and 4,599 deletions.
  1. +6 −19 Doxyfile
  2. +7 −6 FlyFeatures/CFlyTorrentDialog.h
  3. +1 −1 FlyFeatures/flyServer.cpp
  4. +5 −1 FlylinkDC.rc
  5. +28 −0 MediaInfoLib/History_DLL.txt
  6. +36 −20 MediaInfoLib/Source/MediaInfo/Audio/File_Ac3.cpp
  7. +17 −0 MediaInfoLib/Source/MediaInfo/Audio/File_Mpega.cpp
  8. +0 −46 MediaInfoLib/Source/MediaInfo/Audio/File_SmpteSt0331.cpp
  9. +122 −3 MediaInfoLib/Source/MediaInfo/Export/Export_Mpeg7.cpp
  10. +1 −1 MediaInfoLib/Source/MediaInfo/Export/Export_Niso.cpp
  11. +109 −26 MediaInfoLib/Source/MediaInfo/Export/Export_PBCore2.cpp
  12. +2 −0 MediaInfoLib/Source/MediaInfo/File__Analyze.h
  13. +1 −1 MediaInfoLib/Source/MediaInfo/File__Analyze_Buffer.cpp
  14. +2 −0 MediaInfoLib/Source/MediaInfo/File__Analyze_MinimizeSize.h
  15. +6 −74 MediaInfoLib/Source/MediaInfo/File__Analyze_Streams.cpp
  16. +155 −8 MediaInfoLib/Source/MediaInfo/File__Analyze_Streams_Finish.cpp
  17. +111 −25 MediaInfoLib/Source/MediaInfo/MediaInfoList_Internal.cpp
  18. +3 −0 MediaInfoLib/Source/MediaInfo/MediaInfoList_Internal.h
  19. +150 −15 MediaInfoLib/Source/MediaInfo/MediaInfo_Config.cpp
  20. +12 −3 MediaInfoLib/Source/MediaInfo/MediaInfo_Config.h
  21. +3 −3 MediaInfoLib/Source/MediaInfo/MediaInfo_Config_Automatic.cpp
  22. +23 −0 MediaInfoLib/Source/MediaInfo/MediaInfo_Config_MediaInfo.cpp
  23. +4 −0 MediaInfoLib/Source/MediaInfo/MediaInfo_Config_MediaInfo.h
  24. +153 −10 MediaInfoLib/Source/MediaInfo/MediaInfo_Internal.cpp
  25. +1 −0 MediaInfoLib/Source/MediaInfo/Multiple/File_Hls.cpp
  26. +256 −0 MediaInfoLib/Source/MediaInfo/Multiple/File_MiXml.cpp
  27. +5 −4 MediaInfoLib/Source/MediaInfo/Multiple/File_Mk.cpp
  28. +1 −1 MediaInfoLib/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp
  29. +14 −1 MediaInfoLib/Source/MediaInfo/Multiple/File_Mxf.cpp
  30. +47 −1 MediaInfoLib/Source/MediaInfo/Multiple/File_Riff_Elements.cpp
  31. +2 −0 MediaInfoLib/Source/MediaInfo/Multiple/File__ReferenceFilesHelper.cpp
  32. +11 −0 MediaInfoLib/Source/MediaInfo/OutputHelpers.cpp
  33. +34 −21 MediaInfoLib/Source/MediaInfo/OutputHelpers.h
  34. +6 −0 MediaInfoLib/Source/MediaInfo/Setup.h
  35. +10 −0 Zenlib/Source/ZenLib/Conf.h
  36. +206 −74 Zenlib/Source/ZenLib/Dir.cpp
  37. +2 −2 Zenlib/Source/ZenLib/Dir.h
  38. +727 −200 Zenlib/Source/ZenLib/File.cpp
  39. +1 −0 Zenlib/Source/ZenLib/File.h
  40. +2 −3 Zenlib/Source/ZenLib/InfoMap.cpp
  41. +189 −3 Zenlib/Source/ZenLib/OS_Utils.cpp
  42. +43 −0 Zenlib/Source/ZenLib/OS_Utils.h
  43. +11 −6 Zenlib/Source/ZenLib/Thread.cpp
  44. +24 −0 Zenlib/Source/ZenLib/Utils.cpp
  45. +4 −4 Zenlib/Source/ZenLib/Ztring.cpp
  46. +0 −2 Zenlib/Source/ZenLib/ZtringListListF.cpp
  47. +3 −3 appveyor.yml
  48. +2 −2 build_flylinkdc_2015.bat
  49. +2 −2 build_flylinkdc_2017.bat
  50. +2 −2 build_flylinkdc_x64_2015.bat
  51. +2 −3 build_flylinkdc_x64_2017.bat
  52. +5 −6 client/CFlylinkDBManager.cpp
  53. +2 −1 client/CFlylinkDBManager.h
  54. +4 −1 client/Client.cpp
  55. +51 −21 client/DownloadManager.cpp
  56. +72 −5 client/FavoriteManager.cpp
  57. +2 −0 client/FavoriteManager.h
  58. +383 −224 client/sqlite/shell.c
  59. +2 −2 client/sqlite/sign-sqlite.bat
  60. +5,383 −3,460 client/sqlite/sqlite3.c
  61. +266 −9 client/sqlite/sqlite3.h
  62. +30 −0 client/sqlite/sqlite3ext.h
  63. +1 −0 compiled/Settings/common/p2pguard_convert.cpp
  64. +22 −1 compiled/readme_changelog_lite.rtf
  65. +108 −108 jsoncpp/include/json/json.h
  66. +64 −63 jsoncpp/jsoncpp.cpp
  67. +1 −1 libtorrent/include/libtorrent/torrent_handle.hpp
  68. +6 −0 libtorrent/include/libtorrent/torrent_status.hpp
  69. BIN res/vip_a_galaxy.ico
  70. BIN res/vip_kcahdep.ico
  71. BIN res/vip_piter.ico
  72. +1 −1 revision.h
  73. +5 −5 test/test-console.vcxproj
  74. +4 −5 windows/ChatCtrl.cpp
  75. +102 −56 windows/HubFrame.cpp
  76. +33 −9 windows/SearchFrm.cpp
  77. +1 −0 windows/SearchFrm.h
  78. +10 −12 windows/UserInfoSimple.cpp
  79. +15 −11 windows/WinUtil.cpp
  80. +1 −1 windows/WinUtil.h
  81. +1 −1 windows/flattabctrl.h
  82. +2 −0 windows/resource.h
@@ -1,4 +1,4 @@
# Doxyfile 1.8.13
# Doxyfile 1.8.11


# This file describes the settings to be used by the documentation system
@@ -294,15 +294,6 @@ EXTENSION_MAPPING =

MARKDOWN_SUPPORT = YES

# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up
# to that level are automatically included in the table of contents, even if
# they do not have an id attribute.
# Note: This feature currently applies only to Markdown headings.
# Minimum value: 0, maximum value: 99, default value: 0.
# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.

TOC_INCLUDE_HEADINGS = 0

# When enabled doxygen tries to link words that correspond to documented
# classes, or namespaces to their corresponding documentation. Such a link can
# be prevented in individual cases by putting a % sign in front of the word or
@@ -781,7 +772,8 @@ WARN_LOGFILE = FlylinkDC.log
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.

INPUT = ./MediaInfoLib
INPUT = ./MediaInfoLib \
./Zenlib

# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -803,8 +795,8 @@ INPUT_ENCODING = UTF-8
# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,
# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,
# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf.
# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f, *.for, *.tcl,
# *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js.

FILE_PATTERNS = *.h \
*.hpp \
@@ -2184,7 +2176,7 @@ DOT_NUM_THREADS = 0
# The default value is: Helvetica.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_FONTNAME = Helvetica
DOT_FONTNAME = FreeSans

# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
# dot graphs.
@@ -2371,11 +2363,6 @@ DIAFILE_DIRS =

PLANTUML_JAR_PATH =

# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a
# configuration file for plantuml.

PLANTUML_CFG_FILE =

# When using plantuml, the specified paths are searched for files specified by
# the !include statement in a plantuml block.

@@ -110,14 +110,15 @@ class CFlyTorrentDialog :

LRESULT onClickedBrowseDir(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
tstring dir = getDir();
if (dir.size())
tstring l_dir = getDir();
if (l_dir.size())
{
if (WinUtil::browseDirectory(dir, m_hWnd))
if (WinUtil::browseDirectory(l_dir, m_hWnd))
{
AppendPathSeparator(dir);
SetDlgItemText(IDC_TORRENT_DOWNLOAD_DIR, dir.c_str());
m_dir = dir;
AppendPathSeparator(l_dir);
SetDlgItemText(IDC_TORRENT_DOWNLOAD_DIR, l_dir.c_str());
m_dir = l_dir;
SET_SETTING(DOWNLOAD_DIRECTORY, Text::fromT(l_dir));
}
}
return 0;
@@ -1951,7 +1951,7 @@ void CFlyServerJSON::pushSyslogError(const string& p_error)
}
#endif
//======================================================================================================
bool CFlyServerJSON::pushError(unsigned p_error_code, string p_error, bool p_is_include_disk_info /* = false*/) // Last Code = 91 (36,58,44,49,83 - óñòàðåëè)
bool CFlyServerJSON::pushError(unsigned p_error_code, string p_error, bool p_is_include_disk_info /* = false*/) // Last Code = 92 (36,58,44,49,83 - óñòàðåëè)
{
bool l_is_send = false;
bool l_is_error = false;
@@ -3054,9 +3054,11 @@ IDR_VIP_ICO_PRIME ICON "res\\vip_prime.ico"

IDR_VIP_ICO_MILLENIUM ICON "res\\vip_millennium.ico"

IDR_VIP_ICO_A_GALAXY ICON "res\\vip_a_galaxy.ico"

IDR_VIP_ICO_PERSEUS ICON "res\\vip_perseus.ico"

IDR_VIP_ICO_ALLAVTOVO ICON "res\\vip_allavtovo.ico"
IDR_VIP_ICO_ALLAVTOVO ICON "res\\vip_piter.ico"

IDR_VIP_ICO_KOROBKA ICON "res\\vip_korobka.ico"

@@ -3076,6 +3078,8 @@ IDR_VIP_ICO_GODC ICON "res\\vip_godc.ico"

IDR_VIP_ZHIGANDC ICON "res\\vip_zhigandc.ico"

IDR_VIP_KCAHDER ICON "res\\vip_kcahdep.ico"


/////////////////////////////////////////////////////////////////////////////
//
@@ -7,6 +7,34 @@ x Correction
bug reports and feature request are here:
https://sourceforge.net/p/mediainfo/_list/tickets

Version 18.08, 2018-08-31
--------------
+ Dolby Atmos (in E-AC-3 or TrueHD): support of bed channel count/configuration + objects count + complexity index
+ AC-3/DTS/AAC: display of info about legacy decoders behavior removed
+ AC-3/DTS/AAC: some changes in how format is displayed
+ AC-3/DTS/AAC: better split between technical names and commercial names
+ AAC: support of profile information from MP4_IOD_Tag AudioProfileLevelIndication
+ USAC (xHE-AAC) support
+ Audio channel layout: using a new terminology, better suited for 3D Audio, see https://mediaarea.net/AudioChannelLayout
+ DSD (DSF & DSDIFF) support
+ DXD (Digital eXtreme Definition) commercial name
+ Dolby Vision: use new form for profile (numbers instead of acronyms)
+ New format "Directory" when image sequence + audio file is detected (1 directory style for the moment)
+ PBCore2 export update, thanks to WGBH
+ MPEG-7 export update
+ NISO export update
+ AV1: support of AOmedia AV1 based on 1.0.0 specifications
+ ATRAC9 detection
+ Versionned RPMs
+ HEVC: better support of buggy SEI
+ ADTS: CodecID
+ Support of injection of external metadata
+ HTTPS: support of AWS extension "x-amz-*" in HTTPS headers, permitting to manage temporary credentials (AssumeRole)
+ MPEG-4, #1005: Obey edit list in QuickTime Timecode track
x MIXML: hide fields which were hidden in normal output
x Hybrid AC-3/E-AC-3 (in Blu-rays): bit rate info was wrong
x Lot of bug fixes, see full log for more info

Version 18.05, 2018-05-09
--------------
+ PBCore 2.1 export update, sponsored by WGBH as part of the NEH-funded PBCore Development and Preservation Project
@@ -21,7 +21,7 @@
//***************************************************************************

//---------------------------------------------------------------------------
#if defined(MEDIAINFO_AC3_YES) || defined(MEDIAINFO_DVDV_YES) || defined(MEDIAINFO_MPEGPS_YES) || defined(MEDIAINFO_MPEGTS_YES)
#if defined(MEDIAINFO_AC3_YES) || defined(MEDIAINFO_DVDV_YES) || defined(MEDIAINFO_MPEGPS_YES) || defined(MEDIAINFO_MPEGTS_YES) || defined(MEDIAINFO_MIXML_YES)
//---------------------------------------------------------------------------

#include "ZenLib/Conf.h"
@@ -1278,14 +1278,14 @@ void File_Ac3::Streams_Fill()
Fill(Stream_Audio, 0, "dialnorm", FirstFrame_Dolby.dialnorm==0?-31:-FirstFrame_Dolby.dialnorm);
Fill_SetOptions(Stream_Audio, 0, "dialnorm", "N NT");
Fill(Stream_Audio, 0, "dialnorm/String", Ztring::ToZtring(FirstFrame_Dolby.dialnorm==0?-31:-FirstFrame_Dolby.dialnorm)+__T(" dB"));
Fill_SetOptions(Stream_Audio, 0, "dialnorm/String", "N NT");
Fill_SetOptions(Stream_Audio, 0, "dialnorm/String", "N NTN");
if (FirstFrame_Dolby.compre)
{
float64 Value=AC3_compr[FirstFrame_Dolby.compr>>4]+20*std::log10(((float)(0x10+(FirstFrame_Dolby.compr&0x0F)))/32);
Fill(Stream_Audio, 0, "compr", Value, 2);
Fill_SetOptions(Stream_Audio, 0, "compr", "N NT");
Fill(Stream_Audio, 0, "compr/String", Ztring::ToZtring(Value, 2)+__T(" dB"));
Fill_SetOptions(Stream_Audio, 0, "compr/String", "N NT");
Fill_SetOptions(Stream_Audio, 0, "compr/String", "N NTN");
}
if (FirstFrame_Dolby.dynrnge)
{
@@ -1297,7 +1297,7 @@ void File_Ac3::Streams_Fill()
Fill(Stream_Audio, 0, "dynrng", Value, 2);
Fill_SetOptions(Stream_Audio, 0, "dynrng", "N NT");
Fill(Stream_Audio, 0, "dynrng/String", Ztring::ToZtring(Value, 2)+__T(" dB"));
Fill_SetOptions(Stream_Audio, 0, "dynrng/String", "N NT");
Fill_SetOptions(Stream_Audio, 0, "dynrng/String", "N NTN");
}

for (int8u Pos=0; Pos<8; Pos++)
@@ -1312,7 +1312,7 @@ void File_Ac3::Streams_Fill()
Fill(Stream_Audio, 0, "dsurmod", dsurmod_Max[Pos][Pos2]);
Fill_SetOptions(Stream_Audio, 0, "dsurmod", "N NT");
Fill(Stream_Audio, 0, "dsurmod/String", AC3_Surround[dsurmod_Max[Pos][Pos2]]);
Fill_SetOptions(Stream_Audio, 0, "dsurmod/String", "N NT");
Fill_SetOptions(Stream_Audio, 0, "dsurmod/String", "N NTN");
}
Fill_SetOptions(Stream_Audio, 0, "bsid", "N NT");
Fill(Stream_Audio, 0, "acmod", acmod_Max[Pos][Pos2]);
@@ -1341,7 +1341,19 @@ void File_Ac3::Streams_Fill()
else if (bsid_Max>0x0A && bsid_Max<=0x10)
SamplesPerFrame=256*(numblkscod==3?6:(numblkscod+1));
else if (HD_MajorSync_Parsed && (HD_StreamType==0xBA || HD_StreamType==0xBB)) // TrueHD or MLP
SamplesPerFrame=40;
{
int64u HD_SamplingRate=Retrieve_Const(Stream_Audio, 0, Audio_SamplingRate).To_int64u();
if (HD_SamplingRate<44100)
SamplesPerFrame=0; //Unknown
else if (HD_SamplingRate<=48000)
SamplesPerFrame=40;
else if (HD_SamplingRate<=96000)
SamplesPerFrame=80;
else if (HD_SamplingRate<=192000)
SamplesPerFrame=160;
else
SamplesPerFrame=0; //Unknown
}
else
SamplesPerFrame=0;
if (SamplesPerFrame)
@@ -1358,9 +1370,13 @@ void File_Ac3::Streams_Fill()
else if (Retrieve(Stream_Audio, 0, Audio_Format)==__T("MLP FBA") || Retrieve(Stream_Audio, 0, Audio_Format_Profile).find(__T("MLP FBA"))==0)
{
if (HasJOC || HD_HasAtmos)
Fill(Stream_Audio, 0, Audio_Format_Commercial_IfAny, "TrueHD with Dolby Atmos");
Fill(Stream_Audio, 0, Audio_Format_Commercial_IfAny, "Dolby TrueHD with Dolby Atmos");
else
Fill(Stream_Audio, 0, Audio_Format_Commercial_IfAny, "TrueHD");
Fill(Stream_Audio, 0, Audio_Format_Commercial_IfAny, "Dolby TrueHD");
}
else if (Retrieve(Stream_Audio, 0, Audio_Format)==__T("MLP") || Retrieve(Stream_Audio, 0, Audio_Format_Profile).find(__T("MLP"))==0)
{
Fill(Stream_Audio, 0, Audio_Format_Commercial_IfAny, "MLP Lossless");
}
else if (Retrieve(Stream_Audio, 0, Audio_Format)==__T("AC-3"))
Fill(Stream_Audio, 0, Audio_Format_Commercial_IfAny, "Dolby Digital");
@@ -1395,17 +1411,17 @@ void File_Ac3::Streams_Finish()
Fill(Stream_Audio, 0, "dialnorm_Average", Average_dB, 0);
Fill_SetOptions(Stream_Audio, 0, "dialnorm_Average", "N NT");
Fill(Stream_Audio, 0, "dialnorm_Average/String", Ztring::ToZtring(Average_dB, 0) + __T(" dB"));
Fill_SetOptions(Stream_Audio, 0, "dialnorm_Average/String", "N NT");
Fill_SetOptions(Stream_Audio, 0, "dialnorm_Average/String", "N NTN");
Fill(Stream_Audio, 0, "dialnorm_Minimum", -Minimum_Raw);
Fill_SetOptions(Stream_Audio, 0, "dialnorm_Minimum", "N NT");
Fill(Stream_Audio, 0, "dialnorm_Minimum/String", Ztring::ToZtring(-Minimum_Raw) + __T(" dB"));
Fill_SetOptions(Stream_Audio, 0, "dialnorm_Minimum/String", "N NT");
Fill_SetOptions(Stream_Audio, 0, "dialnorm_Minimum/String", "N NTN");
Fill(Stream_Audio, 0, "dialnorm_Maximum", -Maximum_Raw);
Fill_SetOptions(Stream_Audio, 0, "dialnorm_Maximum", "N NT");
Fill_SetOptions(Stream_Audio, 0, "dialnorm_Maximum", "N NTN");
Fill(Stream_Audio, 0, "dialnorm_Maximum/String", Ztring::ToZtring(-Maximum_Raw) + __T(" dB"));
Fill_SetOptions(Stream_Audio, 0, "dialnorm_Maximum/String", "N NT");
Fill_SetOptions(Stream_Audio, 0, "dialnorm_Maximum/String", "N NTN");
Fill(Stream_Audio, 0, "dialnorm_Count", Count);
Fill_SetOptions(Stream_Audio, 0, "dialnorm_Count", "N NT");
Fill_SetOptions(Stream_Audio, 0, "dialnorm_Count", "N NTN");
}
}
if (!comprs.empty())
@@ -1431,15 +1447,15 @@ void File_Ac3::Streams_Finish()
Fill(Stream_Audio, 0, "compr_Average", Average_dB, 2);
Fill_SetOptions(Stream_Audio, 0, "compr_Average", "N NT");
Fill(Stream_Audio, 0, "compr_Average/String", Ztring::ToZtring(Average_dB, 2) + __T(" dB"));
Fill_SetOptions(Stream_Audio, 0, "compr_Average/String", "N NT");
Fill_SetOptions(Stream_Audio, 0, "compr_Average/String", "N NTN");
Fill(Stream_Audio, 0, "compr_Minimum", Minimum_dB, 2);
Fill_SetOptions(Stream_Audio, 0, "compr_Minimum", "N NT");
Fill(Stream_Audio, 0, "compr_Minimum/String", Ztring::ToZtring(Minimum_dB, 2) + __T(" dB"));
Fill_SetOptions(Stream_Audio, 0, "compr_Minimum/String", "N NT");
Fill_SetOptions(Stream_Audio, 0, "compr_Minimum/String", "N NTN");
Fill(Stream_Audio, 0, "compr_Maximum", Maximum_dB, 2);
Fill_SetOptions(Stream_Audio, 0, "compr_Maximum", "N NT");
Fill(Stream_Audio, 0, "compr_Maximum/String", Ztring::ToZtring(Maximum_dB, 2) + __T(" dB"));
Fill_SetOptions(Stream_Audio, 0, "compr_Maximum/String", "N NT");
Fill_SetOptions(Stream_Audio, 0, "compr_Maximum/String", "N NTN");
Fill(Stream_Audio, 0, "compr_Count", Count);
Fill_SetOptions(Stream_Audio, 0, "compr_Count", "N NT");
}
@@ -1471,15 +1487,15 @@ void File_Ac3::Streams_Finish()
Fill(Stream_Audio, 0, "dynrng_Average", Average_dB, 2);
Fill_SetOptions(Stream_Audio, 0, "dynrng_Average", "N NT");
Fill(Stream_Audio, 0, "dynrng_Average/String", Ztring::ToZtring(Average_dB, 2) + __T(" dB"));
Fill_SetOptions(Stream_Audio, 0, "dynrng_Average/String", "N NT");
Fill_SetOptions(Stream_Audio, 0, "dynrng_Average/String", "N NTN");
Fill(Stream_Audio, 0, "dynrng_Minimum", Minimum_dB, 2);
Fill_SetOptions(Stream_Audio, 0, "dynrng_Minimum", "N NT");
Fill(Stream_Audio, 0, "dynrng_Minimum/String", Ztring::ToZtring(Minimum_dB, 2) + __T(" dB"));
Fill_SetOptions(Stream_Audio, 0, "dynrng_Minimum/String", "N NT");
Fill_SetOptions(Stream_Audio, 0, "dynrng_Minimum/String", "N NTN");
Fill(Stream_Audio, 0, "dynrng_Maximum", Maximum_dB, 2);
Fill_SetOptions(Stream_Audio, 0, "dynrng_Maximum", "N NT");
Fill(Stream_Audio, 0, "dynrng_Maximum/String", Ztring::ToZtring(Maximum_dB, 2) + __T(" dB"));
Fill_SetOptions(Stream_Audio, 0, "dynrng_Maximum/String", "N NT");
Fill_SetOptions(Stream_Audio, 0, "dynrng_Maximum/String", "N NTN");
Fill(Stream_Audio, 0, "dynrng_Count", Count);
Fill_SetOptions(Stream_Audio, 0, "dynrng_Count", "N NT");
}
@@ -3658,7 +3674,7 @@ void File_Ac3::Core_Frame()
bsid_Max=bsid;

//Specific to first frame
if (acmod_Max[substreamid_Independant_Current][strmtyp+substreamid]==(int8u)-1)
if (!frmsizplus1_Max[substreamid_Independant_Current][strmtyp+substreamid])
{
frmsizplus1_Max[substreamid_Independant_Current][strmtyp+substreamid]=((bsid<=0x09)?(frmsizecod/2<19?AC3_BitRate[frmsizecod/2]*4:0):((frmsiz+1)*2));
acmod_Max[substreamid_Independant_Current][strmtyp+substreamid]=acmod;
@@ -400,6 +400,23 @@ void File_Mpega::Streams_Fill()
Fill(Stream_Audio, 0, Audio_BitRate_Minimum, BitRate_Minimum);
Fill(Stream_Audio, 0, Audio_BitRate_Nominal, BitRate_Nominal);

#if MEDIAINFO_ADVANCED
if (!IsSub && !VBR_Frames && !VBR_FileSize && BitRate_Mode==__T("VBR") && ID<4 && sampling_frequency<4 && Retrieve_Const(Stream_Audio, 0, Audio_BitRate).empty() && Config->File_RiskyBitRateEstimation_Get())
{
size_t Divider;
if (ID==3 && layer==3) //MPEG 1 layer 1
Divider=384/8;
else if ((ID==2 || ID==0) && layer==3) ///MPEG 2 or 2.5 layer 1
Divider=192/8;
else if ((ID==2 || ID==0) && layer==1) //MPEG 2 or 2.5 layer 3
Divider=576/8;
else
Divider=1152/8;
BitRate=(int32u)((File_Offset+Buffer_Offset+Element_Size)*Mpega_SamplingRate[ID][sampling_frequency]/Frame_Count/Divider);
Fill(Stream_Audio, 0, Audio_BitRate, BitRate);
}
#endif //MEDIAINFO_ADVANCED

//Tags
File__Tags_Helper::Streams_Fill();
}
@@ -39,49 +39,6 @@
namespace MediaInfoLib
{

//***************************************************************************
// Infos
//***************************************************************************

//---------------------------------------------------------------------------
static const char* Smpte_St0331_ChannelsPositions(int8u number_channels)
{
switch (number_channels)
{
case 2 : return "Front: L R"; //2 channels
case 4 : return "Front: L C R, LFE"; //4 channels
case 6 : return "Front: L C R, Side: L R, LFE"; //6 channels
case 8 : return "Front: L C R, Side: L R, Back: L R, LFE"; //8 channels
default : return "";
}
}

//---------------------------------------------------------------------------
static const char* Smpte_St0331_ChannelsPositions2(int8u number_channels)
{
switch (number_channels)
{
case 2 : return "2/0/0.0"; //2 channels
case 4 : return "3/0/0.1"; //4 channels
case 6 : return "3/2/0.1"; //6 channels
case 8 : return "3/2/2.1"; //8 channels
default : return "";
}
}

//---------------------------------------------------------------------------
static const char* Smpte_St0331_ChannelLayout(int8u number_channels)
{
switch (number_channels)
{
case 2 : return "L R"; //2 channels
case 4 : return "L R C LFE"; //4 channels
case 6 : return "L R C LFE Ls Rs"; //6 channels
case 8 : return "L R C LFE Ls Rs Lrs Rrs"; //8 channels
default : return "";
}
}

//***************************************************************************
// Constructor/Destructor
//***************************************************************************
@@ -128,9 +85,6 @@ void File_SmpteSt0331::Streams_Fill()

Fill(Stream_Audio, 0, Audio_Format_Settings_Endianness, "Little");
Fill(Stream_Audio, 0, Audio_Channel_s_, Channels_Count);
Fill(Stream_Audio, 0, Audio_ChannelPositions, Smpte_St0331_ChannelsPositions(Channels_Count));
Fill(Stream_Audio, 0, Audio_ChannelPositions_String2, Smpte_St0331_ChannelsPositions2(Channels_Count));
Fill(Stream_Audio, 0, Audio_ChannelLayout, Smpte_St0331_ChannelLayout(Channels_Count));
if (QuantizationBits)
Fill(Stream_Audio, 0, Audio_BitDepth, QuantizationBits);
}

0 comments on commit 8796c7d

Please sign in to comment.
You can’t perform that action at this time.