[SCM] libmediainfo/master: Imported Upstream version 0.7.91
hyperair at users.alioth.debian.org
hyperair at users.alioth.debian.org
Thu Dec 1 16:49:04 UTC 2016
The following commit has been merged in the master branch:
commit ecf80f220d0d3fb342cfdaa1e432eaa7cacdbcfe
Author: Chow Loong Jin <hyperair at debian.org>
Date: Thu Dec 1 23:46:04 2016 +0800
Imported Upstream version 0.7.91
diff --git a/History_DLL.txt b/History_DLL.txt
index 6767ddb..5d81fef 100644
--- a/History_DLL.txt
+++ b/History_DLL.txt
@@ -8,6 +8,18 @@ bug reports and feature request are here:
https://sourceforge.net/p/mediainfo/_list/tickets
+Version 0.7.91, 2016-11-30
+--------------
++ IMF and PTX: more languages detected from file names (but the full list of common languages tags still need to be added)
++ IMF and PTX: support of non-standard but common "LAS" = "Spanish (Latin America)" language code
++ MXF: Support of color primaries, transfer characteristic, coding equations defined in SMPTE ST 2067-21:2016 e.g. xvYCC or BT.2020
++ Minor performance optimizations and cleanup (Thanks to Pavel Pimenov)
++ MediaTrace optimization for Matroska
+x Fixed parsing of FFV1 v0/v1
+x PTX: fix crash due to bad parsing of some file names while looking for track language
+
+
+
Version 0.7.90, 2016-10-31
--------------
+ #M94, WAV: support of file with a buggy RIFF header
diff --git a/Project/CMake/CMakeLists.txt b/Project/CMake/CMakeLists.txt
index 1731b3e..0b63a65 100644
--- a/Project/CMake/CMakeLists.txt
+++ b/Project/CMake/CMakeLists.txt
@@ -6,7 +6,7 @@ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
set(MediaInfoLib_MAJOR_VERSION 0)
set(MediaInfoLib_MINOR_VERSION 7)
-set(MediaInfoLib_PATCH_VERSION 90)
+set(MediaInfoLib_PATCH_VERSION 91)
set(MediaInfoLib_VERSION ${MediaInfoLib_MAJOR_VERSION}.${MediaInfoLib_MINOR_VERSION}.${MediaInfoLib_PATCH_VERSION})
if (NOT WIN32)
diff --git a/Project/GNU/Library/configure.ac b/Project/GNU/Library/configure.ac
index 60e2dc1..ea38f2a 100644
--- a/Project/GNU/Library/configure.ac
+++ b/Project/GNU/Library/configure.ac
@@ -5,7 +5,7 @@ dnl #########################################################################
dnl -------------------------------------------------------------------------
dnl Name and version
dnl
-AC_INIT([libmediainfo], [0.7.90])
+AC_INIT([libmediainfo], [0.7.91])
dnl -------------------------------------------------------------------------
dnl Test if we are at the good place
diff --git a/Project/GNU/PKGBUILD b/Project/GNU/PKGBUILD
index 8eda25c..ab5a21d 100644
--- a/Project/GNU/PKGBUILD
+++ b/Project/GNU/PKGBUILD
@@ -3,13 +3,13 @@
# Contributor: hydro <hydro at freenet.de>
pkgname=libmediainfo
-pkgver=0.7.90
+pkgver=0.7.91
pkgrel=1
pkgdesc="shared library for mediainfo"
arch=('i686' 'x86_64')
url="http://mediaarea.net"
license=('GPL')
-depends=( 'curl' 'libmms' 'libzen>=0.4.33')
+depends=( 'curl' 'libmms' 'libzen>=0.4.34')
makedepends=('libtool' 'automake' 'autoconf')
source=(${pkgname}_${pkgver}.orig.tar.xz)
md5sums=('00000000000000000000000000000000')
diff --git a/Project/GNU/libmediainfo.dsc b/Project/GNU/libmediainfo.dsc
index 27dd66d..2d17a68 100644
--- a/Project/GNU/libmediainfo.dsc
+++ b/Project/GNU/libmediainfo.dsc
@@ -2,13 +2,13 @@ Format: 3.0 (quilt)
Source: libmediainfo
Binary: libmediainfo-dev, libmediainfo0, python-mediainfodll, python3-mediainfodll, libmediainfo-doc libmediainfo0-dbg
Architecture: any all
-Version: 0.7.90-1
+Version: 0.7.91-1
Maintainer: MediaArea.net SARL <info at mediaarea.net>
Homepage: http://MediaArea.net/MediaInfo
Standards-Version: 3.9.6
Vcs-Browser: https://github.com/MediaArea/MediaInfoLib
Vcs-Git: https://github.com/MediaArea/MediaInfoLib.git
-Build-Depends: debhelper (>= 9), dpkg-dev (>= 1.16.1), python-all (>= 2.6.6-3~), python3-all, dh-autoreconf, doxygen, tofrodos, libzen-dev (>= 0.4.33), libcurl4-gnutls-dev, libmms-dev, libglib2.0-dev, zlib1g-dev, pkg-config
+Build-Depends: debhelper (>= 9), dpkg-dev (>= 1.16.1), python-all (>= 2.6.6-3~), python3-all, dh-autoreconf, doxygen, tofrodos, libzen-dev (>= 0.4.34), libcurl4-gnutls-dev, libmms-dev, libglib2.0-dev, zlib1g-dev, pkg-config
Package-List:
libmediainfo-dev deb libdevel optional arch=any
libmediainfo-doc deb doc optional arch=all
@@ -16,11 +16,11 @@ Package-List:
python-mediainfodll deb python optional arch=all
python3-mediainfodll deb python optional arch=all
Checksums-Sha1:
- 0000000000000000000000000000000000000000 000000 libmediainfo_0.7.90.orig.tar.xz
- 0000000000000000000000000000000000000000 000000 libmediainfo_0.7.90-1.debian.tar.xz
+ 0000000000000000000000000000000000000000 000000 libmediainfo_0.7.91.orig.tar.xz
+ 0000000000000000000000000000000000000000 000000 libmediainfo_0.7.91-1.debian.tar.xz
Checksums-Sha256:
- 0000000000000000000000000000000000000000000000000000000000000000 000000 libmediainfo_0.7.90.orig.tar.xz
- 0000000000000000000000000000000000000000000000000000000000000000 000000 libmediainfo_0.7.90-1.debian.tar.xz
+ 0000000000000000000000000000000000000000000000000000000000000000 000000 libmediainfo_0.7.91.orig.tar.xz
+ 0000000000000000000000000000000000000000000000000000000000000000 000000 libmediainfo_0.7.91-1.debian.tar.xz
Files:
- 00000000000000000000000000000000 000000 libmediainfo_0.7.90.orig.tar.xz
- 00000000000000000000000000000000 000000 libmediainfo_0.7.90-1.debian.tar.xz
+ 00000000000000000000000000000000 000000 libmediainfo_0.7.91.orig.tar.xz
+ 00000000000000000000000000000000 000000 libmediainfo_0.7.91-1.debian.tar.xz
diff --git a/Project/GNU/libmediainfo.spec b/Project/GNU/libmediainfo.spec
index db158be..5f2fd60 100644
--- a/Project/GNU/libmediainfo.spec
+++ b/Project/GNU/libmediainfo.spec
@@ -1,5 +1,5 @@
-%define libmediainfo_version 0.7.90
-%define libzen_version 0.4.33
+%define libmediainfo_version 0.7.91
+%define libzen_version 0.4.34
%if 0%{?fedora} || 0%{?centos_version} >= 600 || 0%{?rhel_version} >= 600
%define package_with_0_ending 0
@@ -231,7 +231,7 @@ rm -f %{buildroot}%{_libdir}/%{name_without_0_ending}.la
%{_libdir}/%{name_without_0_ending}.so
%changelog
-* Sun Jan 01 2012 MediaArea.net SARL <info at mediaarea.net> - 0.7.90-0
+* Sun Jan 01 2012 MediaArea.net SARL <info at mediaarea.net> - 0.7.91-0
- See History.txt for more info and real dates
- Previous packages made by Toni Graffy <toni at links2linux.de>
- Fedora style made by Vasiliy N. Glazov <vascom2 at gmail.com>
diff --git a/Project/MSVC2013/Dll/MediaInfo.rc b/Project/MSVC2013/Dll/MediaInfo.rc
index 720f92d..1f1ecdc 100644
--- a/Project/MSVC2013/Dll/MediaInfo.rc
+++ b/Project/MSVC2013/Dll/MediaInfo.rc
@@ -1,8 +1,8 @@
#include <winresrc.h>
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 0,7,90,0
- PRODUCTVERSION 0,7,90,0
+ FILEVERSION 0,7,91,0
+ PRODUCTVERSION 0,7,91,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -19,10 +19,10 @@ BEGIN
BEGIN
VALUE "CompanyName", "MediaArea.net"
VALUE "FileDescription", "Most relevant technical and tag data for video and audio files"
- VALUE "FileVersion", "0.7.90.0"
+ VALUE "FileVersion", "0.7.91.0"
VALUE "LegalCopyright", "Copyright (C) 2002-2015 MediaArea.net SARL"
VALUE "ProductName", "MediaInfo"
- VALUE "ProductVersion", "0.7.90.0"
+ VALUE "ProductVersion", "0.7.91.0"
END
END
BLOCK "VarFileInfo"
diff --git a/Project/MSVC2013/Example/HowToUse.rc b/Project/MSVC2013/Example/HowToUse.rc
index 720f92d..1f1ecdc 100644
--- a/Project/MSVC2013/Example/HowToUse.rc
+++ b/Project/MSVC2013/Example/HowToUse.rc
@@ -1,8 +1,8 @@
#include <winresrc.h>
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 0,7,90,0
- PRODUCTVERSION 0,7,90,0
+ FILEVERSION 0,7,91,0
+ PRODUCTVERSION 0,7,91,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -19,10 +19,10 @@ BEGIN
BEGIN
VALUE "CompanyName", "MediaArea.net"
VALUE "FileDescription", "Most relevant technical and tag data for video and audio files"
- VALUE "FileVersion", "0.7.90.0"
+ VALUE "FileVersion", "0.7.91.0"
VALUE "LegalCopyright", "Copyright (C) 2002-2015 MediaArea.net SARL"
VALUE "ProductName", "MediaInfo"
- VALUE "ProductVersion", "0.7.90.0"
+ VALUE "ProductVersion", "0.7.91.0"
END
END
BLOCK "VarFileInfo"
diff --git a/Project/MSVC2013/ShellExtension/MediaInfoShellExt.rc b/Project/MSVC2013/ShellExtension/MediaInfoShellExt.rc
index 720f92d..1f1ecdc 100644
--- a/Project/MSVC2013/ShellExtension/MediaInfoShellExt.rc
+++ b/Project/MSVC2013/ShellExtension/MediaInfoShellExt.rc
@@ -1,8 +1,8 @@
#include <winresrc.h>
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 0,7,90,0
- PRODUCTVERSION 0,7,90,0
+ FILEVERSION 0,7,91,0
+ PRODUCTVERSION 0,7,91,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -19,10 +19,10 @@ BEGIN
BEGIN
VALUE "CompanyName", "MediaArea.net"
VALUE "FileDescription", "Most relevant technical and tag data for video and audio files"
- VALUE "FileVersion", "0.7.90.0"
+ VALUE "FileVersion", "0.7.91.0"
VALUE "LegalCopyright", "Copyright (C) 2002-2015 MediaArea.net SARL"
VALUE "ProductName", "MediaInfo"
- VALUE "ProductVersion", "0.7.90.0"
+ VALUE "ProductVersion", "0.7.91.0"
END
END
BLOCK "VarFileInfo"
diff --git a/Project/MSVC2015/Dll/MediaInfo.rc b/Project/MSVC2015/Dll/MediaInfo.rc
index 8bd3ccf..9005fdd 100644
--- a/Project/MSVC2015/Dll/MediaInfo.rc
+++ b/Project/MSVC2015/Dll/MediaInfo.rc
@@ -1,8 +1,8 @@
#include <winresrc.h>
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 0,7,90,0
- PRODUCTVERSION 0,7,90,0
+ FILEVERSION 0,7,91,0
+ PRODUCTVERSION 0,7,91,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -19,10 +19,10 @@ BEGIN
BEGIN
VALUE "CompanyName", "MediaArea.net"
VALUE "FileDescription", "Most relevant technical and tag data for video and audio files"
- VALUE "FileVersion", "0.7.90.0"
+ VALUE "FileVersion", "0.7.91.0"
VALUE "LegalCopyright", "Copyright (C) 2002-2015 MediaArea.net SARL"
VALUE "ProductName", "MediaInfo"
- VALUE "ProductVersion", "0.7.90.0"
+ VALUE "ProductVersion", "0.7.91.0"
END
END
BLOCK "VarFileInfo"
diff --git a/Project/MSVC2015/Example/HowToUse.rc b/Project/MSVC2015/Example/HowToUse.rc
index 8bd3ccf..9005fdd 100644
--- a/Project/MSVC2015/Example/HowToUse.rc
+++ b/Project/MSVC2015/Example/HowToUse.rc
@@ -1,8 +1,8 @@
#include <winresrc.h>
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 0,7,90,0
- PRODUCTVERSION 0,7,90,0
+ FILEVERSION 0,7,91,0
+ PRODUCTVERSION 0,7,91,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -19,10 +19,10 @@ BEGIN
BEGIN
VALUE "CompanyName", "MediaArea.net"
VALUE "FileDescription", "Most relevant technical and tag data for video and audio files"
- VALUE "FileVersion", "0.7.90.0"
+ VALUE "FileVersion", "0.7.91.0"
VALUE "LegalCopyright", "Copyright (C) 2002-2015 MediaArea.net SARL"
VALUE "ProductName", "MediaInfo"
- VALUE "ProductVersion", "0.7.90.0"
+ VALUE "ProductVersion", "0.7.91.0"
END
END
BLOCK "VarFileInfo"
diff --git a/Project/MSVC2015/ShellExtension/MediaInfoShellExt.rc b/Project/MSVC2015/ShellExtension/MediaInfoShellExt.rc
index 8bd3ccf..9005fdd 100644
--- a/Project/MSVC2015/ShellExtension/MediaInfoShellExt.rc
+++ b/Project/MSVC2015/ShellExtension/MediaInfoShellExt.rc
@@ -1,8 +1,8 @@
#include <winresrc.h>
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 0,7,90,0
- PRODUCTVERSION 0,7,90,0
+ FILEVERSION 0,7,91,0
+ PRODUCTVERSION 0,7,91,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -19,10 +19,10 @@ BEGIN
BEGIN
VALUE "CompanyName", "MediaArea.net"
VALUE "FileDescription", "Most relevant technical and tag data for video and audio files"
- VALUE "FileVersion", "0.7.90.0"
+ VALUE "FileVersion", "0.7.91.0"
VALUE "LegalCopyright", "Copyright (C) 2002-2015 MediaArea.net SARL"
VALUE "ProductName", "MediaInfo"
- VALUE "ProductVersion", "0.7.90.0"
+ VALUE "ProductVersion", "0.7.91.0"
END
END
BLOCK "VarFileInfo"
diff --git a/Project/OBS/deb6.debian/changelog b/Project/OBS/deb6.debian/changelog
index 3612d86..32516f1 100644
--- a/Project/OBS/deb6.debian/changelog
+++ b/Project/OBS/deb6.debian/changelog
@@ -1,4 +1,4 @@
-libmediainfo (0.7.90) unstable; urgency=low
+libmediainfo (0.7.91) unstable; urgency=low
* See History.txt for more info and real dates
diff --git a/Project/OBS/deb6.dsc b/Project/OBS/deb6.dsc
index ee37013..f8533c8 100644
--- a/Project/OBS/deb6.dsc
+++ b/Project/OBS/deb6.dsc
@@ -2,10 +2,10 @@ Format: 1.0
Source: libmediainfo
Binary: libmediainfo-dev, libmediainfo0 libmediainfo0-dbg
Architecture: any
-Version: 0.7.90-1deb6
+Version: 0.7.91-1deb6
Maintainer: MediaArea.net SARL <info at mediaarea.net>
Homepage: http://MediaArea.net/MediaInfo
Standards-Version: 3.7.3
-Build-Depends: debhelper (>= 5), doxygen, tofrodos, libzen-dev (>= 0.4.33), zlib1g-dev, pkg-config, automake, autoconf, libtool
+Build-Depends: debhelper (>= 5), doxygen, tofrodos, libzen-dev (>= 0.4.34), zlib1g-dev, pkg-config, automake, autoconf, libtool
Files:
- 00000000000000000000000000000000 000000 libmediainfo_0.7.90-1deb6.tar.gz
+ 00000000000000000000000000000000 000000 libmediainfo_0.7.91-1deb6.tar.gz
diff --git a/Project/OBS/deb9.debian/changelog b/Project/OBS/deb9.debian/changelog
index beae681..e2abba9 100644
--- a/Project/OBS/deb9.debian/changelog
+++ b/Project/OBS/deb9.debian/changelog
@@ -1,6 +1,6 @@
-libmediainfo (0.7.90-1) experimental; urgency=medium
+libmediainfo (0.7.91-1) experimental; urgency=medium
- * Upstream version 0.7.90
+ * Upstream version 0.7.91
For details, see https://github.com/MediaArea/MediaInfoLib/blob/master/History_DLL.txt
-- MediaArea <info at mediaarea.net> Mon, 02 Nov 2015 10:30:00 +0100
diff --git a/Project/OBS/deb9.debian/control b/Project/OBS/deb9.debian/control
index ba98b3d..792f8b2 100644
--- a/Project/OBS/deb9.debian/control
+++ b/Project/OBS/deb9.debian/control
@@ -8,7 +8,7 @@ Build-Depends: debhelper (>= 9),
dh-autoreconf,
doxygen,
tofrodos,
- libzen-dev (>= 0.4.33),
+ libzen-dev (>= 0.4.34),
libcurl4-gnutls-dev,
libmms-dev,
libglib2.0-dev,
diff --git a/Project/OBS/deb9.dsc b/Project/OBS/deb9.dsc
index 7f6ac21..704f98f 100644
--- a/Project/OBS/deb9.dsc
+++ b/Project/OBS/deb9.dsc
@@ -2,13 +2,13 @@ Format: 3.0 (quilt)
Source: libmediainfo
Binary: libmediainfo-dev, libmediainfo0v5, python-mediainfodll, python3-mediainfodll, libmediainfo-doc libmediainfo0v5-dbg
Architecture: any all
-Version: 0.7.90-1deb9
+Version: 0.7.91-1deb9
Maintainer: MediaArea.net SARL <info at mediaarea.net>
Homepage: http://MediaArea.net/MediaInfo
Standards-Version: 3.9.6
Vcs-Browser: https://github.com/MediaArea/MediaInfoLib
Vcs-Git: https://github.com/MediaArea/MediaInfoLib.git
-Build-Depends: debhelper (>= 9), dpkg-dev (>= 1.16.1), python-all (>= 2.6.6-3~), python3-all, dh-autoreconf, doxygen, tofrodos, libzen-dev (>= 0.4.33), libcurl4-gnutls-dev, libmms-dev, libglib2.0-dev, zlib1g-dev, pkg-config
+Build-Depends: debhelper (>= 9), dpkg-dev (>= 1.16.1), python-all (>= 2.6.6-3~), python3-all, dh-autoreconf, doxygen, tofrodos, libzen-dev (>= 0.4.34), libcurl4-gnutls-dev, libmms-dev, libglib2.0-dev, zlib1g-dev, pkg-config
Package-List:
libmediainfo-dev deb libdevel optional arch=any
libmediainfo-doc deb doc optional arch=all
@@ -16,11 +16,11 @@ Package-List:
python-mediainfodll deb python optional arch=all
python3-mediainfodll deb python optional arch=all
Checksums-Sha1:
- 0000000000000000000000000000000000000000 000000 libmediainfo_0.7.90.orig.tar.xz
- 0000000000000000000000000000000000000000 000000 libmediainfo_0.7.90-1deb9.debian.tar.xz
+ 0000000000000000000000000000000000000000 000000 libmediainfo_0.7.91.orig.tar.xz
+ 0000000000000000000000000000000000000000 000000 libmediainfo_0.7.91-1deb9.debian.tar.xz
Checksums-Sha256:
- 0000000000000000000000000000000000000000000000000000000000000000 000000 libmediainfo_0.7.90.orig.tar.xz
- 0000000000000000000000000000000000000000000000000000000000000000 000000 libmediainfo_0.7.90-1deb9.debian.tar.xz
+ 0000000000000000000000000000000000000000000000000000000000000000 000000 libmediainfo_0.7.91.orig.tar.xz
+ 0000000000000000000000000000000000000000000000000000000000000000 000000 libmediainfo_0.7.91-1deb9.debian.tar.xz
Files:
- 00000000000000000000000000000000 000000 libmediainfo_0.7.90.orig.tar.xz
- 00000000000000000000000000000000 000000 libmediainfo_0.7.90-1deb9.debian.tar.xz
+ 00000000000000000000000000000000 000000 libmediainfo_0.7.91.orig.tar.xz
+ 00000000000000000000000000000000 000000 libmediainfo_0.7.91-1deb9.debian.tar.xz
diff --git a/Project/Solaris/mkpkg b/Project/Solaris/mkpkg
index 7e61c0c..de7d096 100755
--- a/Project/Solaris/mkpkg
+++ b/Project/Solaris/mkpkg
@@ -9,7 +9,7 @@ release=`uname -r`
#Creation of known directories and filenames
name="libmediainfo0"
-version="0.7.90"
+version="0.7.91"
Home=`pwd`
install_prefix=${Home}/mk_package
packagecreation_prefix=${Home}/create_package
diff --git a/Project/version.txt b/Project/version.txt
index 8bc6633..a936089 100644
--- a/Project/version.txt
+++ b/Project/version.txt
@@ -1 +1 @@
-0.7.90
+0.7.91
diff --git a/Source/Install/MediaInfo_DLL_Windows_i386.nsi b/Source/Install/MediaInfo_DLL_Windows_i386.nsi
index f2ef8dd..73ae44b 100644
--- a/Source/Install/MediaInfo_DLL_Windows_i386.nsi
+++ b/Source/Install/MediaInfo_DLL_Windows_i386.nsi
@@ -4,7 +4,7 @@ RequestExecutionLevel admin
; Some defines
!define PRODUCT_NAME "MediaInfo"
!define PRODUCT_PUBLISHER "MediaArea.net"
-!define PRODUCT_VERSION "0.7.90"
+!define PRODUCT_VERSION "0.7.91"
!define PRODUCT_VERSION4 "${PRODUCT_VERSION}.0"
!define PRODUCT_WEB_SITE "http://MediaArea.net/MediaInfo"
!define COMPANY_REGISTRY "Software\MediaArea.net"
diff --git a/Source/Install/MediaInfo_DLL_Windows_x64.nsi b/Source/Install/MediaInfo_DLL_Windows_x64.nsi
index 141cd86..01384e1 100644
--- a/Source/Install/MediaInfo_DLL_Windows_x64.nsi
+++ b/Source/Install/MediaInfo_DLL_Windows_x64.nsi
@@ -4,7 +4,7 @@ RequestExecutionLevel admin
; Some defines
!define PRODUCT_NAME "MediaInfo"
!define PRODUCT_PUBLISHER "MediaArea.net"
-!define PRODUCT_VERSION "0.7.90"
+!define PRODUCT_VERSION "0.7.91"
!define PRODUCT_VERSION4 "${PRODUCT_VERSION}.0"
!define PRODUCT_WEB_SITE "http://MediaArea.net/MediaInfo"
!define COMPANY_REGISTRY "Software\MediaArea.net"
diff --git a/Source/MediaInfo/Audio/File_Aac.h b/Source/MediaInfo/Audio/File_Aac.h
index 8a11608..0e74f03 100644
--- a/Source/MediaInfo/Audio/File_Aac.h
+++ b/Source/MediaInfo/Audio/File_Aac.h
@@ -256,7 +256,7 @@ protected :
void sbr_envelope (bool ch, bool bs_coupling);
void sbr_noise (bool ch, bool bs_coupling);
void sbr_sinusoidal_coding (bool ch);
- int16u sbr_huff_dec (sbr_huffman Table, const char* Name);
+ int16u sbr_huff_dec (const sbr_huffman& Table, const char* Name);
//Elements - SBR - PS
void ps_data (size_t End);
diff --git a/Source/MediaInfo/Audio/File_Aac_GeneralAudio_Sbr.cpp b/Source/MediaInfo/Audio/File_Aac_GeneralAudio_Sbr.cpp
index 6857f91..5470f13 100644
--- a/Source/MediaInfo/Audio/File_Aac_GeneralAudio_Sbr.cpp
+++ b/Source/MediaInfo/Audio/File_Aac_GeneralAudio_Sbr.cpp
@@ -132,11 +132,11 @@ bool Aac_f_master_Compute_0(int8u &num_env_bands_Master, int8u* f_Master, sbr_ha
//---------------------------------------------------------------------------
// Master frequency band table
// Computing for bs_freq_scale != 0
-int int8u_cmp(const void *a, const void *b)
+static int int8u_cmp(const void *a, const void *b)
{
return ((int8u)(*(int8u*)a - *(int8u*)b));
}
-bool Aac_f_master_Compute(int8u &num_env_bands_Master, int8u* f_Master, sbr_handler *sbr, int8u k0, int8u k2)
+static bool Aac_f_master_Compute(int8u &num_env_bands_Master, int8u* f_Master, sbr_handler *sbr, int8u k0, int8u k2)
{
int8u temp1[]={6, 5, 4 };
int8u bands=temp1[sbr->bs_freq_scale-1];
@@ -233,7 +233,7 @@ bool Aac_f_master_Compute(int8u &num_env_bands_Master, int8u* f_Master, sbr_hand
//---------------------------------------------------------------------------
// Derived frequency border tables
-bool Aac_bands_Compute(int8u &num_env_bands_Master, int8u* f_Master, sbr_handler *sbr, int8u k2)
+static bool Aac_bands_Compute(const int8u &num_env_bands_Master, int8u* f_Master, sbr_handler *sbr, int8u k2)
{
sbr->num_env_bands[1]=num_env_bands_Master-sbr->bs_xover_band;
sbr->num_env_bands[0]=(sbr->num_env_bands[1]>>1)+(sbr->num_env_bands[1]-((sbr->num_env_bands[1]>>1)<<1));
@@ -254,7 +254,7 @@ bool Aac_bands_Compute(int8u &num_env_bands_Master, int8u* f_Master, sbr_handler
}
//---------------------------------------------------------------------------
-bool Aac_Sbr_Compute(sbr_handler *sbr, int8u extension_sampling_frequency_index)
+static bool Aac_Sbr_Compute(sbr_handler *sbr, int8u extension_sampling_frequency_index)
{
if (extension_sampling_frequency_index>=9)
return 0; //Not supported
@@ -296,7 +296,7 @@ bool Aac_Sbr_Compute(sbr_handler *sbr, int8u extension_sampling_frequency_index)
}
//---------------------------------------------------------------------------
-int16u File_Aac::sbr_huff_dec(sbr_huffman Table, const char* Name)
+int16u File_Aac::sbr_huff_dec(const sbr_huffman& Table, const char* Name)
{
int8u bit;
int16s index = 0;
diff --git a/Source/MediaInfo/Audio/File_Als.cpp b/Source/MediaInfo/Audio/File_Als.cpp
index 6a7809a..ba19f3d 100644
--- a/Source/MediaInfo/Audio/File_Als.cpp
+++ b/Source/MediaInfo/Audio/File_Als.cpp
@@ -110,14 +110,8 @@ void File_Als::FileHeader_Parse()
BS_End();
FILLING_BEGIN();
- if (SampleRate==0)
- return;
- Duration=((int64u)Samples)*1000/SampleRate;
- if (Duration==0)
- return;
- UncompressedSize=((int64u)Samples)*Channels*(BitsPerSample+1/8);
- if (UncompressedSize==0)
- return;
+ if (!CalcDurationUncompressedSize(Samples, SampleRate, (BitsPerSample+1)*8, Channels))
+ return;
File__Tags_Helper::Accept("ALS");
diff --git a/Source/MediaInfo/Audio/File_Als.h b/Source/MediaInfo/Audio/File_Als.h
index a0d8440..9d7a221 100644
--- a/Source/MediaInfo/Audio/File_Als.h
+++ b/Source/MediaInfo/Audio/File_Als.h
@@ -26,7 +26,7 @@ namespace MediaInfoLib
// Class File_Als
//***************************************************************************
-class File_Als : public File__Analyze, public File__Tags_Helper
+class File_Als : public File__Analyze, public File__Tags_Helper, protected File__UnCompressedSize_Helper
{
public :
//Constructor/Destructor
@@ -43,9 +43,6 @@ private :
//Buffer - Global
void Read_Buffer_Continue() {File__Tags_Helper::Read_Buffer_Continue();}
- //Temp
- int64u Duration;
- int64u UncompressedSize;
};
} //NameSpace
diff --git a/Source/MediaInfo/Audio/File_Ape.h b/Source/MediaInfo/Audio/File_Ape.h
index 4cfa61a..9b93218 100644
--- a/Source/MediaInfo/Audio/File_Ape.h
+++ b/Source/MediaInfo/Audio/File_Ape.h
@@ -26,7 +26,7 @@ namespace MediaInfoLib
// Class File_Ape
//***************************************************************************
-class File_Ape : public File__Analyze, public File__Tags_Helper
+class File_Ape : public File__Analyze, public File__Tags_Helper, protected File__UnCompressedSize_Helper
{
public :
//Constructor/Destructor
@@ -43,9 +43,6 @@ private :
//Buffer - Global
void Read_Buffer_Continue() {File__Tags_Helper::Read_Buffer_Continue();}
- //Temp
- int64u Duration;
- int64u UncompressedSize;
};
} //NameSpace
diff --git a/Source/MediaInfo/Audio/File_ChannelGrouping.cpp b/Source/MediaInfo/Audio/File_ChannelGrouping.cpp
index 4c79f4e..dfdecf0 100644
--- a/Source/MediaInfo/Audio/File_ChannelGrouping.cpp
+++ b/Source/MediaInfo/Audio/File_ChannelGrouping.cpp
@@ -141,6 +141,7 @@ void File_ChannelGrouping::Read_Buffer_Init()
Common->Parsers.push_back(Parser);
}
+#ifdef MEDIAINFO_PCM_YES
//PCM
if (CanBePcm)
{
@@ -165,6 +166,7 @@ void File_ChannelGrouping::Read_Buffer_Init()
#endif //MEDIAINFO_DEMUX
Open_Buffer_Init(Common->Parsers[Pos]);
}
+#endif // MEDIAINFO_PCM_YES
}
Common->Instances++;
Common->Instances_Max++;
diff --git a/Source/MediaInfo/Audio/File_ChannelGrouping.h b/Source/MediaInfo/Audio/File_ChannelGrouping.h
index 920d3cf..7786c10 100644
--- a/Source/MediaInfo/Audio/File_ChannelGrouping.h
+++ b/Source/MediaInfo/Audio/File_ChannelGrouping.h
@@ -28,7 +28,7 @@ namespace MediaInfoLib
//***************************************************************************
// Class File_ChannelGrouping
//***************************************************************************
-
+#ifdef MEDIAINFO_SMPTEST0337_YES
class File_ChannelGrouping : public File__Analyze
{
public :
@@ -127,6 +127,7 @@ private :
void Read_Buffer_Unsynched ();
};
+#endif // MEDIAINFO_SMPTEST0337_YES
} //NameSpace
#endif
diff --git a/Source/MediaInfo/Audio/File_La.h b/Source/MediaInfo/Audio/File_La.h
index a373c52..027a639 100644
--- a/Source/MediaInfo/Audio/File_La.h
+++ b/Source/MediaInfo/Audio/File_La.h
@@ -26,7 +26,7 @@ namespace MediaInfoLib
// Class File_La
//***************************************************************************
-class File_La : public File__Analyze, public File__Tags_Helper
+class File_La : public File__Analyze, public File__Tags_Helper, protected File__UnCompressedSize_Helper
{
public :
//Constructor/Destructor
@@ -43,9 +43,6 @@ private :
//Buffer - Global
void Read_Buffer_Continue() {File__Tags_Helper::Read_Buffer_Continue();}
- //Temp
- int64u Duration;
- int64u UncompressedSize;
bool seekable;
bool high;
};
diff --git a/Source/MediaInfo/Audio/File_Rkau.h b/Source/MediaInfo/Audio/File_Rkau.h
index 038d4b9..83ae41d 100644
--- a/Source/MediaInfo/Audio/File_Rkau.h
+++ b/Source/MediaInfo/Audio/File_Rkau.h
@@ -28,7 +28,7 @@ namespace MediaInfoLib
// Class File_Rkau
//***************************************************************************
-class File_Rkau : public File__Analyze, public File__Tags_Helper
+class File_Rkau : public File__Analyze, public File__Tags_Helper, protected File__UnCompressedSize_Helper
{
public :
//Constructor/Destructor
@@ -45,9 +45,6 @@ private :
//Buffer - Global
void Read_Buffer_Continue() {File__Tags_Helper::Read_Buffer_Continue();}
- //Temp
- int64u Duration;
- int64u UncompressedSize;
};
} //NameSpace
diff --git a/Source/MediaInfo/Audio/File_SmpteSt0302.cpp b/Source/MediaInfo/Audio/File_SmpteSt0302.cpp
index 7af6a48..149cb1f 100644
--- a/Source/MediaInfo/Audio/File_SmpteSt0302.cpp
+++ b/Source/MediaInfo/Audio/File_SmpteSt0302.cpp
@@ -73,6 +73,7 @@ File_SmpteSt0302::~File_SmpteSt0302()
//---------------------------------------------------------------------------
void File_SmpteSt0302::Streams_Accept()
{
+#ifdef MEDIAINFO_SMPTEST0337_YES
// SMPTE ST 337
{
File_SmpteSt0337* SmpteSt0337=new File_SmpteSt0337();
@@ -92,7 +93,8 @@ void File_SmpteSt0302::Streams_Accept()
#endif //MEDIAINFO_EVENTS
Parsers.push_back(SmpteSt0337);
}
-
+#endif // MEDIAINFO_SMPTEST0337_YES
+#ifdef MEDIAINFO_PCM_YES
// Raw PCM
{
File_Pcm* Pcm=new File_Pcm();
@@ -115,6 +117,7 @@ void File_SmpteSt0302::Streams_Accept()
// Init
for (size_t Pos=0; Pos<Parsers.size(); Pos++)
Open_Buffer_Init(Parsers[Pos]);
+#endif // MEDIAINFO_PCM_YES
//Time stamps
Frequency_b=48000;
diff --git a/Source/MediaInfo/Audio/File_Tta.cpp b/Source/MediaInfo/Audio/File_Tta.cpp
index d77e734..d1d1053 100644
--- a/Source/MediaInfo/Audio/File_Tta.cpp
+++ b/Source/MediaInfo/Audio/File_Tta.cpp
@@ -100,13 +100,7 @@ void File_Tta::FileHeader_Parse()
Get_L4 (CRC32, "CRC32");
FILLING_BEGIN();
- if (SampleRate==0)
- return;
- Duration=((int64u)Samples)*1000/SampleRate;
- if (Duration==0)
- return;
- UncompressedSize=((int64u)Samples)*Channels*(BitsPerSample/8);
- if (UncompressedSize==0)
+ if (!CalcDurationUncompressedSize(Samples, SampleRate, BitsPerSample, Channels))
return;
//Filling data
diff --git a/Source/MediaInfo/Audio/File_Tta.h b/Source/MediaInfo/Audio/File_Tta.h
index 72c9c85..d54cb6e 100644
--- a/Source/MediaInfo/Audio/File_Tta.h
+++ b/Source/MediaInfo/Audio/File_Tta.h
@@ -26,7 +26,7 @@ namespace MediaInfoLib
// Class File_Tta
//***************************************************************************
-class File_Tta : public File__Analyze, public File__Tags_Helper
+class File_Tta : public File__Analyze, public File__Tags_Helper, protected File__UnCompressedSize_Helper
{
public :
//Constructor/Destructor
@@ -43,9 +43,6 @@ private :
//Buffer - Global
void Read_Buffer_Continue() {File__Tags_Helper::Read_Buffer_Continue();}
- //Temp
- int64u Duration;
- int64u UncompressedSize;
};
} //NameSpace
diff --git a/Source/MediaInfo/Duplicate/File__Duplicate_MpegTs.cpp b/Source/MediaInfo/Duplicate/File__Duplicate_MpegTs.cpp
index 21b3dfa..f4d88fc 100644
--- a/Source/MediaInfo/Duplicate/File__Duplicate_MpegTs.cpp
+++ b/Source/MediaInfo/Duplicate/File__Duplicate_MpegTs.cpp
@@ -66,46 +66,43 @@ File__Duplicate_MpegTs::File__Duplicate_MpegTs (const Ztring &Target)
//***************************************************************************
//---------------------------------------------------------------------------
+void File__Duplicate_MpegTs::Internal_Remove_Wanted_Program(int16u Program_number, bool ToRemove)
+{
+ if (ToRemove)
+ {
+ if(Wanted_program_numbers.erase(Program_number) == 0)
+ Remove_program_numbers.insert(Program_number);
+ }
+ else
+ {
+ if(Remove_program_numbers.erase(Program_number) == 0)
+ Wanted_program_numbers.insert(Program_number);
+ }
+ if (!PAT.empty())
+ PAT.begin()->second.ConfigurationHasChanged = true;
+}
+//---------------------------------------------------------------------------
bool File__Duplicate_MpegTs::Configure (const Ztring &Value, bool ToRemove)
{
//Form: "program_number"
if (Value.find(__T("program_number="))==0)
{
- int16u program_number=Ztring(Value.substr(15, std::string::npos)).To_int16u();
- if (ToRemove)
- {
- if (Wanted_program_numbers.find(program_number)!=Wanted_program_numbers.end())
- Wanted_program_numbers.erase(program_number);
- else if (Remove_program_numbers.find(program_number)==Remove_program_numbers.end())
- Remove_program_numbers.insert(program_number);
- }
- else
- {
- if (Remove_program_numbers.find(program_number)!=Remove_program_numbers.end())
- Remove_program_numbers.erase(program_number);
- if (Wanted_program_numbers.find(program_number)==Wanted_program_numbers.end())
- Wanted_program_numbers.insert(program_number);
- }
- if (!PAT.empty())
- PAT.begin()->second.ConfigurationHasChanged=true;
+ const int16u program_number=Ztring(Value.substr(15, std::string::npos)).To_int16u();
+ Internal_Remove_Wanted_Program(program_number, ToRemove);
}
//Form: "program_map_PID"
else if (Value.find(__T("program_map_PID="))==0)
{
- int16u program_map_PID=Ztring(Value.substr(16, std::string::npos)).To_int16u();
+ const int16u program_map_PID=Ztring(Value.substr(16, std::string::npos)).To_int16u();
if (ToRemove)
{
- if (Wanted_program_map_PIDs.find(program_map_PID)!=Wanted_program_map_PIDs.end())
- Wanted_program_map_PIDs.erase(program_map_PID);
- else if (Remove_program_map_PIDs.find(program_map_PID)==Remove_program_map_PIDs.end())
- Remove_program_map_PIDs.insert(program_map_PID);
+ if(Wanted_program_map_PIDs.erase(program_map_PID) == 0)
+ Remove_program_map_PIDs.insert(program_map_PID);
}
else
{
- if (Remove_program_map_PIDs.find(program_map_PID)!=Remove_program_map_PIDs.end())
- Remove_program_map_PIDs.erase(program_map_PID);
- if (Wanted_program_map_PIDs.find(program_map_PID)==Wanted_program_map_PIDs.end())
- Wanted_program_map_PIDs.insert(program_map_PID);
+ Remove_program_map_PIDs.erase(program_map_PID);
+ Wanted_program_map_PIDs.insert(program_map_PID);
}
if (PMT.find(program_map_PID)!=PMT.end())
PMT[program_map_PID].ConfigurationHasChanged=true;
@@ -113,19 +110,15 @@ bool File__Duplicate_MpegTs::Configure (const Ztring &Value, bool ToRemove)
//Form: "elementary_PID"
else if (Value.find(__T("elementary_PID="))==0)
{
- int16u elementary_PID=Ztring(Value.substr(15, std::string::npos)).To_int16u();
+ const int16u elementary_PID=Ztring(Value.substr(15, std::string::npos)).To_int16u();
if (ToRemove)
{
- if (Wanted_elementary_PIDs.find(elementary_PID)!=Wanted_elementary_PIDs.end())
- Wanted_elementary_PIDs.erase(elementary_PID);
- else if (Remove_elementary_PIDs.find(elementary_PID)==Remove_elementary_PIDs.end())
- Remove_elementary_PIDs.insert(elementary_PID);
+ if(Wanted_elementary_PIDs.erase(elementary_PID) == 0)
+ Remove_elementary_PIDs.insert(elementary_PID);
}
else
{
- if (Remove_elementary_PIDs.find(elementary_PID)!=Remove_elementary_PIDs.end())
Remove_elementary_PIDs.erase(elementary_PID);
- if (Wanted_elementary_PIDs.find(elementary_PID)==Wanted_elementary_PIDs.end())
Wanted_elementary_PIDs.insert(elementary_PID);
}
if (PMT.find(elementary_PIDs_program_map_PIDs[elementary_PID])!=PMT.end())
@@ -134,23 +127,8 @@ bool File__Duplicate_MpegTs::Configure (const Ztring &Value, bool ToRemove)
//Old
else
{
- int16u program_number=Ztring(Value).To_int16u();
- if (ToRemove)
- {
- if (Wanted_program_numbers.find(program_number)!=Wanted_program_numbers.end())
- Wanted_program_numbers.erase(program_number);
- else if (Remove_program_numbers.find(program_number)==Remove_program_numbers.end())
- Remove_program_numbers.insert(program_number);
- }
- else
- {
- if (Remove_program_numbers.find(program_number)!=Remove_program_numbers.end())
- Remove_program_numbers.erase(program_number);
- if (Wanted_program_numbers.find(program_number)==Wanted_program_numbers.end())
- Wanted_program_numbers.insert(program_number);
- }
- if (!PAT.empty())
- PAT.begin()->second.ConfigurationHasChanged=true;
+ const int16u program_number=Ztring(Value).To_int16u();
+ Internal_Remove_Wanted_Program(program_number, ToRemove);
}
//Can be disabled?
@@ -197,10 +175,9 @@ bool File__Duplicate_MpegTs::Manage_PAT (const int8u* ToAdd, size_t ToAdd_Size)
while (FromTS.Offset+4<=FromTS.End)
{
//For each program
- int16u program_number =CC2(FromTS.Buffer+FromTS.Offset+0);
- int16u program_map_PID=CC2(FromTS.Buffer+FromTS.Offset+2)&0x1FFF;
- if (Wanted_program_numbers.find(program_number) !=Wanted_program_numbers.end()
- || Wanted_program_map_PIDs.find(program_map_PID)!=Wanted_program_map_PIDs.end())
+ const int16u program_number =CC2(FromTS.Buffer+FromTS.Offset+0);
+ const int16u program_map_PID=CC2(FromTS.Buffer+FromTS.Offset+2)&0x1FFF;
+ if (Is_Wanted(program_number, program_map_PID))
{
//Integrating it
program_map_PIDs[program_map_PID]=1;
@@ -224,21 +201,32 @@ bool File__Duplicate_MpegTs::Manage_PAT (const int8u* ToAdd, size_t ToAdd_Size)
return true;
}
+
+bool File__Duplicate_MpegTs::Is_Wanted(int16u ProgNum, int16u PID) const
+{
+ bool Wanted = false;
+ if (Wanted_program_numbers.find(ProgNum) != Wanted_program_numbers.end())
+ Wanted = true;
+ else
+ if (Wanted_program_map_PIDs.find(PID) != Wanted_program_map_PIDs.end())
+ Wanted = true;
+ return Wanted;
+}
+
bool File__Duplicate_MpegTs::Manage_PMT (const int8u* ToAdd, size_t ToAdd_Size)
{
if (!Parsing_Begin(ToAdd, ToAdd_Size, PMT))
return false;
//Testing program_number
- if (Wanted_program_numbers.find(StreamID)==Wanted_program_numbers.end()
- && Wanted_program_map_PIDs.find(elementary_PIDs_program_map_PIDs[StreamID]) == Wanted_program_map_PIDs.end())
+ if (!Is_Wanted(StreamID, elementary_PIDs_program_map_PIDs[StreamID]))
{
delete[] PMT[StreamID].Buffer; PMT[StreamID].Buffer=NULL;
return false;
}
//program_info_length
- int16u program_info_length=CC2(FromTS.Buffer+FromTS.Offset+2)&0x0FFF;
+ const int16u program_info_length=CC2(FromTS.Buffer+FromTS.Offset+2)&0x0FFF;
std::memcpy(PMT[StreamID].Buffer+PMT[StreamID].Offset, FromTS.Buffer+FromTS.Offset, 4+program_info_length);
FromTS.Offset+=4+program_info_length;
PMT[StreamID].Offset+=4+program_info_length;
@@ -247,8 +235,8 @@ bool File__Duplicate_MpegTs::Manage_PMT (const int8u* ToAdd, size_t ToAdd_Size)
while (FromTS.Offset+5<=FromTS.End)
{
//For each elementary_PID
- int16u elementary_PID=CC2(FromTS.Buffer+FromTS.Offset+1)&0x1FFF;
- int16u ES_info_length=CC2(FromTS.Buffer+FromTS.Offset+3)&0x0FFF;
+ const int16u elementary_PID=CC2(FromTS.Buffer+FromTS.Offset+1)&0x1FFF;
+ const int16u ES_info_length=CC2(FromTS.Buffer+FromTS.Offset+3)&0x0FFF;
if (Wanted_elementary_PIDs.empty() || Wanted_elementary_PIDs.find(elementary_PID)!=Wanted_elementary_PIDs.end())
{
//Integrating it
@@ -357,8 +345,7 @@ bool File__Duplicate_MpegTs::Parsing_Begin (const int8u* ToAdd, size_t ToAdd_Siz
}
//Managing big chunks
- if (BigBuffers.find(PID)!=BigBuffers.end())
- BigBuffers.erase(BigBuffers.find(PID));
+ BigBuffers.erase(PID);
Writer.Write(ToModify.Buffer, ToModify.Size);
return false;
@@ -461,8 +448,7 @@ void File__Duplicate_MpegTs::Parsing_End (std::map<int16u, buffer> &ToModify_)
//Managing big chunks
int16u PID=((ToModify.Buffer[1]&0x1F)<<8)|ToModify.Buffer[2]; //BigEndian2int16u(ToAdd+1)&0x1FFF;
- if (BigBuffers.find(PID)!=BigBuffers.end())
- BigBuffers.erase(BigBuffers.find(PID));
+ BigBuffers.erase(PID);
}
//***************************************************************************
diff --git a/Source/MediaInfo/Duplicate/File__Duplicate_MpegTs.h b/Source/MediaInfo/Duplicate/File__Duplicate_MpegTs.h
index d57ebd8..6ec128d 100644
--- a/Source/MediaInfo/Duplicate/File__Duplicate_MpegTs.h
+++ b/Source/MediaInfo/Duplicate/File__Duplicate_MpegTs.h
@@ -36,10 +36,10 @@ public :
//Output buffer
size_t Output_Buffer_Get (unsigned char** Output_Buffer=NULL);
-
-//private :
+ bool Is_Wanted(int16u ProgNum, int16u PID) const;
+private :
File__Duplicate__Writer Writer;
-
+ void Internal_Remove_Wanted_Program(int16u Program_number, bool ToRemove);
//Configuration
std::set<int16u> Wanted_program_numbers;
std::set<int16u> Wanted_program_map_PIDs;
@@ -49,8 +49,10 @@ public :
std::set<int16u> Remove_elementary_PIDs;
//Current
+public:
std::vector<int8u> program_map_PIDs;
std::vector<int8u> elementary_PIDs;
+private:
std::vector<int16u> elementary_PIDs_program_map_PIDs;
struct buffer
diff --git a/Source/MediaInfo/Duplicate/File__Duplicate__Writer.cpp b/Source/MediaInfo/Duplicate/File__Duplicate__Writer.cpp
index 2e319f7..1990d88 100644
--- a/Source/MediaInfo/Duplicate/File__Duplicate__Writer.cpp
+++ b/Source/MediaInfo/Duplicate/File__Duplicate__Writer.cpp
@@ -69,9 +69,9 @@ void File__Duplicate__Writer::Configure (const Ztring &Target)
//Form: "memory://pointer:size" <--Memory block is specified by user
//WARNING: pointer must be in ***DECIMAL*** format.
//Example: "memory://123456789:1316"
- if (Target.find(__T("memory://"))==0 && Target.find(__T(":"), 9)!=std::string::npos)
+ if (Target.find(__T("memory://"))==0 && Target.find(__T(':'), 9)!=std::string::npos)
{
- size_t SemiColumn_Pos=Target.find(__T(":"), 9);
+ size_t SemiColumn_Pos=Target.find(__T(':'), 9);
Ztring Address=Target.substr(9, SemiColumn_Pos-9);
Ztring Size=Target.substr(SemiColumn_Pos+1);
Method=method_buffer;
diff --git a/Source/MediaInfo/Export/Export_EbuCore.cpp b/Source/MediaInfo/Export/Export_EbuCore.cpp
index fa45bcc..92eab45 100644
--- a/Source/MediaInfo/Export/Export_EbuCore.cpp
+++ b/Source/MediaInfo/Export/Export_EbuCore.cpp
@@ -68,9 +68,9 @@ int32u EbuCore_VideoCompressionCodeCS_termID(MediaInfo_Internal &MI, size_t Stre
if (Format==__T("MPEG Video"))
{
- if (Version.find(__T("1"))!=string::npos)
+ if (Version.find(__T('1'))!=string::npos)
return 10000;
- if (Version.find(__T("2"))!=string::npos)
+ if (Version.find(__T('2'))!=string::npos)
{
if (Profile.find(__T("Simple@"))!=string::npos)
{
@@ -567,23 +567,23 @@ int32u EbuCore_AudioCompressionCodeCS_termID(MediaInfo_Internal &MI, size_t Stre
return 50000;
if (Format==__T("MPEG Audio"))
{
- if (Version.find(__T("1"))!=string::npos)
+ if (Version.find(__T('1'))!=string::npos)
{
- if (Profile.find(__T("1"))!=string::npos)
+ if (Profile.find(__T('1'))!=string::npos)
return 70100;
- if (Profile.find(__T("2"))!=string::npos)
+ if (Profile.find(__T('2'))!=string::npos)
return 70200;
- if (Profile.find(__T("3"))!=string::npos)
+ if (Profile.find(__T('3'))!=string::npos)
return 70300;
return 70000;
}
- if (Version.find(__T("2"))!=string::npos)
+ if (Version.find(__T('2'))!=string::npos)
{
- if (Profile.find(__T("1"))!=string::npos)
+ if (Profile.find(__T('1'))!=string::npos)
return 90100;
- if (Profile.find(__T("2"))!=string::npos)
+ if (Profile.find(__T('2'))!=string::npos)
return 90200;
- if (Profile.find(__T("3"))!=string::npos)
+ if (Profile.find(__T('3'))!=string::npos)
return 90300;
return 90000;
}
diff --git a/Source/MediaInfo/Export/Export_Fims.cpp b/Source/MediaInfo/Export/Export_Fims.cpp
index 1e8bcf9..102a42b 100644
--- a/Source/MediaInfo/Export/Export_Fims.cpp
+++ b/Source/MediaInfo/Export/Export_Fims.cpp
@@ -67,9 +67,9 @@ int32u Fims_VideoCompressionCodeCS_termID(MediaInfo_Internal &MI, size_t StreamP
if (Format==__T("MPEG Video"))
{
- if (Version.find(__T("1"))!=string::npos)
+ if (Version.find(__T('1'))!=string::npos)
return 10000;
- if (Version.find(__T("2"))!=string::npos)
+ if (Version.find(__T('2'))!=string::npos)
{
if (Profile.find(__T("Simple@"))!=string::npos)
{
@@ -566,23 +566,23 @@ int32u Fims_AudioCompressionCodeCS_termID(MediaInfo_Internal &MI, size_t StreamP
return 50000;
if (Format==__T("MPEG Audio"))
{
- if (Version.find(__T("1"))!=string::npos)
+ if (Version.find(__T('1'))!=string::npos)
{
- if (Profile.find(__T("1"))!=string::npos)
+ if (Profile.find(__T('1'))!=string::npos)
return 70100;
- if (Profile.find(__T("2"))!=string::npos)
+ if (Profile.find(__T('2'))!=string::npos)
return 70200;
- if (Profile.find(__T("3"))!=string::npos)
+ if (Profile.find(__T('3'))!=string::npos)
return 70300;
return 70000;
}
- if (Version.find(__T("2"))!=string::npos)
+ if (Version.find(__T('2'))!=string::npos)
{
- if (Profile.find(__T("1"))!=string::npos)
+ if (Profile.find(__T('1'))!=string::npos)
return 90100;
- if (Profile.find(__T("2"))!=string::npos)
+ if (Profile.find(__T('2'))!=string::npos)
return 90200;
- if (Profile.find(__T("3"))!=string::npos)
+ if (Profile.find(__T('3'))!=string::npos)
return 90300;
return 90000;
}
diff --git a/Source/MediaInfo/Export/Export_Mpeg7.cpp b/Source/MediaInfo/Export/Export_Mpeg7.cpp
index 4ee0e4f..0e1f166 100644
--- a/Source/MediaInfo/Export/Export_Mpeg7.cpp
+++ b/Source/MediaInfo/Export/Export_Mpeg7.cpp
@@ -115,7 +115,7 @@ int32u Mpeg7_ContentCS_termID(MediaInfo_Internal &MI)
return 40200;
if (Format==__T("MPEG Audio") || Format==__T("Wave"))
return 10000;
- if (Format==__T("BMP") || Format==__T("GIF") || Format==__T("JPEG") || Format==__T("JPEG 2000") || Format==__T("JPEG 2000") || Format==__T("PNG") || Format==__T("TIFF"))
+ if (Format==__T("BMP") || Format==__T("GIF") || Format==__T("JPEG") || Format==__T("JPEG 2000") || Format==__T("PNG") || Format==__T("TIFF"))
return 40100;
return 500000;
}
@@ -145,9 +145,9 @@ int32u Mpeg7_FileFormatCS_termID_MediaInfo(MediaInfo_Internal &MI)
if (Format==__T("MPEG Audio"))
{
- if (MI.Get(Stream_Audio, 0, Audio_Format_Profile).find(__T("2"))!=string::npos)
+ if (MI.Get(Stream_Audio, 0, Audio_Format_Profile).find(__T('2'))!=string::npos)
return 500000; //mp2
- if (MI.Get(Stream_Audio, 0, Audio_Format_Profile).find(__T("1"))!=string::npos)
+ if (MI.Get(Stream_Audio, 0, Audio_Format_Profile).find(__T('1'))!=string::npos)
return 510000; //mp1
return 0;
}
@@ -173,10 +173,10 @@ int32u Mpeg7_FileFormatCS_termID(MediaInfo_Internal &MI)
return 60000;
if (Format==__T("JPEG"))
return 10000;
- if (Format==__T("JPEG 2000") || Format==__T("JPEG 2000"))
+ if (Format==__T("JPEG 2000"))
return 20000;
if (Format==__T("MPEG Audio"))
- return (MI.Get(Stream_Audio, 0, Audio_Format_Profile).find(__T("3"))!=string::npos)?40000:0;
+ return (MI.Get(Stream_Audio, 0, Audio_Format_Profile).find(__T('3'))!=string::npos)?40000:0;
if (Format==__T("MPEG-4"))
return 50000;
if (Format==__T("MPEG-PS"))
@@ -254,9 +254,9 @@ int32u Mpeg7_VisualCodingFormatCS_termID(MediaInfo_Internal &MI, size_t StreamPo
if (Format==__T("MPEG Video"))
{
- if (Version.find(__T("1"))!=string::npos)
+ if (Version.find(__T('1'))!=string::npos)
return 10000;
- if (Version.find(__T("2"))!=string::npos)
+ if (Version.find(__T('2'))!=string::npos)
{
if (Profile.find(__T("Simple@"))!=string::npos)
{
@@ -783,23 +783,23 @@ int32u Mpeg7_AudioCodingFormatCS_termID(MediaInfo_Internal &MI, size_t StreamPos
return 20000;
if (Format==__T("MPEG Audio"))
{
- if (Version.find(__T("1"))!=string::npos)
+ if (Version.find(__T('1'))!=string::npos)
{
- if (Profile.find(__T("1"))!=string::npos)
+ if (Profile.find(__T('1'))!=string::npos)
return 30100;
- if (Profile.find(__T("2"))!=string::npos)
+ if (Profile.find(__T('2'))!=string::npos)
return 30200;
- if (Profile.find(__T("3"))!=string::npos)
+ if (Profile.find(__T('3'))!=string::npos)
return 30300;
return 30000;
}
- if (Version.find(__T("2"))!=string::npos)
+ if (Version.find(__T('2'))!=string::npos)
{
- if (Profile.find(__T("1"))!=string::npos)
+ if (Profile.find(__T('1'))!=string::npos)
return 40100;
- if (Profile.find(__T("2"))!=string::npos)
+ if (Profile.find(__T('2'))!=string::npos)
return 40200;
- if (Profile.find(__T("3"))!=string::npos)
+ if (Profile.find(__T('3'))!=string::npos)
return 40300;
return 40000;
}
diff --git a/Source/MediaInfo/File__Analyze.cpp b/Source/MediaInfo/File__Analyze.cpp
index dee33d3..e3a7b2a 100644
--- a/Source/MediaInfo/File__Analyze.cpp
+++ b/Source/MediaInfo/File__Analyze.cpp
@@ -494,25 +494,30 @@ void File__Analyze::Open_Buffer_OutOfBand (File__Analyze* Sub, const int8u* ToAd
#endif //MEDIAINFO_DEMUX
#if MEDIAINFO_TRACE
- if (Trace_Activated)
+ Trace_Details_Handling(Sub);
+ #endif // MEDIAINFO_TRACE
+}
+#if MEDIAINFO_TRACE
+void File__Analyze::Trace_Details_Handling(File__Analyze* Sub)
+{
+ if (Trace_Activated)
+ {
+ //Details handling
+ if ((!Sub->Element[0].TraceNode.Name_Is_Empty() || Sub->Element[0].TraceNode.Children.size()) && !Trace_DoNotSave)
{
- //Details handling
- if ((Sub->Element[0].TraceNode.Get_Name() || Sub->Element[0].TraceNode.Children.size()) && !Trace_DoNotSave)
- {
- //From Sub
- while(Sub->Element_Level)
- Sub->Element_End0();
+ //From Sub
+ while (Sub->Element_Level)
+ Sub->Element_End0();
- //Add Sub to this node
- Element[Element_Level].TraceNode.Add_Child(&Sub->Element[0].TraceNode);
- Sub->Element[0].TraceNode.Init();
- }
- else
- Element[Element_Level].TraceNode.NoShow=true; //We don't want to show this item because there is no info in it
+ //Add Sub to this node
+ Element[Element_Level].TraceNode.Add_Child(&Sub->Element[0].TraceNode);
+ Sub->Element[0].TraceNode.Init();
}
- #endif
+ else
+ Element[Element_Level].TraceNode.NoShow = true; //We don't want to show this item because there is no info in it
+ }
}
-
+#endif // MEDIAINFO_TRACE
//---------------------------------------------------------------------------
void File__Analyze::Open_Buffer_Continue (const int8u* ToAdd, size_t ToAdd_Size)
{
@@ -1047,21 +1052,8 @@ void File__Analyze::Open_Buffer_Continue (File__Analyze* Sub, const int8u* ToAdd
}
#if MEDIAINFO_TRACE
- if (Trace_Activated)
- {
- //Details handling
- if ((Sub->Element[0].TraceNode.Get_Name() || Sub->Element[0].TraceNode.Children.size()) && !Trace_DoNotSave)
- {
- //From Sub
- while(Sub->Element_Level)
- Sub->Element_End0();
- Element[Element_Level].TraceNode.Add_Child(&Sub->Element[0].TraceNode);
- Sub->Element[0].TraceNode.Init();
- }
- else
- Element[Element_Level].TraceNode.NoShow=true; //We don't want to show this item because there is no info in it
- }
- #endif
+ Trace_Details_Handling(Sub);
+ #endif //MEDIAINFO_TRACE
}
//---------------------------------------------------------------------------
@@ -2249,7 +2241,7 @@ bool File__Analyze::Header_Manage()
#if MEDIAINFO_TRACE
if (Trace_Activated)
{
- if (!Element[Element_Level-1].TraceNode.Get_Name())
+ if (Element[Element_Level-1].TraceNode.Name_Is_Empty())
Element[Element_Level-1].TraceNode.Set_Name("Unknown");
Element[Element_Level].TraceNode.Size=Element_Offset;
if (Element_Offset==0)
@@ -3446,6 +3438,56 @@ void File__Analyze::Element_DoNotShow ()
//---------------------------------------------------------------------------
#if MEDIAINFO_TRACE
+void File__Analyze::Element_DoNotShow_Children ()
+{
+ for (size_t i = 0; i < Element[Element_Level].TraceNode.Children.size(); ++i)
+ {
+ if (!Element[Element_Level].TraceNode.Children[i])
+ continue;
+ Element[Element_Level].TraceNode.Children[i]->NoShow=true;
+ }
+}
+#endif //MEDIAINFO_TRACE
+
+//---------------------------------------------------------------------------
+#if MEDIAINFO_TRACE
+void File__Analyze::Element_Remove_Children_IfNoErrors ()
+{
+ for (size_t i = 0; i < Element[Element_Level].TraceNode.Children.size(); ++i)
+ {
+ if (!Element[Element_Level].TraceNode.Children[i])
+ continue;
+ delete Element[Element_Level].TraceNode.Children[i];
+ Element[Element_Level].TraceNode.Children[i] = NULL;
+ }
+
+ Element[Element_Level].TraceNode.Children.clear();
+}
+#endif //MEDIAINFO_TRACE
+
+//---------------------------------------------------------------------------
+#if MEDIAINFO_TRACE
+void File__Analyze::Element_Children_IfNoErrors ()
+{
+ if (Element[Element_Level].TraceNode.HasError)
+ return;
+
+ //TODO: option to keep the nodes
+ // Element_DoNotShow_Children();
+ Element_Remove_Children_IfNoErrors();
+}
+#endif //MEDIAINFO_TRACE
+
+//---------------------------------------------------------------------------
+#if MEDIAINFO_TRACE
+void File__Analyze::Element_Set_Remove_Children_IfNoErrors ()
+{
+ Element[Element_Level].TraceNode.RemoveIfNoErrors = true;
+}
+#endif //MEDIAINFO_TRACE
+
+//---------------------------------------------------------------------------
+#if MEDIAINFO_TRACE
void File__Analyze::Element_Show ()
{
Element[Element_Level].TraceNode.NoShow=false;
@@ -3454,6 +3496,19 @@ void File__Analyze::Element_Show ()
//---------------------------------------------------------------------------
#if MEDIAINFO_TRACE
+void File__Analyze::Element_Show_Children ()
+{
+ for (size_t i = 0; i < Element[Element_Level].TraceNode.Children.size(); ++i)
+ {
+ if (!Element[Element_Level].TraceNode.Children[i])
+ continue;
+ Element[Element_Level].TraceNode.Children[i]->NoShow=false;
+ }
+}
+#endif //MEDIAINFO_TRACE
+
+//---------------------------------------------------------------------------
+#if MEDIAINFO_TRACE
bool File__Analyze::Element_Show_Get ()
{
return !Element[Element_Level].TraceNode.NoShow;
diff --git a/Source/MediaInfo/File__Analyze.h b/Source/MediaInfo/File__Analyze.h
index 50427f6..1f5ff5f 100644
--- a/Source/MediaInfo/File__Analyze.h
+++ b/Source/MediaInfo/File__Analyze.h
@@ -350,6 +350,21 @@ protected :
Element[Element_Level].TraceNode.Infos.push_back(new element_details::Element_Node_Info(Parameter, Measure, AfterComma));
}
+
+ void Element_Info (const char* Parameter, const char* Measure=NULL, int8u AfterComma=3)
+ {
+ if (Config_Trace_Level<1)
+ return;
+
+ //Needed?
+ if (Config_Trace_Level<=0.7)
+ return;
+
+ if (Parameter && std::string(Parameter) == "NOK")
+ Element[Element_Level].TraceNode.HasError = true;
+
+ Element[Element_Level].TraceNode.Infos.push_back(new element_details::Element_Node_Info(Parameter, Measure, AfterComma));
+ }
#endif //MEDIAINFO_TRACE
#ifdef SIZE_T_IS_LONG
@@ -414,7 +429,7 @@ public :
int64u Pos=Element_Offset+BS->OffsetBeforeLastCall_Get();
element_details::Element_Node *node = new element_details::Element_Node;
- node->Set_Name(Parameter.c_str());
+ node->Set_Name(Parameter);
node->Pos = Pos==(int64u)-1 ? Pos : (File_Offset+Buffer_Offset+Pos);
node->Value.set_Option(GenericOption);
node->Value = Value;
@@ -456,6 +471,26 @@ public :
else
Element[Element_Level].TraceNode.Infos.push_back(new element_details::Element_Node_Info(Parameter, Measure, AfterComma));
}
+
+ void Param_Info(const char* Parameter, const char* Measure=NULL, int8u AfterComma=3)
+ {
+ //Coherancy
+ if (!Trace_Activated)
+ return;
+ if (Element[Element_Level].UnTrusted)
+ return;
+ if (Config_Trace_Level<=0.7)
+ return;
+
+ if (Parameter && std::string(Parameter) == "NOK")
+ Element[Element_Level].TraceNode.HasError = true;
+
+ int32s child = Element[Element_Level].TraceNode.Current_Child;
+ if (child >= 0 && Element[Element_Level].TraceNode.Children[child])
+ Element[Element_Level].TraceNode.Children[child]->Infos.push_back(new element_details::Element_Node_Info(Parameter, Measure, AfterComma));
+ else
+ Element[Element_Level].TraceNode.Infos.push_back(new element_details::Element_Node_Info(Parameter, Measure, AfterComma));
+ }
#endif //MEDIAINFO_TRACE
#ifdef SIZE_T_IS_LONG
@@ -1098,6 +1133,11 @@ public :
void Element_DoNotTrust (const char* Reason);
void Element_DoNotShow ();
void Element_Show ();
+ void Element_Set_Remove_Children_IfNoErrors ();
+ void Element_Remove_Children_IfNoErrors ();
+ void Element_Children_IfNoErrors ();
+ void Element_DoNotShow_Children ();
+ void Element_Show_Children ();
bool Element_Show_Get ();
void Element_Show_Add (File__Analyze* node);
@@ -1265,7 +1305,9 @@ protected :
std::bitset<32> Trace_Layers;
void Trace_Layers_Update (size_t Layer=(size_t)-1);
private :
-
+#if MEDIAINFO_TRACE
+ void Trace_Details_Handling(File__Analyze* Sub);
+#endif // MEDIAINFO_TRACE
//Elements
size_t Element_Level_Base; //From other parsers
std::vector<element_details> Element;
diff --git a/Source/MediaInfo/File__Analyze_Element.cpp b/Source/MediaInfo/File__Analyze_Element.cpp
index 274a782..ff22d31 100644
--- a/Source/MediaInfo/File__Analyze_Element.cpp
+++ b/Source/MediaInfo/File__Analyze_Element.cpp
@@ -598,32 +598,13 @@ std::ostream& operator<<(std::ostream& os, const element_details::Element_Node_D
//***************************************************************************
// Element_Node_Info
//***************************************************************************
-
-//---------------------------------------------------------------------------
-element_details::Element_Node_Info& element_details::Element_Node_Info::operator=(const Element_Node_Info& v)
-{
- if (this == &v)
- return *this;
-
- data = v.data;
- if (v.Measure)
- {
- size_t len = strlen(v.Measure) + 1;
- Measure = new char[len];
- std::memcpy(Measure, v.Measure, len);
- }
-
- return *this;
-}
-
-//---------------------------------------------------------------------------
std::ostream& operator<<(std::ostream& os, element_details::Element_Node_Info* v)
{
if (!v)
return os;
os << v->data;
- if (v->Measure)
+ if (!v->Measure.empty())
os << v->Measure;
return os;
@@ -634,8 +615,8 @@ std::ostream& operator<<(std::ostream& os, element_details::Element_Node_Info* v
//***************************************************************************
//---------------------------------------------------------------------------
element_details::Element_Node::Element_Node()
-: Pos(0), Size(0), Name(NULL),
- Current_Child(-1), NoShow(false), OwnChildren(true), IsCat(false)
+: Pos(0), Size(0),
+ Current_Child(-1), NoShow(false), OwnChildren(true), IsCat(false), HasError(false), RemoveIfNoErrors(false)
{
}
@@ -647,18 +628,7 @@ element_details::Element_Node::Element_Node(const Element_Node& node)
Pos = node.Pos;
Size = node.Size;
- if (node.Name)
- {
- size_t len = strlen(node.Name);
- if (len)
- {
- len++;
- Name = new char[len];
- std::memcpy(Name, node.Name, len);
- }
- }
- else
- Name = NULL;
+ Name = node.Name;
Value = node.Value;
Infos = node.Infos;
Children = node.Children;
@@ -666,13 +636,13 @@ element_details::Element_Node::Element_Node(const Element_Node& node)
NoShow = node.NoShow;
OwnChildren = node.OwnChildren;
IsCat = node.IsCat;
+ HasError = node.HasError;
+ RemoveIfNoErrors = node.RemoveIfNoErrors;
}
//---------------------------------------------------------------------------
element_details::Element_Node::~Element_Node()
{
- delete[] Name;
-
if (!OwnChildren)
return;
@@ -690,11 +660,7 @@ void element_details::Element_Node::Init()
{
Pos = 0;
Size = 0;
- if (Name)
- {
- delete[] Name;
- Name = NULL;
- }
+ Name.clear();
Value.clear();
if (Children.size() && OwnChildren)
for (size_t i = 0; i < Children.size(); ++i)
@@ -708,12 +674,17 @@ void element_details::Element_Node::Init()
NoShow = false;
OwnChildren = true;
IsCat = false;
+ HasError = false;
+ RemoveIfNoErrors = false;
}
//---------------------------------------------------------------------------
int element_details::Element_Node::Print_Micro_Xml(std::ostringstream& ss, size_t level)
{
- if (IsCat || !Name)
+ if (NoShow)
+ return 0;
+
+ if (IsCat || Name_Is_Empty())
goto print_children;
if (Value.empty())
@@ -737,7 +708,7 @@ int element_details::Element_Node::Print_Micro_Xml(std::ostringstream& ss, size_
{
Element_Node_Info* Info = Infos[i];
- if (Info->Measure && !std::strcmp(Info->Measure, "Parser"))
+ if (Info->Measure == "Parser")
{
if (!(Info->data == string()))
ss << " parser=\"" << Info->data << "\"";
@@ -765,7 +736,7 @@ print_children:
for (size_t i = 0; i < Children.size(); ++i)
Children[i]->Print_Micro_Xml(ss, level);
- if (!IsCat && Name)
+ if (!IsCat && !Name_Is_Empty())
{
//end tag
if (Value.empty())
@@ -781,10 +752,13 @@ print_children:
//---------------------------------------------------------------------------
int element_details::Element_Node::Print_Xml(std::ostringstream& ss, size_t level)
{
+ if (NoShow)
+ return 0;
+
std::string spaces;
bool Modified = false;
- if (IsCat || !Name)
+ if (IsCat || Name_Is_Empty())
goto print_children;
spaces.resize(level, ' ');
@@ -811,7 +785,7 @@ int element_details::Element_Node::Print_Xml(std::ostringstream& ss, size_t leve
{
Element_Node_Info* Info = Infos[i];
- if (Info->Measure && !std::strcmp(Info->Measure, "Parser"))
+ if (Info->Measure == "Parser")
{
if (!(Info->data == string()))
ss << " parser=\"" << Info->data << "\"";
@@ -841,7 +815,7 @@ print_children:
for (size_t i = 0; i < Children.size(); ++i)
Children[i]->Print_Xml(ss, level);
- if (!IsCat && Name)
+ if (!IsCat && !Name_Is_Empty())
{
//end tag
if (Value.empty())
@@ -882,9 +856,12 @@ int element_details::Element_Node::Print_Tree(std::ostringstream& ss, size_t lev
{
std::string spaces;
+ if (NoShow)
+ return 0;
+
if (IsCat)
return Print_Tree_Cat(ss, level);
- else if (!Name)
+ else if (Name_Is_Empty())
goto print_children;
ss << std::setfill('0') << std::setw(8) << std::hex << std::uppercase << Pos << std::nouppercase << std::dec;
@@ -898,7 +875,7 @@ int element_details::Element_Node::Print_Tree(std::ostringstream& ss, size_t lev
if (!Value.empty())
{
ss << ":";
- int nb_free = NB_SPACES - level - (Name ? 0 : strlen(Name)); // 40 - len(Name) - len(spaces)
+ int nb_free = NB_SPACES - level - (Name_Is_Empty() ? 0 : Name.length()); // 40 - len(Name) - len(spaces)
spaces.resize(nb_free > 0 ? nb_free : 1, ' ');
Value.Set_Output_Format(Element_Node_Data::Format_Tree);
ss << spaces << Value;
@@ -910,7 +887,7 @@ int element_details::Element_Node::Print_Tree(std::ostringstream& ss, size_t lev
{
Element_Node_Info* Info = Infos[i];
- if (Info->Measure && !std::strcmp(Info->Measure, "Parser"))
+ if (Info->Measure == "Parser")
{
if (!(Info->data == string()))
ss << " - Parser=" << Info->data;
@@ -961,51 +938,24 @@ int element_details::Element_Node::Print(MediaInfo_Config::trace_Format Format,
//---------------------------------------------------------------------------
void element_details::Element_Node::Add_Child(Element_Node* node)
{
- Element_Node *new_node = new Element_Node(*node);
- node->OwnChildren = false;
- Children.push_back(new_node);
-}
-
-//---------------------------------------------------------------------------
-void element_details::Element_Node::Set_Name(const char* Name_)
-{
- delete[] Name;
-
- if (!Name_)
+ if (node->HasError)
{
- Name = NULL;
- return;
+ HasError = node->HasError;
+ NoShow = false;
}
- size_t len = strlen(Name_);
- if (!len)
+ if (RemoveIfNoErrors && !node->HasError)
{
- Name = NULL;
+ if (!HasError)
+ NoShow = true;
return;
}
- len++;
- Name = new char[len];
- std::memcpy(Name, Name_, len);
+ Element_Node *new_node = new Element_Node(*node);
+ node->OwnChildren = false;
+ Children.push_back(new_node);
}
-//---------------------------------------------------------------------------
-void element_details::Element_Node::Set_Name(const string &Name_)
-{
- delete[] Name;
-
-
- size_t len = Name_.length();;
- if (!len)
- {
- Name = NULL;
- return;
- }
-
- Name = new char[len + 1];
- std::memcpy(Name, Name_.c_str(), len);
- Name[len] = '\0';
-}
#endif
}
diff --git a/Source/MediaInfo/File__Analyze_Element.h b/Source/MediaInfo/File__Analyze_Element.h
index 3ce2c3f..9d5d1d3 100644
--- a/Source/MediaInfo/File__Analyze_Element.h
+++ b/Source/MediaInfo/File__Analyze_Element.h
@@ -118,29 +118,16 @@ struct element_details
data.set_Option(Option);
data = parameter;
if (_Measure)
- {
- size_t len = strlen(_Measure);
- Measure = new char[len + 1];
- std::memcpy(Measure, _Measure, len);
- Measure[len] = '\0';
- }
- else
- Measure = NULL;
- }
-
- ~Element_Node_Info()
- {
- delete[] Measure;
+ Measure = _Measure;
}
friend std::ostream& operator<<(std::ostream& os, element_details::Element_Node_Info* v);
Element_Node_Data data;
- char* Measure;
-
- Element_Node_Info& operator=(const Element_Node_Info&);
+ std::string Measure;
private:
+ Element_Node_Info& operator=(const Element_Node_Info&);
Element_Node_Info(const Element_Node_Info&);
};
@@ -154,7 +141,7 @@ struct element_details
int64u Pos; // Position of the element in the file
int64u Size; // Size of the element (including header and sub-elements)
private:
- char* Name; // Name planned for this element
+ std::string Name; // Name planned for this element
public:
Element_Node_Data Value; // The value (currently used only with Trace XML)
std::vector<Element_Node_Info*> Infos; // More info about the element
@@ -163,12 +150,16 @@ struct element_details
bool NoShow; // Don't show this element
bool OwnChildren; // Child is owned by this node
bool IsCat; // Node is a category
+ bool HasError; // Node or sub-nodes has Nok
+ bool RemoveIfNoErrors;// Remove Children Node if no NOK appears
void Init(); //Initialize with common values
- void Add_Child(Element_Node* node); //Add a subchild to the current node
- void Set_Name(const char* Name_);
- void Set_Name(const string &Name_);
- const char* Get_Name() {return Name;}
+ void Add_Child(Element_Node* node); //Add a subchild to the current node
+ void Set_Name(const string &Name_)
+ {
+ Name = Name_;
+ }
+ bool Name_Is_Empty() const {return Name.empty();}
// Print
int Print(MediaInfo_Config::trace_Format Format, std::string& str); //Print the node into str
diff --git a/Source/MediaInfo/File__Analyze_Streams.cpp b/Source/MediaInfo/File__Analyze_Streams.cpp
index 411b881..6d98aea 100644
--- a/Source/MediaInfo/File__Analyze_Streams.cpp
+++ b/Source/MediaInfo/File__Analyze_Streams.cpp
@@ -750,7 +750,14 @@ void File__Analyze::Fill (stream_t StreamKind, size_t StreamPos, size_t Paramete
{
if (Languages[Pos].size()>=1)
{
- Ztring Language_Translated=MediaInfoLib::Config.Language_Get(__T("Language_")+Languages[Pos][0]);
+ Ztring Language_Translated;
+ if (Languages[Pos].size()==2)
+ Language_Translated=MediaInfoLib::Config.Language_Get(__T("Language_")+Languages[Pos].Read()); //Testing in case the langauge file has the complex form
+ if (Language_Translated.find(__T("Language_"))==0)
+ Language_Translated.clear(); //No translation found
+ if (Language_Translated.empty())
+ {
+ Language_Translated=MediaInfoLib::Config.Language_Get(__T("Language_")+Languages[Pos][0]);
if (Language_Translated.find(__T("Language_"))==0)
Language_Translated=Languages[Pos][0]; //No translation found
if (Languages[Pos].size()>=2)
@@ -768,6 +775,7 @@ void File__Analyze::Fill (stream_t StreamKind, size_t StreamPos, size_t Paramete
Language_Translated+=Languages[Pos][Pos2];
}
}
+ }
Language1.push_back(Language_Translated);
if (Languages[Pos][0].size()==2)
{
@@ -807,10 +815,10 @@ void File__Analyze::Fill (stream_t StreamKind, size_t StreamPos, size_t Paramete
if (Parameter==Fill_Parameter(StreamKind, Generic_ServiceName)
|| Parameter==Fill_Parameter(StreamKind, Generic_ServiceProvider))
{
- if (Retrieve(StreamKind, StreamPos, Parameter).find(__T(" - "))==string::npos && (Retrieve(StreamKind, StreamPos, Parameter).find(__T(":"))==2 || Retrieve(StreamKind, StreamPos, Parameter).find(__T(":"))==3))
+ if (Retrieve(StreamKind, StreamPos, Parameter).find(__T(" - "))==string::npos && (Retrieve(StreamKind, StreamPos, Parameter).find(__T(':'))==2 || Retrieve(StreamKind, StreamPos, Parameter).find(__T(':'))==3))
{
Ztring Temp=Retrieve(StreamKind, StreamPos, Parameter);
- Temp.erase(0, Retrieve(StreamKind, StreamPos, Parameter).find(__T(":"))+1);
+ Temp.erase(0, Retrieve(StreamKind, StreamPos, Parameter).find(__T(':'))+1);
(*Stream)[StreamKind][StreamPos](Parameter)=Temp;
}
}
@@ -1428,7 +1436,7 @@ size_t File__Analyze::Merge(File__Analyze &ToAdd, stream_t StreamKind, size_t St
}
if (!colour_description_present_Temp.empty())
{
- if (!colour_description_present_Temp.empty() && !Retrieve(Stream_Video, StreamPos_To, Video_colour_description_present).empty()
+ if (!Retrieve(Stream_Video, StreamPos_To, Video_colour_description_present).empty()
&& (colour_primaries_Temp!=Retrieve(Stream_Video, StreamPos_To, Video_colour_primaries)
|| transfer_characteristics_Temp!=Retrieve(Stream_Video, StreamPos_To, Video_transfer_characteristics)
|| matrix_coefficients_Temp!=Retrieve(Stream_Video, StreamPos_To, Video_matrix_coefficients)))
diff --git a/Source/MediaInfo/HashWrapper.cpp b/Source/MediaInfo/HashWrapper.cpp
index 17accce..8637745 100644
--- a/Source/MediaInfo/HashWrapper.cpp
+++ b/Source/MediaInfo/HashWrapper.cpp
@@ -52,7 +52,8 @@ namespace MediaInfoLib
// info
//***************************************************************************
-const char* HashWrapper_Hex = "0123456789abcdef";
+static const char HashWrapper_Hex[16] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
+
//***************************************************************************
// Constructor/Destructor
diff --git a/Source/MediaInfo/MediaInfo_Config.cpp b/Source/MediaInfo/MediaInfo_Config.cpp
index ad321c5..2b547eb 100644
--- a/Source/MediaInfo/MediaInfo_Config.cpp
+++ b/Source/MediaInfo/MediaInfo_Config.cpp
@@ -125,7 +125,7 @@ namespace MediaInfoLib
{
//---------------------------------------------------------------------------
-const Char* MediaInfo_Version=__T("MediaInfoLib - v0.7.90");
+const Char* MediaInfo_Version=__T("MediaInfoLib - v0.7.91");
const Char* MediaInfo_Url=__T("http://MediaArea.net/MediaInfo");
Ztring EmptyZtring; //Use it when we can't return a reference to a true Ztring
const Ztring EmptyZtring_Const; //Use it when we can't return a reference to a true Ztring, const version
@@ -1509,7 +1509,7 @@ void MediaInfo_Config::Language_Set (stream_t StreamKind)
ToReplace.FindAndReplace(__T("/String9"), Ztring());
ToReplace.FindAndReplace(__T("/String"), Ztring());
}
- if (!Language_Raw && ToReplace.find(__T("/"))!=Error) //Complex values, like XXX/YYY --> We translate both XXX and YYY
+ if (!Language_Raw && ToReplace.find(__T('/'))!=Error) //Complex values, like XXX/YYY --> We translate both XXX and YYY
{
Ztring ToReplace1=ToReplace.SubString(Ztring(), __T("/"));
Ztring ToReplace2=ToReplace.SubString(__T("/"), Ztring());
diff --git a/Source/MediaInfo/MediaInfo_Config_Automatic.cpp b/Source/MediaInfo/MediaInfo_Config_Automatic.cpp
index b65ddd4..597056a 100644
--- a/Source/MediaInfo/MediaInfo_Config_Automatic.cpp
+++ b/Source/MediaInfo/MediaInfo_Config_Automatic.cpp
@@ -701,6 +701,7 @@ void MediaInfo_Config_DefaultLanguage (Translation &Info)
"Language_en-us;English (United States)\n"
"Language_eo;Esperanto\n"
"Language_es;Spanish\n"
+ "Language_es-419;Spanish (Latin America)\n"
"Language_et;Estonian\n"
"Language_eu;Basque\n"
"Language_fa;Persian\n"
diff --git a/Source/MediaInfo/MediaInfo_Config_MediaInfo.cpp b/Source/MediaInfo/MediaInfo_Config_MediaInfo.cpp
index 7f1e98f..9127158 100644
--- a/Source/MediaInfo/MediaInfo_Config_MediaInfo.cpp
+++ b/Source/MediaInfo/MediaInfo_Config_MediaInfo.cpp
@@ -764,21 +764,21 @@ Ztring MediaInfo_Config_MediaInfo::Option (const String &Option, const String &V
{
#if MEDIAINFO_DEMUX
int64u ValueInt64u;
- if (Value.find(__T(":"))!=string::npos)
+ if (Value.find(__T(':'))!=string::npos)
{
Ztring ValueZ=Value;
ValueInt64u=0;
- size_t Value_Pos=ValueZ.find(__T(":"));
+ size_t Value_Pos=ValueZ.find(__T(':'));
if (Value_Pos==string::npos)
Value_Pos=ValueZ.size();
ValueInt64u+=Ztring(ValueZ.substr(0, Value_Pos)).To_int64u()*60*60*1000*1000*1000;
ValueZ.erase(0, Value_Pos+1);
- Value_Pos=ValueZ.find(__T(":"));
+ Value_Pos=ValueZ.find(__T(':'));
if (Value_Pos==string::npos)
Value_Pos=ValueZ.size();
ValueInt64u+=Ztring(ValueZ.substr(0, Value_Pos)).To_int64u()*60*1000*1000*1000;
ValueZ.erase(0, Value_Pos+1);
- Value_Pos=ValueZ.find(__T("."));
+ Value_Pos=ValueZ.find(__T('.'));
if (Value_Pos==string::npos)
Value_Pos=ValueZ.size();
ValueInt64u+=Ztring(ValueZ.substr(0, Value_Pos)).To_int64u()*1000*1000*1000;
diff --git a/Source/MediaInfo/MediaInfo_Events.h b/Source/MediaInfo/MediaInfo_Events.h
index b1b1fe3..a81b465 100644
--- a/Source/MediaInfo/MediaInfo_Events.h
+++ b/Source/MediaInfo/MediaInfo_Events.h
@@ -931,14 +931,14 @@ inline MediaInfo_int64u MediaInfo_ID_FromGet_intA (const char* ID, const char* C
const char* SubID;
ToReturn=(MediaInfo_int64u)atoi(ID);
- SubID=strstr(ID, "-");
+ SubID= strchr(ID, '-');
if (SubID)
{
MediaInfo_int64u ToReturn2;
ToReturn2=atoi(SubID+1);
- SubID=strstr(SubID+1, "-");
+ SubID= strchr(SubID+1, '-');
if (SubID)
{
MediaInfo_int64u ToReturn3;
diff --git a/Source/MediaInfo/MediaInfo_Inform.cpp b/Source/MediaInfo/MediaInfo_Inform.cpp
index 0b4170f..7b70cbf 100644
--- a/Source/MediaInfo/MediaInfo_Inform.cpp
+++ b/Source/MediaInfo/MediaInfo_Inform.cpp
@@ -589,9 +589,9 @@ Ztring MediaInfo_Internal::Inform (stream_t StreamKind, size_t StreamPos, bool I
//Gestion $xx$
size_t PosX=0;
- while (Retour.find(__T("$"), PosX)!=(size_t)-1)
+ while (Retour.find(__T('$'), PosX)!=(size_t)-1)
{
- PosX=Retour.find(__T("$"), PosX);
+ PosX=Retour.find(__T('$'), PosX);
if (Retour.size()>PosX+2 && !(Retour(PosX+1)==__T('i') && Retour(PosX+2)==__T('f') && Retour(PosX+3)==__T('('))) //To keep out "%" without any signification, or "$if(..."
{
Ztring ARemplacer=Ztring(__T("$")+Retour.SubString(__T("$"), __T("$"), PosX))+__T("$");
@@ -668,9 +668,9 @@ Ztring MediaInfo_Internal::Inform (stream_t StreamKind, size_t StreamPos, bool I
//Gestion %xxx%
PosX=0;
- while (Retour.find(__T("%"), PosX)!=(size_t)-1)
+ while (Retour.find(__T('%'), PosX)!=(size_t)-1)
{
- PosX=Retour.find(__T("%"), PosX);
+ PosX=Retour.find(__T('%'), PosX);
if (Retour.size() > PosX + 2 && Retour[PosX + 1] >= __T('A') && Retour[PosX + 1] <= __T('Z')) //To keep out "%" without any signification
{
Ztring ARemplacer = Ztring(__T("%") + Retour.SubString(__T("%"), __T("%"), PosX)) + __T("%");
diff --git a/Source/MediaInfo/MediaInfo_Internal.cpp b/Source/MediaInfo/MediaInfo_Internal.cpp
index 3849843..1d0c040 100644
--- a/Source/MediaInfo/MediaInfo_Internal.cpp
+++ b/Source/MediaInfo/MediaInfo_Internal.cpp
@@ -1280,22 +1280,22 @@ String MediaInfo_Internal::Option (const String &Option, const String &Value)
Ztring FrameNumberZ=List[Pos].substr(List[Pos].find(__T("Frame="))+6, string::npos);
SeekValue=FrameNumberZ.To_int64u();
}
- else if (!List[Pos].empty() && List[Pos].find(__T(":"))!=string::npos)
+ else if (!List[Pos].empty() && List[Pos].find(__T(':'))!=string::npos)
{
Method=2;
Ztring ValueZ=List[Pos];
SeekValue=0;
- size_t Value_Pos=ValueZ.find(__T(":"));
+ size_t Value_Pos=ValueZ.find(__T(':'));
if (Value_Pos==string::npos)
Value_Pos=ValueZ.size();
SeekValue+=Ztring(ValueZ.substr(0, Value_Pos)).To_int64u()*60*60*1000*1000*1000;
ValueZ.erase(0, Value_Pos+1);
- Value_Pos=ValueZ.find(__T(":"));
+ Value_Pos=ValueZ.find(__T(':'));
if (Value_Pos==string::npos)
Value_Pos=ValueZ.size();
SeekValue+=Ztring(ValueZ.substr(0, Value_Pos)).To_int64u()*60*1000*1000*1000;
ValueZ.erase(0, Value_Pos+1);
- Value_Pos=ValueZ.find(__T("."));
+ Value_Pos=ValueZ.find(__T('.'));
if (Value_Pos==string::npos)
Value_Pos=ValueZ.size();
SeekValue+=Ztring(ValueZ.substr(0, Value_Pos)).To_int64u()*1000*1000*1000;
diff --git a/Source/MediaInfo/MediaInfo_Internal.h b/Source/MediaInfo/MediaInfo_Internal.h
index 7e8035b..2bf8c1d 100644
--- a/Source/MediaInfo/MediaInfo_Internal.h
+++ b/Source/MediaInfo/MediaInfo_Internal.h
@@ -130,6 +130,7 @@ private :
//Helpers
void CreateDummy (const String& Value); //Create dummy Information
MediaInfo_Internal(const MediaInfo_Internal&); // Copy Constructor
+ MediaInfo_Internal &operator =(const MediaInfo_Internal &);
//Open Buffer
bool Info_IsMultipleParsing;
diff --git a/Source/MediaInfo/Multiple/File_DashMpd.cpp b/Source/MediaInfo/Multiple/File_DashMpd.cpp
index 7bc6492..e302c13 100644
--- a/Source/MediaInfo/Multiple/File_DashMpd.cpp
+++ b/Source/MediaInfo/Multiple/File_DashMpd.cpp
@@ -155,6 +155,8 @@ struct template_generic
template_generic(const template_generic &ToCopy)
{
+ if (this == &ToCopy)
+ return;
Sequence=new sequence;
*Sequence=*ToCopy.Sequence;
template_generic::BaseURL=ToCopy.BaseURL;
@@ -173,14 +175,14 @@ struct template_generic
void Representation_Attributes_Parse (XMLElement* Item);
void Decode ();
+private:
+ template_generic &operator =(const template_generic &);
};
void template_generic::AdaptationSet_Attributes_Parse (XMLElement* Item)
{
- const char* Attribute;
-
//Attributes - mineType
- Attribute=Item->Attribute("mimeType");
+ const char* Attribute=Item->Attribute("mimeType");
if (Attribute)
Sequence->StreamKind=DashMpd_mimeType_StreamKind(Attribute);
@@ -197,10 +199,8 @@ void template_generic::AdaptationSet_Attributes_Parse (XMLElement* Item)
void template_generic::SegmentTemplate_Attributes_Parse (XMLElement* Item)
{
- const char* Attribute;
-
//Attributes - initialization
- Attribute=Item->Attribute("initialization");
+ const char* Attribute=Item->Attribute("initialization");
if (Attribute)
{
initialization.From_UTF8(Attribute);
@@ -230,11 +230,10 @@ void template_generic::SegmentTemplate_Attributes_Parse (XMLElement* Item)
void template_generic::SegmentTimeline_Attributes_Parse (XMLElement* Item)
{
- const char* Attribute;
segmenttimeline SegmentTimeLine;
//Attributes - t (start time)
- Attribute=Item->Attribute("t");
+ const char* Attribute=Item->Attribute("t");
if (Attribute)
{
SegmentTimeLine.t=Ztring().From_UTF8(Attribute).To_int64u();
@@ -265,10 +264,8 @@ void template_generic::SegmentTimeline_Attributes_Parse (XMLElement* Item)
void template_generic::Representation_Attributes_Parse (XMLElement* Item)
{
- const char* Attribute;
-
//Attributes - id
- Attribute=Item->Attribute("id");
+ const char* Attribute=Item->Attribute("id");
if (Attribute)
{
Sequence->StreamID=Ztring().From_UTF8(Attribute).To_int64u(16);
diff --git a/Source/MediaInfo/Multiple/File_DcpCpl.cpp b/Source/MediaInfo/Multiple/File_DcpCpl.cpp
index f79219d..4059e3b 100644
--- a/Source/MediaInfo/Multiple/File_DcpCpl.cpp
+++ b/Source/MediaInfo/Multiple/File_DcpCpl.cpp
@@ -60,6 +60,8 @@ File_DcpCpl::File_DcpCpl()
//Temp
ReferenceFiles=NULL;
+ //PKL
+ PKL_Pos = (size_t)-1;
}
//---------------------------------------------------------------------------
diff --git a/Source/MediaInfo/Multiple/File_DvDif.cpp b/Source/MediaInfo/Multiple/File_DvDif.cpp
index 405f23f..5b0820c 100644
--- a/Source/MediaInfo/Multiple/File_DvDif.cpp
+++ b/Source/MediaInfo/Multiple/File_DvDif.cpp
@@ -48,7 +48,7 @@ static const char* Dv_sct[]=
};
//---------------------------------------------------------------------------
-const char* Dv_Ssyb_Pc0(int8u Pc0)
+static const char* Dv_Ssyb_Pc0(int8u Pc0)
{
switch (Pc0)
{
diff --git a/Source/MediaInfo/Multiple/File_Gxf.cpp b/Source/MediaInfo/Multiple/File_Gxf.cpp
index e387501..ebed953 100644
--- a/Source/MediaInfo/Multiple/File_Gxf.cpp
+++ b/Source/MediaInfo/Multiple/File_Gxf.cpp
@@ -1610,6 +1610,7 @@ void File_Gxf::Detect_EOF()
//---------------------------------------------------------------------------
File__Analyze* File_Gxf::ChooseParser_ChannelGrouping(int8u TrackID)
{
+#ifdef MEDIAINFO_SMPTEST0337_YES
File_ChannelGrouping* Parser;
if (Audio_Count%2)
{
@@ -1644,10 +1645,11 @@ File__Analyze* File_Gxf::ChooseParser_ChannelGrouping(int8u TrackID)
Parser->Demux_UnpacketizeContainer=true;
}
#endif //MEDIAINFO_DEMUX
-
return Parser;
+#else
+ return NULL;
+#endif // MEDIAINFO_SMPTEST0337_YES
}
-
//---------------------------------------------------------------------------
void File_Gxf::TryToFinish()
{
diff --git a/Source/MediaInfo/Multiple/File_HdsF4m.cpp b/Source/MediaInfo/Multiple/File_HdsF4m.cpp
index 3199272..58fbcea 100644
--- a/Source/MediaInfo/Multiple/File_HdsF4m.cpp
+++ b/Source/MediaInfo/Multiple/File_HdsF4m.cpp
@@ -129,10 +129,8 @@ bool File_HdsF4m::FileHeader_Begin()
if (string(Root_Item->Value())=="media")
{
sequence* Sequence=new sequence;
- const char* Attribute;
-
//Attributes - mineType
- Attribute=Root_Item->Attribute("url");
+ const char* Attribute=Root_Item->Attribute("url");
if (Attribute)
Sequence->AddFileName(Ztring().From_UTF8(Attribute)+__T("Seg1.f4f"));
diff --git a/Source/MediaInfo/Multiple/File_Mk.cpp b/Source/MediaInfo/Multiple/File_Mk.cpp
index 4ae219e..165e681 100644
--- a/Source/MediaInfo/Multiple/File_Mk.cpp
+++ b/Source/MediaInfo/Multiple/File_Mk.cpp
@@ -1127,7 +1127,7 @@ void File_Mk::Header_Parse()
}
//Parsing
- int64u Name, Size;
+ int64u Name, Size = 0;
bool NameIsValid=true;
if (Element_Offset+1<Element_Size)
{
@@ -2058,6 +2058,10 @@ void File_Mk::Segment_Cluster()
{
Element_Name("Cluster");
+#if MEDIAINFO_TRACE
+ Element_Set_Remove_Children_IfNoErrors();
+#endif // MEDIAINFO_TRACE
+
//For each stream
std::map<int64u, stream>::iterator Temp=Stream.begin();
if (!Segment_Cluster_Count)
@@ -2117,15 +2121,17 @@ void File_Mk::Segment_Cluster_BlockGroup()
//---------------------------------------------------------------------------
void File_Mk::Segment_Cluster_BlockGroup_Block()
{
- Element_Name(Element_Level==3?"SimpleBlock":"Block");
+ bool is_simple_block = Element_Level == 3;
+ Element_Name(is_simple_block?"SimpleBlock":"Block");
//Parsing
int64u TrackNumber;
Get_EB (TrackNumber, "TrackNumber");
//Finished?
- Stream[TrackNumber].PacketCount++;
- if (Stream[TrackNumber].Searching_Payload || Stream[TrackNumber].Searching_TimeStamps || Stream[TrackNumber].Searching_TimeStamp_Start)
+ stream& streamItem = Stream[TrackNumber];
+ streamItem.PacketCount++;
+ if (streamItem.Searching_Payload || streamItem.Searching_TimeStamps || streamItem.Searching_TimeStamp_Start)
{
//Parsing
int16u TimeCodeU;
@@ -2134,28 +2140,28 @@ void File_Mk::Segment_Cluster_BlockGroup_Block()
Element_Info1(TimeCodeU);
FILLING_BEGIN();
- if (Segment_Cluster_TimeCode_Value+TimeCode<Stream[TrackNumber].TimeCode_Start) //Does not work well: Stream[TrackNumber].Searching_TimeStamp_Start)
+ if (Segment_Cluster_TimeCode_Value+TimeCode<streamItem.TimeCode_Start) //Does not work well: streamItem.Searching_TimeStamp_Start)
{
FILLING_BEGIN();
- Stream[TrackNumber].TimeCode_Start=Segment_Cluster_TimeCode_Value+TimeCode;
- //Stream[TrackNumber].Searching_TimeStamp_Start=false;
+ streamItem.TimeCode_Start=Segment_Cluster_TimeCode_Value+TimeCode;
+ //streamItem.Searching_TimeStamp_Start=false;
FILLING_END();
}
- if (Stream[TrackNumber].Searching_TimeStamps)
+ if (streamItem.Searching_TimeStamps)
{
- Stream[TrackNumber].TimeCodes.push_back(Segment_Cluster_TimeCode_Value+TimeCode);
- if (Stream[TrackNumber].TimeCodes.size()>128)
- Stream[TrackNumber].Searching_TimeStamps=false;
+ streamItem.TimeCodes.push_back(Segment_Cluster_TimeCode_Value+TimeCode);
+ if (streamItem.TimeCodes.size()>128)
+ streamItem.Searching_TimeStamps=false;
}
if (Segment_Cluster_BlockGroup_BlockDuration_Value!=(int64u)-1)
{
- Stream[TrackNumber].Segment_Cluster_BlockGroup_BlockDuration_Counts[Segment_Cluster_BlockGroup_BlockDuration_Value]++;
+ streamItem.Segment_Cluster_BlockGroup_BlockDuration_Counts[Segment_Cluster_BlockGroup_BlockDuration_Value]++;
Segment_Cluster_BlockGroup_BlockDuration_Value=(int64u)-1;
}
FILLING_END();
- if (Stream[TrackNumber].Searching_Payload)
+ if (streamItem.Searching_Payload)
{
std::vector<int64u> Laces;
int32u Lacing;
@@ -2230,41 +2236,41 @@ void File_Mk::Segment_Cluster_BlockGroup_Block()
for (size_t Pos=0; Pos<Laces.size(); Pos++)
{
//Content compression
- if (Stream[TrackNumber].ContentCompAlgo!=(int32u)-1 && Stream[TrackNumber].ContentCompAlgo!=3)
- Stream[TrackNumber].Searching_Payload=false; //Unsupported
+ if (streamItem.ContentCompAlgo!=(int32u)-1 && streamItem.ContentCompAlgo!=3)
+ streamItem.Searching_Payload=false; //Unsupported
//Integrity test
if (Element_Offset+Laces[Pos]>Element_Size)
- Stream[TrackNumber].Searching_Payload=false; //There is a problem
+ streamItem.Searching_Payload=false; //There is a problem
- if (Stream[TrackNumber].Searching_Payload)
+ if (streamItem.Searching_Payload)
{
Element_Begin1("Data");
- Element_Parser(Stream[TrackNumber].Parser->ParserName.c_str());
+ Element_Parser(streamItem.Parser->ParserName.c_str());
Element_Code=TrackNumber;
//Content compression
- if (Stream[TrackNumber].ContentCompAlgo==3) //Header Stripping
+ if (streamItem.ContentCompAlgo==3) //Header Stripping
{
- Element_Offset-=(size_t)Stream[TrackNumber].ContentCompSettings_Buffer_Size; //This is an extra array, not in the stream
- Open_Buffer_Continue(Stream[TrackNumber].Parser, Stream[TrackNumber].ContentCompSettings_Buffer, (size_t)Stream[TrackNumber].ContentCompSettings_Buffer_Size);
- Element_Offset+=(size_t)Stream[TrackNumber].ContentCompSettings_Buffer_Size;
- Demux(Stream[TrackNumber].ContentCompSettings_Buffer, (size_t)Stream[TrackNumber].ContentCompSettings_Buffer_Size, ContentType_MainStream);
+ Element_Offset-=(size_t)streamItem.ContentCompSettings_Buffer_Size; //This is an extra array, not in the stream
+ Open_Buffer_Continue(streamItem.Parser, streamItem.ContentCompSettings_Buffer, (size_t)streamItem.ContentCompSettings_Buffer_Size);
+ Element_Offset+=(size_t)streamItem.ContentCompSettings_Buffer_Size;
+ Demux(streamItem.ContentCompSettings_Buffer, (size_t)streamItem.ContentCompSettings_Buffer_Size, ContentType_MainStream);
}
//Parsing
#if MEDIAINFO_DEMUX
int8u Demux_Level_old=Demux_Level;
- if (Stream[TrackNumber].Parser && Stream[TrackNumber].Parser->Demux_Level==2)
+ if (streamItem.Parser && streamItem.Parser->Demux_Level==2)
Demux_Level=4;
Demux(Buffer+Buffer_Offset+(size_t)Element_Offset, (size_t)(Element_Size-Element_Offset), ContentType_MainStream);
Demux_Level=Demux_Level_old;
#endif //MEDIAINFO_DEMUX
- Open_Buffer_Continue(Stream[TrackNumber].Parser, (size_t)Laces[Pos]);
- if (Stream[TrackNumber].Parser->Status[IsFinished]
- || (Stream[TrackNumber].PacketCount>=300 && MediaInfoLib::Config.ParseSpeed_Get()<1))
- Stream[TrackNumber].Searching_Payload=false;
+ Open_Buffer_Continue(streamItem.Parser, (size_t)Laces[Pos]);
+ if (streamItem.Parser->Status[IsFinished]
+ || (streamItem.PacketCount>=300 && MediaInfoLib::Config.ParseSpeed_Get()<1))
+ streamItem.Searching_Payload=false;
Element_End0();
}
@@ -2281,7 +2287,7 @@ void File_Mk::Segment_Cluster_BlockGroup_Block()
Skip_XX(Element_Size-Element_Offset, "Data");
}
- if (!Stream[TrackNumber].Searching_Payload && !Stream[TrackNumber].Searching_TimeStamps && !Stream[TrackNumber].Searching_TimeStamp_Start)
+ if (!streamItem.Searching_Payload && !streamItem.Searching_TimeStamps && !streamItem.Searching_TimeStamp_Start)
Stream_Count--;
}
else
@@ -2309,7 +2315,12 @@ void File_Mk::Segment_Cluster_BlockGroup_Block()
}
}
- Element_Show(); //For debug
+ Element_Show();
+
+#if MEDIAINFO_TRACE
+ if (is_simple_block)
+ Element_Children_IfNoErrors();
+#endif // MEDIAINFO_TRACE
}
//---------------------------------------------------------------------------
@@ -3176,9 +3187,10 @@ void File_Mk::Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_Content
FILLING_BEGIN();
if (Segment_Info_Count>1)
return; //First element has the priority
- Stream[TrackNumber].ContentCompSettings_Buffer=new int8u[(size_t)Element_Size];
- std::memcpy(Stream[TrackNumber].ContentCompSettings_Buffer, Buffer+Buffer_Offset, (size_t)Element_Size);
- Stream[TrackNumber].ContentCompSettings_Buffer_Size=(size_t)Element_Size;
+ stream& streamItem = Stream[TrackNumber];
+ streamItem.ContentCompSettings_Buffer=new int8u[(size_t)Element_Size];
+ std::memcpy(streamItem.ContentCompSettings_Buffer, Buffer+Buffer_Offset, (size_t)Element_Size);
+ streamItem.ContentCompSettings_Buffer_Size=(size_t)Element_Size;
FILLING_END();
}
@@ -3201,7 +3213,6 @@ void File_Mk::Segment_Tracks_TrackEntry_CodecPrivate()
Skip_XX(Element_Size, "Data (not parsed)");
return; //First element has the priority
}
-
if (TrackNumber==(int64u)-1 || TrackType==(int64u)-1 || Retrieve(Stream[TrackNumber].StreamKind, Stream[TrackNumber].StreamPos, "CodecID").empty())
{
//Codec not already known, saving CodecPrivate
@@ -3220,11 +3231,12 @@ void File_Mk::Segment_Tracks_TrackEntry_CodecPrivate()
void File_Mk::Segment_Tracks_TrackEntry_CodecPrivate__Parse()
{
//Creating the parser
- if (Stream[TrackNumber].Parser==NULL)
+ stream& streamItem = Stream[TrackNumber];
+ if (streamItem.Parser==NULL)
{
- if (Stream[TrackNumber].StreamKind==Stream_Audio && Retrieve(Stream_Audio, Stream[TrackNumber].StreamPos, Audio_CodecID)==__T("A_MS/ACM"))
+ if (streamItem.StreamKind==Stream_Audio && Retrieve(Stream_Audio, streamItem.StreamPos, Audio_CodecID)==__T("A_MS/ACM"))
Segment_Tracks_TrackEntry_CodecPrivate_auds();
- else if (Stream[TrackNumber].StreamKind==Stream_Video && Retrieve(Stream_Video, Stream[TrackNumber].StreamPos, Video_CodecID)==__T("V_MS/VFW/FOURCC"))
+ else if (streamItem.StreamKind==Stream_Video && Retrieve(Stream_Video, streamItem.StreamPos, Video_CodecID)==__T("V_MS/VFW/FOURCC"))
Segment_Tracks_TrackEntry_CodecPrivate_vids();
else if (Element_Size>0)
Skip_XX(Element_Size, "Unknown");
@@ -3256,12 +3268,12 @@ void File_Mk::Segment_Tracks_TrackEntry_CodecPrivate__Parse()
#endif // MEDIAINFO_DEMUX
//Parsing
- Open_Buffer_Continue(Stream[TrackNumber].Parser);
+ Open_Buffer_Continue(streamItem.Parser);
//Filling
- if (Stream[TrackNumber].Parser->Status[IsFinished]) //Can be finnished here...
+ if (streamItem.Parser->Status[IsFinished]) //Can be finnished here...
{
- Stream[TrackNumber].Searching_Payload=false;
+ streamItem.Searching_Payload=false;
Stream_Count--;
}
@@ -3442,17 +3454,18 @@ void File_Mk::Segment_Tracks_TrackEntry_CodecPrivate_vids()
if (Data_Remain())
{
Element_Begin1("Private data");
- if (Stream[TrackNumber].Parser)
+ stream& streamItem = Stream[TrackNumber];
+ if (streamItem.Parser)
{
#if defined(MEDIAINFO_FFV1_YES)
if (Compression==0x46465631) //FFV1
- Open_Buffer_OutOfBand(Stream[TrackNumber].Parser);
+ Open_Buffer_OutOfBand(streamItem.Parser);
#endif
#if defined(MEDIAINFO_FFV1_YES)
if (Compression==0x46465648) //FFVH
{
- ((File_HuffYuv*)Stream[TrackNumber].Parser)->IsOutOfBandData=true; //TODO: implement ISOutOfBandData in a generic maner
- Open_Buffer_Continue(Stream[TrackNumber].Parser);
+ ((File_HuffYuv*)streamItem.Parser)->IsOutOfBandData=true; //TODO: implement ISOutOfBandData in a generic maner
+ Open_Buffer_Continue(streamItem.Parser);
Element_Offset=Element_Size;
}
#endif
@@ -3597,15 +3610,16 @@ void File_Mk::Segment_Tracks_TrackEntry_TrackNumber()
if (Segment_Info_Count>1)
return; //First element has the priority
Fill(StreamKind_Last, StreamPos_Last, General_ID, TrackNumber);
+ stream& streamItem = Stream[TrackNumber];
if (StreamKind_Last!=Stream_Max)
{
- Stream[TrackNumber].StreamKind=StreamKind_Last;
- Stream[TrackNumber].StreamPos=StreamPos_Last;
+ streamItem.StreamKind=StreamKind_Last;
+ streamItem.StreamPos=StreamPos_Last;
}
if (TrackVideoDisplayWidth && TrackVideoDisplayHeight)
- Stream[TrackNumber].DisplayAspectRatio=((float)TrackVideoDisplayWidth)/(float)TrackVideoDisplayHeight;
+ streamItem.DisplayAspectRatio=((float)TrackVideoDisplayWidth)/(float)TrackVideoDisplayHeight;
if (AvgBytesPerSec)
- Stream[TrackNumber].AvgBytesPerSec=AvgBytesPerSec;
+ streamItem.AvgBytesPerSec=AvgBytesPerSec;
CodecID_Manage();
CodecPrivate_Manage();
@@ -3657,8 +3671,9 @@ void File_Mk::Segment_Tracks_TrackEntry_TrackType()
if (TrackNumber!=(int64u)-1 && StreamKind_Last!=Stream_Max)
{
- Stream[TrackNumber].StreamKind=StreamKind_Last;
- Stream[TrackNumber].StreamPos=StreamPos_Last;
+ stream& streamItem = Stream[TrackNumber];
+ streamItem.StreamKind=StreamKind_Last;
+ streamItem.StreamPos=StreamPos_Last;
}
CodecID_Manage();
@@ -4264,6 +4279,7 @@ void File_Mk::CodecID_Manage()
CodecID_Fill(CodecID, StreamKind_Last, StreamPos_Last, InfoCodecID_Format_Matroska);
Fill(StreamKind_Last, StreamPos_Last, Fill_Parameter(StreamKind_Last, Generic_Codec), CodecID);
}
+ stream& streamItem = Stream[TrackNumber];
//Creating the parser
#if defined(MEDIAINFO_MPEG4V_YES) || defined(MEDIAINFO_AVC_YES) || defined(MEDIAINFO_HEVC_YES) || defined(MEDIAINFO_VC1_YES) || defined(MEDIAINFO_DIRAC_YES) || defined(MEDIAINFO_MPEGV_YES) || defined(MEDIAINFO_VP8_YES) || defined(MEDIAINFO_OGG_YES) || defined(MEDIAINFO_DTS_YES)
@@ -4273,39 +4289,41 @@ void File_Mk::CodecID_Manage()
#if defined(MEDIAINFO_MPEG4V_YES)
else if (Format==__T("MPEG-4 Visual"))
{
- Stream[TrackNumber].Parser=new File_Mpeg4v;
- ((File_Mpeg4v*)Stream[TrackNumber].Parser)->FrameIsAlwaysComplete=true;
+ streamItem.Parser=new File_Mpeg4v;
+ ((File_Mpeg4v*)streamItem.Parser)->FrameIsAlwaysComplete=true;
}
#endif
#if defined(MEDIAINFO_AVC_YES)
else if (Format==__T("AVC"))
{
- Stream[TrackNumber].Parser=new File_Avc;
- ((File_Avc*)Stream[TrackNumber].Parser)->FrameIsAlwaysComplete=true;
+ File_Avc* parser = new File_Avc;
+ streamItem.Parser= parser;
+ ((File_Avc*)streamItem.Parser)->FrameIsAlwaysComplete=true;
if (InfoCodecID_Format_Type==InfoCodecID_Format_Matroska)
{
- ((File_Avc*)Stream[TrackNumber].Parser)->MustSynchronize=false;
- ((File_Avc*)Stream[TrackNumber].Parser)->MustParse_SPS_PPS=true;
- ((File_Avc*)Stream[TrackNumber].Parser)->SizedBlocks=true;
+ parser->MustSynchronize=false;
+ parser->MustParse_SPS_PPS=true;
+ parser->SizedBlocks=true;
}
}
#endif
#if defined(MEDIAINFO_HEVC_YES)
else if (Format==__T("HEVC"))
{
- Stream[TrackNumber].Parser=new File_Hevc;
- ((File_Hevc*)Stream[TrackNumber].Parser)->FrameIsAlwaysComplete=true;
+ File_Hevc* parser = new File_Hevc;
+ streamItem.Parser = parser;
+ parser->FrameIsAlwaysComplete=true;
if (InfoCodecID_Format_Type==InfoCodecID_Format_Matroska)
{
- ((File_Hevc*)Stream[TrackNumber].Parser)->MustSynchronize=false;
- ((File_Hevc*)Stream[TrackNumber].Parser)->MustParse_VPS_SPS_PPS=true;
- ((File_Hevc*)Stream[TrackNumber].Parser)->MustParse_VPS_SPS_PPS_FromMatroska=true;
- ((File_Hevc*)Stream[TrackNumber].Parser)->SizedBlocks=true;
+ parser->MustSynchronize=false;
+ parser->MustParse_VPS_SPS_PPS=true;
+ parser->MustParse_VPS_SPS_PPS_FromMatroska=true;
+ parser->SizedBlocks=true;
#if MEDIAINFO_DEMUX
if (Config->Demux_Hevc_Transcode_Iso14496_15_to_AnnexB_Get())
{
- Stream[TrackNumber].Parser->Demux_Level=2; //Container
- Stream[TrackNumber].Parser->Demux_UnpacketizeContainer=true;
+ streamItem.Parser->Demux_Level=2; //Container
+ streamItem.Parser->Demux_UnpacketizeContainer=true;
}
#endif //MEDIAINFO_DEMUX
}
@@ -4314,81 +4332,87 @@ void File_Mk::CodecID_Manage()
#if defined(MEDIAINFO_FFV1_YES)
else if (Format==__T("FFV1"))
{
- Stream[TrackNumber].Parser=new File_Ffv1;
- ((File_Ffv1*)Stream[TrackNumber].Parser)->Width=Retrieve(Stream_Video, StreamPos_Last, Video_Width).To_int32u();
- ((File_Ffv1*)Stream[TrackNumber].Parser)->Height=Retrieve(Stream_Video, StreamPos_Last, Video_Height).To_int32u();
+ File_Ffv1* parser = new File_Ffv1;
+ streamItem.Parser = parser;
+ parser->Width=Retrieve(Stream_Video, StreamPos_Last, Video_Width).To_int32u();
+ parser->Height=Retrieve(Stream_Video, StreamPos_Last, Video_Height).To_int32u();
}
#endif
#if defined(MEDIAINFO_HUFFYUV_YES)
else if (Format==__T("HuffYUV"))
{
- Stream[TrackNumber].Parser=new File_HuffYuv;
+ streamItem.Parser=new File_HuffYuv;
}
#endif
#if defined(MEDIAINFO_VC1_YES)
else if (Format==__T("VC-1"))
{
- Stream[TrackNumber].Parser=new File_Vc1;
- ((File_Vc1*)Stream[TrackNumber].Parser)->FrameIsAlwaysComplete=true;
+ File_Vc1* parser = new File_Vc1;
+ streamItem.Parser= parser;
+ parser->FrameIsAlwaysComplete=true;
}
#endif
#if defined(MEDIAINFO_DIRAC_YES)
else if (Format==__T("Dirac"))
{
- Stream[TrackNumber].Parser=new File_Dirac;
+ streamItem.Parser=new File_Dirac;
}
#endif
#if defined(MEDIAINFO_MPEGV_YES)
else if (Format==__T("MPEG Video"))
{
- Stream[TrackNumber].Parser=new File_Mpegv;
- ((File_Mpegv*)Stream[TrackNumber].Parser)->FrameIsAlwaysComplete=true;
+ File_Mpegv* parser = new File_Mpegv;
+ streamItem.Parser = parser;
+ parser->FrameIsAlwaysComplete=true;
}
#endif
#if defined(MEDIAINFO_PRORES_YES)
else if (Format==__T("ProRes"))
{
- Stream[TrackNumber].Parser=new File_ProRes;
+ streamItem.Parser=new File_ProRes;
}
#endif
#if defined(MEDIAINFO_VP8_YES)
else if (Format==__T("VP8"))
{
- Stream[TrackNumber].Parser=new File_Vp8;
+ streamItem.Parser=new File_Vp8;
}
#endif
#if defined(MEDIAINFO_OGG_YES)
else if (Format==__T("Theora") || Format==__T("Vorbis"))
{
- Stream[TrackNumber].Parser=new File_Ogg;
- Stream[TrackNumber].Parser->MustSynchronize=false;
- ((File_Ogg*)Stream[TrackNumber].Parser)->XiphLacing=true;
+ File_Ogg* parser = new File_Ogg;
+ streamItem.Parser = parser;
+ streamItem.Parser->MustSynchronize=false;
+ parser->XiphLacing=true;
}
#endif
#if defined(MEDIAINFO_RM_YES)
else if (CodecID.find(__T("V_REAL/"))==0)
{
- Stream[TrackNumber].Parser=new File_Rm;
- ((File_Rm*)Stream[TrackNumber].Parser)->FromMKV_StreamType=Stream_Video;
+ File_Rm* parser = new File_Rm;
+ streamItem.Parser = parser;
+ parser->FromMKV_StreamType=Stream_Video;
}
#endif
#if defined(MEDIAINFO_AC3_YES)
else if (Format==__T("AC-3") || Format==__T("E-AC-3") || Format==__T("TrueHD"))
{
- Stream[TrackNumber].Parser=new File_Ac3;
+ streamItem.Parser=new File_Ac3;
}
#endif
#if defined(MEDIAINFO_DTS_YES)
else if (Format==__T("DTS"))
{
- Stream[TrackNumber].Parser=new File_Dts;
+ streamItem.Parser=new File_Dts;
}
#endif
#if defined(MEDIAINFO_AAC_YES)
else if (CodecID==(__T("A_AAC")))
{
- Stream[TrackNumber].Parser=new File_Aac;
- ((File_Aac*)Stream[TrackNumber].Parser)->Mode=File_Aac::Mode_AudioSpecificConfig;
+ File_Aac* parser = new File_Aac;
+ streamItem.Parser = parser;
+ parser->Mode=File_Aac::Mode_AudioSpecificConfig;
}
#endif
#if defined(MEDIAINFO_AAC_YES)
@@ -4418,65 +4442,70 @@ void File_Mk::CodecID_Manage()
Fill(Stream_Audio, StreamPos_Last, Audio_Format_Settings_PS, PS?"Yes":"No");
int64s sampling_frequency=Retrieve(Stream_Audio, StreamPos_Last, Audio_SamplingRate).To_int64s();
- Stream[TrackNumber].Parser=new File_Aac;
- ((File_Aac*)Stream[TrackNumber].Parser)->Mode=File_Aac::Mode_AudioSpecificConfig;
- ((File_Aac*)Stream[TrackNumber].Parser)->AudioSpecificConfig_OutOfBand(sampling_frequency, audioObjectType, SBR==1?true:false, PS==1?true:false, SBR==1?true:false, PS==1?true:false);
+ File_Aac* parser = new File_Aac;
+ streamItem.Parser = parser;
+ parser->Mode=File_Aac::Mode_AudioSpecificConfig;
+ parser->AudioSpecificConfig_OutOfBand(sampling_frequency, audioObjectType, SBR==1?true:false, PS==1?true:false, SBR==1?true:false, PS==1?true:false);
}
#endif
#if defined(MEDIAINFO_AAC_YES)
else if (Format==(__T("AAC")))
{
- Stream[TrackNumber].Parser=new File_Aac;
- ((File_Aac*)Stream[TrackNumber].Parser)->Mode=File_Aac::Mode_ADTS;
+ File_Aac* parser = new File_Aac;
+ streamItem.Parser = parser;
+ parser->Mode=File_Aac::Mode_ADTS;
}
#endif
#if defined(MEDIAINFO_MPEGA_YES)
else if (Format==__T("MPEG Audio"))
{
- Stream[TrackNumber].Parser=new File_Mpega;
+ streamItem.Parser=new File_Mpega;
}
#endif
#if defined(MEDIAINFO_FLAC_YES)
else if (Format==__T("Flac"))
{
- Stream[TrackNumber].Parser=new File_Flac;
+ streamItem.Parser=new File_Flac;
}
#endif
#if defined(MEDIAINFO_OPUS_YES)
else if (CodecID.find(__T("A_OPUS"))==0) //http://wiki.xiph.org/MatroskaOpus
{
- Stream[TrackNumber].Parser=new File_Opus;
+ streamItem.Parser=new File_Opus;
}
#endif
#if defined(MEDIAINFO_WVPK_YES)
else if (Format==__T("WavPack"))
{
- Stream[TrackNumber].Parser=new File_Wvpk;
- ((File_Wvpk*)Stream[TrackNumber].Parser)->FromMKV=true;
+ File_Wvpk* parser = new File_Wvpk;
+ streamItem.Parser = parser;
+ parser->FromMKV=true;
}
#endif
#if defined(MEDIAINFO_TTA_YES)
else if (Format==__T("TTA"))
{
- //Stream[TrackNumber].Parser=new File_Tta; //Parser is not needed, because header is useless and dropped (the parser analyses only the header)
+ //streamItem.Parser=new File_Tta; //Parser is not needed, because header is useless and dropped (the parser analyses only the header)
}
#endif
#if defined(MEDIAINFO_PCM_YES)
else if (Format==__T("PCM"))
{
- Stream[TrackNumber].Parser=new File_Pcm;
- ((File_Pcm*)Stream[TrackNumber].Parser)->Codec=CodecID;
+ File_Pcm* parser = new File_Pcm;
+ streamItem.Parser = parser;
+ parser->Codec=CodecID;
}
#endif
#if defined(MEDIAINFO_RM_YES)
else if (CodecID.find(__T("A_REAL/"))==0)
{
- Stream[TrackNumber].Parser=new File_Rm;
- ((File_Rm*)Stream[TrackNumber].Parser)->FromMKV_StreamType=Stream_Audio;
+ File_Rm* parser = new File_Rm;
+ streamItem.Parser = parser;
+ parser->FromMKV_StreamType=Stream_Audio;
}
#endif
Element_Code=TrackNumber;
- Open_Buffer_Init(Stream[TrackNumber].Parser);
+ Open_Buffer_Init(streamItem.Parser);
CodecID.clear();
}
diff --git a/Source/MediaInfo/Multiple/File_Mpeg4.cpp b/Source/MediaInfo/Multiple/File_Mpeg4.cpp
index 80d59ff..6dbdbfd 100644
--- a/Source/MediaInfo/Multiple/File_Mpeg4.cpp
+++ b/Source/MediaInfo/Multiple/File_Mpeg4.cpp
@@ -2647,9 +2647,9 @@ void File_Mpeg4::IsParsing_mdat_Set()
File_Mpeg4_TimeCode* Parser = new File_Mpeg4_TimeCode;
Open_Buffer_Init(Parser);
- ((File_Mpeg4_TimeCode*)Parser)->NumberOfFrames = tc->NumberOfFrames;
- ((File_Mpeg4_TimeCode*)Parser)->DropFrame = tc->DropFrame;
- ((File_Mpeg4_TimeCode*)Parser)->NegativeTimes = tc->NegativeTimes;
+ Parser->NumberOfFrames = tc->NumberOfFrames;
+ Parser->DropFrame = tc->DropFrame;
+ Parser->NegativeTimes = tc->NegativeTimes;
int32u TimeCode_Value = TimeCode((TimeCode_String[ 0]-'0') * 10 + (TimeCode_String[ 1]-'0'),
(TimeCode_String[ 3]-'0') * 10 + (TimeCode_String[ 4]-'0'),
diff --git a/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp b/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp
index 54178ad..1e0e5a2 100644
--- a/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp
+++ b/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp
@@ -4004,9 +4004,9 @@ void File_Mpeg4::moov_trak_mdia_minf_stbl_stsd_tmcd()
Open_Buffer_Init(Parser);
mdat_Pos_ToParseInPriority_StreamIDs.push_back(moov_trak_tkhd_TrackID);
Streams[moov_trak_tkhd_TrackID].IsPriorityStream=true;
- ((File_Mpeg4_TimeCode*)Parser)->NumberOfFrames=NumberOfFrames; //tc->FrameDuration?(((float64)tc->TimeScale)/tc->FrameDuration):0;
- ((File_Mpeg4_TimeCode*)Parser)->DropFrame=tc->DropFrame;
- ((File_Mpeg4_TimeCode*)Parser)->NegativeTimes=tc->NegativeTimes;
+ Parser->NumberOfFrames=NumberOfFrames; //tc->FrameDuration?(((float64)tc->TimeScale)/tc->FrameDuration):0;
+ Parser->DropFrame=tc->DropFrame;
+ Parser->NegativeTimes=tc->NegativeTimes;
Streams[moov_trak_tkhd_TrackID].Parsers.push_back(Parser);
mdat_MustParse=true; //Data is in MDAT
FILLING_ELSE();
@@ -4372,7 +4372,8 @@ void File_Mpeg4::moov_trak_mdia_minf_stbl_stsd_xxxxSound()
#endif // MEDIAINFO_DEMUX
//Creating the parser
- if ((Channels==1 && (StreamPos_Last%2)==0)
+ #if defined(MEDIAINFO_SMPTEST0337_YES)
+ if ((Channels==1 && (StreamPos_Last%2)==0)
|| (Streams.find(moov_trak_tkhd_TrackID-1)!=Streams.end() && Streams[moov_trak_tkhd_TrackID-1].IsPcmMono))
{
File_ChannelGrouping* Parser=new File_ChannelGrouping;
@@ -4394,7 +4395,7 @@ void File_Mpeg4::moov_trak_mdia_minf_stbl_stsd_xxxxSound()
Streams[moov_trak_tkhd_TrackID].Parsers.push_back(Parser);
}
-
+ #endif // MEDIAINFO_SMPTEST0337_YES
//Specific cases
#if defined(MEDIAINFO_SMPTEST0337_YES)
if (Channels==2 && SampleSize<=32 && SampleRate==48000) //Some SMPTE ST 337 streams are hidden in PCM stream
@@ -5988,7 +5989,9 @@ void File_Mpeg4::moov_trak_mdia_minf_stbl_stsd_xxxx_wave_enda()
((File_Pcm*)Streams[moov_trak_tkhd_TrackID].Parsers[0])->Endianness=Endianness?'L':'B';
if (Streams[moov_trak_tkhd_TrackID].Parsers.size()==2)
{
+#if defined(MEDIAINFO_SMPTEST0337_YES)
((File_ChannelGrouping*)Streams[moov_trak_tkhd_TrackID].Parsers[0])->Endianness=Endianness?'L':'B';
+#endif // MEDIAINFO_SMPTEST0337_YES
((File_Pcm*)Streams[moov_trak_tkhd_TrackID].Parsers[1])->Endianness=Endianness?'L':'B';
}
}
diff --git a/Source/MediaInfo/Multiple/File_MpegTs_Duplicate.cpp b/Source/MediaInfo/Multiple/File_MpegTs_Duplicate.cpp
index 5781899..dcdb09f 100644
--- a/Source/MediaInfo/Multiple/File_MpegTs_Duplicate.cpp
+++ b/Source/MediaInfo/Multiple/File_MpegTs_Duplicate.cpp
@@ -80,16 +80,16 @@ void File_MpegTs::Option_Manage()
Complete_Stream->Streams[0x0000]->ShouldDuplicate=true;
//For each program
- for (complete_stream::transport_stream::programs::iterator Program=Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs.begin(); Program!=Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs.end(); ++Program)
+ const complete_stream::transport_stream& transportItem = Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id];
+ for (complete_stream::transport_stream::programs::const_iterator Program= transportItem.Programs.begin(); Program!= transportItem.Programs.end(); ++Program)
{
//Do we want this program?
bool Wanted=false;
- for (std::map<const String, File__Duplicate_MpegTs*>::iterator Duplicate=Complete_Stream->Duplicates.begin(); Duplicate!=Complete_Stream->Duplicates.end(); ++Duplicate)
+ for (std::map<const String, File__Duplicate_MpegTs*>::const_iterator Duplicate=Complete_Stream->Duplicates.begin(); Duplicate!=Complete_Stream->Duplicates.end(); ++Duplicate)
{
- if (Duplicate->second->Wanted_program_numbers.find(Program->first)!=Duplicate->second->Wanted_program_numbers.end())
- Wanted=true;
- if (Duplicate->second->Wanted_program_map_PIDs.find(Program->second.pid)!=Duplicate->second->Wanted_program_map_PIDs.end())
- Wanted=true;
+ Wanted = Duplicate->second->Is_Wanted(Program->first, Program->second.pid);
+ if (Wanted)
+ break;
}
//Enabling it if wanted
diff --git a/Source/MediaInfo/Multiple/File_Mpeg_Descriptors.cpp b/Source/MediaInfo/Multiple/File_Mpeg_Descriptors.cpp
index a0431d3..a771ccd 100644
--- a/Source/MediaInfo/Multiple/File_Mpeg_Descriptors.cpp
+++ b/Source/MediaInfo/Multiple/File_Mpeg_Descriptors.cpp
@@ -1635,13 +1635,14 @@ void File_Mpeg_Descriptors::Descriptor_05()
{
//Per PES
Complete_Stream->Streams[elementary_PID]->registration_format_identifier=format_identifier;
- Complete_Stream->Streams[elementary_PID]->Infos["format_identifier"]=Ztring().From_CC4(format_identifier);
- if (Complete_Stream->Streams[elementary_PID]->Infos["format_identifier"].size()!=4)
+ Ztring& infosItem = Complete_Stream->Streams[elementary_PID]->Infos["format_identifier"];
+ infosItem =Ztring().From_CC4(format_identifier);
+ if (infosItem.size()!=4)
{
Ztring Temp; Temp.From_Number(format_identifier, 16);
if (Temp.size()<8)
Temp.insert(0, 8-Temp.size(), __T('0'));
- Complete_Stream->Streams[elementary_PID]->Infos["format_identifier"]=__T("0x")+Temp;
+ infosItem =__T("0x")+Temp;
}
Complete_Stream->Streams[elementary_PID]->Infos_Option["format_identifier"]=__T("N NT");
if (format_identifier==Elements::KLVA)
@@ -1906,7 +1907,8 @@ void File_Mpeg_Descriptors::Descriptor_1D()
Get_B1 (IOD_label, "IOD_label");
#ifdef MEDIAINFO_MPEG4_YES
- if (Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].IOD_ESs.find(IOD_label)==Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].IOD_ESs.end())
+ complete_stream::transport_stream & transportStream = Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id];
+ if (transportStream.IOD_ESs.find(IOD_label)== transportStream.IOD_ESs.end())
{
File_Mpeg4_Descriptors MI;
MI.Parser_DoNotFreeIt=true;
@@ -1914,8 +1916,8 @@ void File_Mpeg_Descriptors::Descriptor_1D()
Open_Buffer_Init(&MI);
Open_Buffer_Continue(&MI);
Finish(&MI);
- Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].IOD_ESs[MI.ES_ID].Parser=MI.Parser;
- Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].IOD_ESs[MI.ES_ID].SLConfig=MI.SLConfig;
+ transportStream.IOD_ESs[MI.ES_ID].Parser=MI.Parser;
+ transportStream.IOD_ESs[MI.ES_ID].SLConfig=MI.SLConfig;
}
#else
Skip_XX(Element_Size-Element_Offset, "MPEG-4 Descriptor");
@@ -2080,8 +2082,9 @@ void File_Mpeg_Descriptors::Descriptor_43()
BS_End();
FILLING_BEGIN();
- Complete_Stream->Transport_Streams[transport_stream_id].Infos["Frequency"]=Frequency_DVB__BCD(frequency);
- Complete_Stream->Transport_Streams[transport_stream_id].Infos["OrbitalPosition"]=OrbitalPosition_DVB__BCD(orbital_position)+(west_east_flag?__T('E'):__T('W'));
+ complete_stream::transport_stream& transportStream = Complete_Stream->Transport_Streams[transport_stream_id];
+ transportStream.Infos["Frequency"]=Frequency_DVB__BCD(frequency);
+ transportStream.Infos["OrbitalPosition"]=OrbitalPosition_DVB__BCD(orbital_position)+(west_east_flag?__T('E'):__T('W'));
FILLING_END();
}
@@ -2101,9 +2104,10 @@ void File_Mpeg_Descriptors::Descriptor_48()
FILLING_BEGIN();
if (program_number_IsValid)
{
- Complete_Stream->Transport_Streams[table_id_extension].Programs[program_number].Infos["ServiceName"]=service_name;
- Complete_Stream->Transport_Streams[table_id_extension].Programs[program_number].Infos["ServiceProvider"]=service_provider_name;
- Complete_Stream->Transport_Streams[table_id_extension].Programs[program_number].Infos["ServiceType"]=Mpeg_Descriptors_dvb_service_type(service_type);
+ complete_stream::transport_stream::program& progItem = Complete_Stream->Transport_Streams[table_id_extension].Programs[program_number];
+ progItem.Infos["ServiceName"]=service_name;
+ progItem.Infos["ServiceProvider"]=service_provider_name;
+ progItem.Infos["ServiceType"]=Mpeg_Descriptors_dvb_service_type(service_type);
}
FILLING_END();
}
@@ -2141,9 +2145,11 @@ void File_Mpeg_Descriptors::Descriptor_4D()
{
Ztring ISO_639_2; ISO_639_2.From_CC3(ISO_639_language_code);
const Ztring& ISO_639_1=MediaInfoLib::Config.Iso639_1_Get(ISO_639_2);
- Complete_Stream->Transport_Streams[transport_stream_id].Programs[table_id_extension].DVB_EPG_Blocks[table_id].Events[event_id].short_event.event_name=(ISO_639_1.empty()?ISO_639_2:ISO_639_1)+__T(':')+event_name;
- Complete_Stream->Transport_Streams[transport_stream_id].Programs[table_id_extension].DVB_EPG_Blocks[table_id].Events[event_id].short_event.text=(ISO_639_1.empty()?ISO_639_2:ISO_639_1)+__T(':')+text;
- Complete_Stream->Transport_Streams[transport_stream_id].Programs[table_id_extension].DVB_EPG_Blocks_IsUpdated=true;
+ complete_stream::transport_stream::program& progItem = Complete_Stream->Transport_Streams[transport_stream_id].Programs[table_id_extension];
+ complete_stream::transport_stream::program::dvb_epg_block::event& eventItem = progItem.DVB_EPG_Blocks[table_id].Events[event_id];
+ eventItem.short_event.event_name=(ISO_639_1.empty()?ISO_639_2:ISO_639_1)+__T(':')+event_name;
+ eventItem.short_event.text=(ISO_639_1.empty()?ISO_639_2:ISO_639_1)+__T(':')+text;
+ progItem.DVB_EPG_Blocks_IsUpdated=true;
Complete_Stream->Programs_IsUpdated=true;
}
}
@@ -2205,8 +2211,9 @@ void File_Mpeg_Descriptors::Descriptor_54()
FILLING_BEGIN();
if (event_id_IsValid)
{
- Complete_Stream->Transport_Streams[transport_stream_id].Programs[table_id_extension].DVB_EPG_Blocks[table_id].Events[event_id].content=Ztring().From_UTF8(Mpeg_Descriptors_content_nibble_level_2(content_nibble_level_1, content_nibble_level_2))+__T(", ");
- Complete_Stream->Transport_Streams[transport_stream_id].Programs[table_id_extension].DVB_EPG_Blocks_IsUpdated=true;
+ complete_stream::transport_stream::program& progItem = Complete_Stream->Transport_Streams[transport_stream_id].Programs[table_id_extension];
+ progItem.DVB_EPG_Blocks[table_id].Events[event_id].content=Ztring().From_UTF8(Mpeg_Descriptors_content_nibble_level_2(content_nibble_level_1, content_nibble_level_2))+__T(", ");
+ progItem.DVB_EPG_Blocks_IsUpdated=true;
Complete_Stream->Programs_IsUpdated=true;
}
FILLING_END();
@@ -2215,10 +2222,12 @@ void File_Mpeg_Descriptors::Descriptor_54()
FILLING_BEGIN();
if (event_id_IsValid)
{
- if (!Complete_Stream->Transport_Streams[transport_stream_id].Programs[table_id_extension].DVB_EPG_Blocks[table_id].Events[event_id].content.empty())
+ complete_stream::transport_stream::program& progItem = Complete_Stream->Transport_Streams[transport_stream_id].Programs[table_id_extension];
+ complete_stream::transport_stream::program::dvb_epg_block::event& eventItem = progItem.DVB_EPG_Blocks[table_id].Events[event_id];
+ if (!eventItem.content.empty())
{
- Complete_Stream->Transport_Streams[transport_stream_id].Programs[table_id_extension].DVB_EPG_Blocks[table_id].Events[event_id].content.resize(Complete_Stream->Transport_Streams[transport_stream_id].Programs[table_id_extension].DVB_EPG_Blocks[table_id].Events[event_id].content.size()-2);
- Complete_Stream->Transport_Streams[transport_stream_id].Programs[table_id_extension].DVB_EPG_Blocks_IsUpdated=true;
+ eventItem.content.resize(Complete_Stream->Transport_Streams[transport_stream_id].Programs[table_id_extension].DVB_EPG_Blocks[table_id].Events[event_id].content.size()-2);
+ progItem.DVB_EPG_Blocks_IsUpdated=true;
Complete_Stream->Programs_IsUpdated=true;
}
}
diff --git a/Source/MediaInfo/Multiple/File_Mpeg_Descriptors.h b/Source/MediaInfo/Multiple/File_Mpeg_Descriptors.h
index cc05099..f3c41b8 100644
--- a/Source/MediaInfo/Multiple/File_Mpeg_Descriptors.h
+++ b/Source/MediaInfo/Multiple/File_Mpeg_Descriptors.h
@@ -605,7 +605,7 @@ struct complete_stream
std::vector<File__Duplicate_MpegTs*> Duplicates_Speed;
std::vector<std::vector<File__Duplicate_MpegTs*> > Duplicates_Speed_FromPID;
std::map<const String, File__Duplicate_MpegTs*> Duplicates;
- bool File__Duplicate_Get_From_PID (int16u pid)
+ bool File__Duplicate_Get_From_PID (int16u pid) const
{
if (Duplicates_Speed_FromPID.empty())
return false;
diff --git a/Source/MediaInfo/Multiple/File_Mpeg_Psi.cpp b/Source/MediaInfo/Multiple/File_Mpeg_Psi.cpp
index 98720f7..47eeb79 100644
--- a/Source/MediaInfo/Multiple/File_Mpeg_Psi.cpp
+++ b/Source/MediaInfo/Multiple/File_Mpeg_Psi.cpp
@@ -1111,10 +1111,10 @@ void File_Mpeg_Psi::Table_00()
Complete_Stream->transport_stream_id=table_id_extension;
Complete_Stream->transport_stream_id_IsValid=true;
}
-
- if (Complete_Stream->Transport_Streams[table_id_extension].Programs_NotParsedCount==(size_t)-1)
- Complete_Stream->Transport_Streams[table_id_extension].Programs_NotParsedCount=0;
- Complete_Stream->Transport_Streams[table_id_extension].programs_List.clear();
+ complete_stream::transport_stream& transportStream = Complete_Stream->Transport_Streams[table_id_extension];
+ if (transportStream.Programs_NotParsedCount==(size_t)-1)
+ transportStream.Programs_NotParsedCount=0;
+ transportStream.programs_List.clear();
//Saving previous status
std::map<int16u, complete_stream::transport_stream::program> program_numbers_Previous=Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs;
@@ -1186,14 +1186,16 @@ void File_Mpeg_Psi::Table_01()
void File_Mpeg_Psi::Table_02()
{
//Informing PSI is parsed
- if (!Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[table_id_extension].IsParsed && Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs_NotParsedCount)
+ complete_stream::transport_stream& transportStream = Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id];
+ complete_stream::transport_stream::program& progItem = transportStream.Programs[table_id_extension];
+ if (!progItem.IsParsed && transportStream.Programs_NotParsedCount)
{
- Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs_NotParsedCount--;
- Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[table_id_extension].IsParsed=true;
+ transportStream.Programs_NotParsedCount--;
+ progItem.IsParsed=true;
}
//Saving previous status
- std::vector<int16u> elementary_PIDs_Previous=Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[table_id_extension].elementary_PIDs;
+ std::vector<int16u> elementary_PIDs_Previous= progItem.elementary_PIDs;
//Parsing
int16u PCR_PID;
@@ -1269,9 +1271,10 @@ void File_Mpeg_Psi::Table_02()
IsAlreadyPresent=true;
if (!IsAlreadyPresent)
{
- Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[program_number].elementary_PIDs.push_back(elementary_PID);
+ complete_stream::transport_stream::program& progItem = Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[program_number];
+ progItem.elementary_PIDs.push_back(elementary_PID);
Complete_Stream->Streams[elementary_PID]->program_numbers.push_back(program_number);
- Complete_Stream->Streams[elementary_PID]->registration_format_identifier=Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[program_number].registration_format_identifier;
+ Complete_Stream->Streams[elementary_PID]->registration_format_identifier= progItem.registration_format_identifier;
}
if (Complete_Stream->Streams[elementary_PID]->Kind!=complete_stream::stream::pes)
{
@@ -1409,14 +1412,14 @@ void File_Mpeg_Psi::Table_02()
}
#endif //MEDIAINFO_MPEGTS_ALLSTREAMS_YES
}
-
+ complete_stream::transport_stream::program& progItem = Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[program_number];
if (Buffer_Offset>=4)
{
- Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[program_number].ExtraInfos_Content["pointer_field"].From_Number(Buffer_Offset-4);
- Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[program_number].ExtraInfos_Option["pointer_field"]=__T("N NT");
+ progItem.ExtraInfos_Content["pointer_field"].From_Number(Buffer_Offset-4);
+ progItem.ExtraInfos_Option["pointer_field"]=__T("N NT");
}
- Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[program_number].ExtraInfos_Content["section_length"].From_Number(Element_Size+4);
- Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[program_number].ExtraInfos_Option["section_length"]=__T("N NT");
+ progItem.ExtraInfos_Content["section_length"].From_Number(Element_Size+4);
+ progItem.ExtraInfos_Option["section_length"]=__T("N NT");
FILLING_END();
}
@@ -1529,8 +1532,9 @@ void File_Mpeg_Psi::Table_46()
void File_Mpeg_Psi::Table_4E()
{
//Clearing
- Complete_Stream->Transport_Streams[transport_stream_id].Programs[table_id_extension].DVB_EPG_Blocks[table_id].Events.clear();
- Complete_Stream->Transport_Streams[transport_stream_id].Programs[table_id_extension].DVB_EPG_Blocks_IsUpdated=true;
+ complete_stream::transport_stream::program& progItem = Complete_Stream->Transport_Streams[transport_stream_id].Programs[table_id_extension];
+ progItem.DVB_EPG_Blocks[table_id].Events.clear();
+ progItem.DVB_EPG_Blocks_IsUpdated=true;
Complete_Stream->Programs_IsUpdated=true;
//Parsing
@@ -1569,10 +1573,12 @@ void File_Mpeg_Psi::Table_4E()
Element_End1(Ztring::ToZtring_From_CC2(event_id));
FILLING_BEGIN();
- Complete_Stream->Transport_Streams[transport_stream_id].Programs[table_id_extension].DVB_EPG_Blocks[table_id].Events[event_id].start_time=__T("UTC ")+Date_MJD(date)+__T(" ")+Time_BCD(time);
- Complete_Stream->Transport_Streams[transport_stream_id].Programs[table_id_extension].DVB_EPG_Blocks[table_id].Events[event_id].duration=Time_BCD(duration);
+ complete_stream::transport_stream::program& progItem = Complete_Stream->Transport_Streams[transport_stream_id].Programs[table_id_extension];
+ complete_stream::transport_stream::program::dvb_epg_block::event& eventItem = progItem.DVB_EPG_Blocks[table_id].Events[event_id];
+ eventItem.start_time=__T("UTC ")+Date_MJD(date)+__T(" ")+Time_BCD(time);
+ eventItem.duration=Time_BCD(duration);
if (running_status)
- Complete_Stream->Transport_Streams[transport_stream_id].Programs[table_id_extension].DVB_EPG_Blocks[table_id].Events[event_id].running_status=Mpeg_Psi_running_status[running_status];
+ eventItem.running_status=Mpeg_Psi_running_status[running_status];
FILLING_END();
}
}
@@ -2491,9 +2497,10 @@ void File_Mpeg_Psi::program_number_Update()
void File_Mpeg_Psi::program_number_Remove()
{
//Removing this program_number from the list of program_numbers for each elementary_PID
- for (size_t Pos=0; Pos<Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[program_number].elementary_PIDs.size(); Pos++)
+ complete_stream::transport_stream::program& progItem = Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[program_number];
+ for (size_t Pos=0; Pos<progItem.elementary_PIDs.size(); Pos++)
{
- int16u elementary_PID_Temp=Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[program_number].elementary_PIDs[Pos];
+ const int16u elementary_PID_Temp= progItem.elementary_PIDs[Pos];
//Removing this program_number from the list of program_numbers for this elementary_PID
for (size_t Pos=0; Pos<Complete_Stream->Streams[elementary_PID_Temp]->program_numbers.size(); Pos++)
@@ -2524,13 +2531,13 @@ void File_Mpeg_Psi::program_number_Remove()
}
//Removing program_number
- size_t StreamPos=Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[program_number].StreamPos;
+ size_t StreamPos= progItem.StreamPos;
if (StreamPos!=(size_t)-1)
{
Complete_Stream->StreamPos_ToRemove[Stream_Menu].push_back(StreamPos);
- Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[program_number].StreamPos=(size_t)-1;
+ progItem.StreamPos=(size_t)-1;
}
- int16u program_number_pid=Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[program_number].pid;
+ const int16u program_number_pid= progItem.pid;
if (program_number_pid)
{
for (size_t Pos=0; Pos<Complete_Stream->Streams[program_number_pid]->program_numbers.size(); Pos++)
@@ -2566,16 +2573,17 @@ void File_Mpeg_Psi::elementary_PID_Update(int16u PCR_PID)
if (Complete_Stream->Streams_NotParsedCount==(size_t)-1)
Complete_Stream->Streams_NotParsedCount=0;
Complete_Stream->Streams_NotParsedCount++;
- if (stream_type==0x86 && Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[table_id_extension].registration_format_identifier==Elements::CUEI)
+ complete_stream::transport_stream::program& progItem = Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[table_id_extension];
+ if (stream_type==0x86 && progItem.registration_format_identifier==Elements::CUEI)
{
- Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[table_id_extension].HasNotDisplayableStreams=true;
+ progItem.HasNotDisplayableStreams=true;
Complete_Stream->Streams[elementary_PID]->Kind=complete_stream::stream::psi;
Complete_Stream->Streams[elementary_PID]->Table_IDs.resize(0x100);
Complete_Stream->Streams[elementary_PID]->Table_IDs[0xFC]=new complete_stream::stream::table_id; //Splice
- if (Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[table_id_extension].Scte35==NULL)
+ if (progItem.Scte35==NULL)
{
- Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[table_id_extension].Scte35=new complete_stream::transport_stream::program::scte35;
- Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[table_id_extension].Scte35->pid=elementary_PID;
+ progItem.Scte35=new complete_stream::transport_stream::program::scte35;
+ progItem.Scte35->pid=elementary_PID;
}
#if MEDIAINFO_TRACE
Complete_Stream->Streams[elementary_PID]->Element_Info1="PSI";
@@ -2609,9 +2617,10 @@ void File_Mpeg_Psi::elementary_PID_Update(int16u PCR_PID)
IsAlreadyPresent=true;
if (!IsAlreadyPresent)
{
- Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[program_number].elementary_PIDs.push_back(elementary_PID);
+ complete_stream::transport_stream::program& progItem = Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[program_number];
+ progItem.elementary_PIDs.push_back(elementary_PID);
Complete_Stream->Streams[elementary_PID]->program_numbers.push_back(program_number);
- if (ForceStreamDisplay || (Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[program_number].registration_format_identifier==Elements::HDMV && Complete_Stream->Streams[elementary_PID]->stream_type==0x90)) //Testing if forcing display of all streams or if it is a PGS from Blu-ray
+ if (ForceStreamDisplay || (progItem.registration_format_identifier==Elements::HDMV && Complete_Stream->Streams[elementary_PID]->stream_type==0x90)) //Testing if forcing display of all streams or if it is a PGS from Blu-ray
Complete_Stream->PES_PIDs.insert(elementary_PID); //Adding it for sure
}
}
@@ -2620,9 +2629,10 @@ void File_Mpeg_Psi::elementary_PID_Update(int16u PCR_PID)
void File_Mpeg_Psi::elementary_PID_Remove()
{
//Removing this elementary_PID from the list of elementary_PIDs for this program_number
- for (size_t Pos=0; Pos<Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[program_number].elementary_PIDs.size(); Pos++)
- if (Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[program_number].elementary_PIDs[Pos]==elementary_PID)
- Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[program_number].elementary_PIDs.erase(Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[program_number].elementary_PIDs.begin()+Pos);
+ complete_stream::transport_stream::program& progItem = Complete_Stream->Transport_Streams[Complete_Stream->transport_stream_id].Programs[program_number];
+ for (size_t Pos=0; Pos<progItem.elementary_PIDs.size(); Pos++)
+ if (progItem.elementary_PIDs[Pos]==elementary_PID)
+ progItem.elementary_PIDs.erase(progItem.elementary_PIDs.begin()+Pos);
//Removing this program_number from the list of program_numbers for this elementary_PID
for (size_t Pos=0; Pos<Complete_Stream->Streams[elementary_PID]->program_numbers.size(); Pos++)
diff --git a/Source/MediaInfo/Multiple/File_Mxf.cpp b/Source/MediaInfo/Multiple/File_Mxf.cpp
index 058e1a8..644a369 100644
--- a/Source/MediaInfo/Multiple/File_Mxf.cpp
+++ b/Source/MediaInfo/Multiple/File_Mxf.cpp
@@ -1035,7 +1035,7 @@ static const char* Mxf_EssenceCompression(const int128u EssenceCompression)
}
//---------------------------------------------------------------------------
-static const char* Mxf_EssenceCompression_Profile(const int128u EssenceCompression)
+static const char* Mxf_EssenceCompression_Profile(const int128u& EssenceCompression)
{
int8u Code2=(int8u)((EssenceCompression.lo&0x00FF000000000000LL)>>48);
int8u Code3=(int8u)((EssenceCompression.lo&0x0000FF0000000000LL)>>40);
@@ -1089,7 +1089,7 @@ static const char* Mxf_EssenceCompression_Profile(const int128u EssenceCompressi
}
}
//---------------------------------------------------------------------------
-static const char* Mxf_EssenceCompression_Version(const int128u EssenceCompression)
+static const char* Mxf_EssenceCompression_Version(const int128u& EssenceCompression)
{
int8u Code2=(int8u)((EssenceCompression.lo&0x00FF000000000000LL)>>48);
int8u Code3=(int8u)((EssenceCompression.lo&0x0000FF0000000000LL)>>40);
@@ -1237,6 +1237,8 @@ static const char* Mxf_ColorPrimaries(const int128u ColorPrimaries)
case 0x01 : return "BT.601 NTSC";
case 0x02 : return "BT.470 System B";
case 0x03 : return "BT.709";
+ case 0x04 : return "BT.2020";
+ case 0x06 : return "P3D65";
default : return "";
}
}
@@ -1254,6 +1256,9 @@ static const char* Mxf_TransferCharacteristic(const int128u TransferCharacterist
case 0x05 : return "BT.1361 extended colour gamut system";
case 0x06 : return "Linear";
case 0x07 : return "SMPTE 428M";
+ case 0x08 : return "xvYCC";
+ case 0x09 : return "BT.2020";
+ case 0x0A : return "SMPTE ST 2084";
default : return "";
}
}
@@ -1267,6 +1272,7 @@ static const char* Mxf_CodingEquations(const int128u CodingEquations)
case 0x01 : return "BT.601";
case 0x02 : return "BT.709";
case 0x03 : return "SMPTE 240M";
+ case 0x06 : return "BT.2020";
default : return "";
}
}
@@ -1319,7 +1325,7 @@ static const char* Mxf_ChannelAssignment_ChannelPositions(const int128u ChannelL
}
//---------------------------------------------------------------------------
-static const char* Mxf_ChannelAssignment_ChannelPositions2(const int128u ChannelLayout, int32u ChannelsCount=(int32u)-1)
+static const char* Mxf_ChannelAssignment_ChannelPositions2(const int128u& ChannelLayout, int32u ChannelsCount=(int32u)-1)
{
//Sound Channel Labeling
if ((ChannelLayout.hi&0xFFFFFFFFFFFFFF00LL)!=0x060E2B3404010100LL && (ChannelLayout.lo&0xFFFFFFFF00000000LL)!=0x0402021000000000LL)
@@ -1366,7 +1372,7 @@ static const char* Mxf_ChannelAssignment_ChannelPositions2(const int128u Channel
}
//---------------------------------------------------------------------------
-static const char* Mxf_ChannelAssignment_ChannelLayout(const int128u ChannelLayout, int32u ChannelsCount=(int32u)-1)
+static const char* Mxf_ChannelAssignment_ChannelLayout(const int128u& ChannelLayout, int32u ChannelsCount=(int32u)-1)
{
//Sound Channel Labeling
if ((ChannelLayout.hi&0xFFFFFFFFFFFFFF00LL)!=0x060E2B3404010100LL && (ChannelLayout.lo&0xFFFFFFFF00000000LL)!=0x0402021000000000LL)
@@ -2890,14 +2896,9 @@ void File_Mxf::Streams_Finish_Essence(int32u EssenceUID, int128u TrackUID)
for (std::map<std::string, Ztring>::iterator Info=Essence->second.Infos.begin(); Info!=Essence->second.Infos.end(); ++Info)
Fill(StreamKind_Last, StreamPos_Last, Info->first.c_str(), Info->second, true);
- if (MxfTimeCodeForDelay.RoundedTimecodeBase && MxfTimeCodeForDelay.StartTimecode!=(int64u)-1)
+ if (MxfTimeCodeForDelay.IsInit())
{
- float64 TimeCode_StartTimecode_Temp=((float64)(MxfTimeCodeForDelay.StartTimecode+Config->File_IgnoreEditsBefore))/MxfTimeCodeForDelay.RoundedTimecodeBase;
- if (MxfTimeCodeForDelay.DropFrame)
- {
- TimeCode_StartTimecode_Temp*=1001;
- TimeCode_StartTimecode_Temp/=1000;
- }
+ const float64 TimeCode_StartTimecode_Temp = MxfTimeCodeForDelay.Get_TimeCode_StartTimecode_Temp(Config->File_IgnoreEditsBefore);
Fill(StreamKind_Last, StreamPos_Last, Fill_Parameter(StreamKind_Last, Generic_Delay), TimeCode_StartTimecode_Temp*1000, 0, true);
Fill(StreamKind_Last, StreamPos_Last, Fill_Parameter(StreamKind_Last, Generic_Delay_Source), "Container");
Fill(StreamKind_Last, StreamPos_Last, Fill_Parameter(StreamKind_Last, Generic_Delay_DropFrame), MxfTimeCodeForDelay.DropFrame?"Yes":"No");
@@ -3084,14 +3085,9 @@ void File_Mxf::Streams_Finish_Essence(int32u EssenceUID, int128u TrackUID)
Stream_Prepare(Stream_Audio);
size_t Pos=Count_Get(Stream_Audio)-1;
(*Parser)->Finish();
- if (MxfTimeCodeForDelay.RoundedTimecodeBase && MxfTimeCodeForDelay.StartTimecode!=(int64u)-1)
+ if (MxfTimeCodeForDelay.IsInit())
{
- float64 TimeCode_StartTimecode_Temp=((float64)(MxfTimeCodeForDelay.StartTimecode+Config->File_IgnoreEditsBefore))/MxfTimeCodeForDelay.RoundedTimecodeBase;
- if (MxfTimeCodeForDelay.DropFrame)
- {
- TimeCode_StartTimecode_Temp*=1001;
- TimeCode_StartTimecode_Temp/=1000;
- }
+ const float64 TimeCode_StartTimecode_Temp = MxfTimeCodeForDelay.Get_TimeCode_StartTimecode_Temp(Config->File_IgnoreEditsBefore);
Fill(Stream_Audio, StreamPos_Last, Fill_Parameter(StreamKind_Last, Generic_Delay), TimeCode_StartTimecode_Temp*1000, 0, true);
Fill(Stream_Audio, StreamPos_Last, Fill_Parameter(StreamKind_Last, Generic_Delay_Source), "Container");
}
@@ -3124,14 +3120,9 @@ void File_Mxf::Streams_Finish_Essence(int32u EssenceUID, int128u TrackUID)
Fill_Flush();
Stream_Prepare(Stream_Text);
(*Parser)->Finish();
- if (MxfTimeCodeForDelay.RoundedTimecodeBase && MxfTimeCodeForDelay.StartTimecode!=(int64u)-1)
+ if (MxfTimeCodeForDelay.IsInit())
{
- float64 TimeCode_StartTimecode_Temp=((float64)(MxfTimeCodeForDelay.StartTimecode+Config->File_IgnoreEditsBefore))/MxfTimeCodeForDelay.RoundedTimecodeBase;
- if (MxfTimeCodeForDelay.DropFrame)
- {
- TimeCode_StartTimecode_Temp*=1001;
- TimeCode_StartTimecode_Temp/=1000;
- }
+ const float64 TimeCode_StartTimecode_Temp= MxfTimeCodeForDelay.Get_TimeCode_StartTimecode_Temp(Config->File_IgnoreEditsBefore);
Fill(Stream_Text, Parser_Text_Pos, Fill_Parameter(StreamKind_Last, Generic_Delay), TimeCode_StartTimecode_Temp*1000, 0, true);
Fill(Stream_Text, Parser_Text_Pos, Fill_Parameter(StreamKind_Last, Generic_Delay_Source), "Container");
}
@@ -3492,7 +3483,7 @@ void File_Mxf::Streams_Finish_Descriptor(const int128u DescriptorUID, const int1
//Special case
if (Info->first=="BitRate" && Retrieve(StreamKind_Last, StreamPos_Last, General_ID).find(__T(" / "))!=string::npos)
{
- if (Retrieve(StreamKind_Last, StreamPos_Last, Fill_Parameter(StreamKind_Last, Generic_BitRate)).empty() || Retrieve(StreamKind_Last, StreamPos_Last, General_ID).find(__T("-"))!=string::npos)
+ if (Retrieve(StreamKind_Last, StreamPos_Last, Fill_Parameter(StreamKind_Last, Generic_BitRate)).empty() || Retrieve(StreamKind_Last, StreamPos_Last, General_ID).find(__T('-'))!=string::npos)
Fill(StreamKind_Last, StreamPos_Last, Fill_Parameter(StreamKind_Last, Generic_BitRate_Encoded), Info->second.To_int64u()*2, 10, true);
else
Fill(StreamKind_Last, StreamPos_Last, Fill_Parameter(StreamKind_Last, Generic_BitRate), Info->second.To_int64u()*2, 10, true);
@@ -3851,7 +3842,7 @@ void File_Mxf::Streams_Finish_Component(const int128u ComponentUID, float64 Edit
FrameCount-=File_IgnoreEditsBefore;
}
Fill(StreamKind_Last, StreamPos_Last, Fill_Parameter(StreamKind_Last, Generic_Duration), FrameCount*1000/EditRate, 0, true);
- size_t ID_SubStreamInfo_Pos=Retrieve(StreamKind_Last, StreamPos_Last, General_ID).find(__T("-"));
+ size_t ID_SubStreamInfo_Pos=Retrieve(StreamKind_Last, StreamPos_Last, General_ID).find(__T('-'));
if (ID_SubStreamInfo_Pos!=string::npos)
{
Ztring ID=Retrieve(StreamKind_Last, StreamPos_Last, General_ID);
@@ -3963,7 +3954,7 @@ void File_Mxf::Streams_Finish_Component_ForAS11(const int128u ComponentUID, floa
int64u TC_Temp=0;
int8u FrameRate_TempI;
bool DropFrame_Temp;
- if (MxfTimeCodeMaterial.RoundedTimecodeBase && MxfTimeCodeMaterial.StartTimecode!=(int64u)-1)
+ if (MxfTimeCodeMaterial.IsInit())
{
TC_Temp=MxfTimeCodeMaterial.StartTimecode;
FrameRate_TempI=(int8u)MxfTimeCodeMaterial.RoundedTimecodeBase;
diff --git a/Source/MediaInfo/Multiple/File_Mxf.h b/Source/MediaInfo/Multiple/File_Mxf.h
index 806fbd7..ffca358 100644
--- a/Source/MediaInfo/Multiple/File_Mxf.h
+++ b/Source/MediaInfo/Multiple/File_Mxf.h
@@ -548,23 +548,35 @@ protected :
//TimeCode
struct mxftimecode
{
- int16u RoundedTimecodeBase;
int64u StartTimecode;
+ int16u RoundedTimecodeBase;
bool DropFrame;
- mxftimecode()
- : RoundedTimecodeBase(0)
- , StartTimecode((int64u)-1)
- , DropFrame(false)
- {
- }
-
- mxftimecode(int16u RoundedTimecodeBase_, int64u StartTimecode_, bool DropFrame_)
+ mxftimecode(int16u RoundedTimecodeBase_ = 0, int64u StartTimecode_ = (int64u)-1, bool DropFrame_ = false)
: RoundedTimecodeBase(RoundedTimecodeBase_)
, StartTimecode(StartTimecode_)
, DropFrame(DropFrame_)
{
}
+ bool IsInit() const
+ {
+ return RoundedTimecodeBase && StartTimecode != (int64u)-1;
+ }
+ float64 Get_TimeCode_StartTimecode_Temp(const int64u& File_IgnoreEditsBefore) const
+ {
+ if (RoundedTimecodeBase)
+ {
+ float64 TimeCode_StartTimecode_Temp = ((float64)(StartTimecode + File_IgnoreEditsBefore)) / RoundedTimecodeBase;
+ if (DropFrame)
+ {
+ TimeCode_StartTimecode_Temp *= 1001;
+ TimeCode_StartTimecode_Temp /= 1000;
+ }
+ return TimeCode_StartTimecode_Temp;
+ }
+ else
+ return 0.0;
+ }
};
// Temp
@@ -1058,6 +1070,7 @@ protected :
CompletionDate=(int64u)-1;
TextlessElementsExist=(int8u)-1;
ProgrammeHasText=(int8u)-1;
+ FpaPass=(int8u)-1;
}
~as11()
diff --git a/Source/MediaInfo/Multiple/File_Riff.h b/Source/MediaInfo/Multiple/File_Riff.h
index b73c543..3f75465 100644
--- a/Source/MediaInfo/Multiple/File_Riff.h
+++ b/Source/MediaInfo/Multiple/File_Riff.h
@@ -117,7 +117,7 @@ private :
};
std::map<int32u, stream> Stream;
int32u Stream_ID;
-
+ void Open_Buffer_Init_All();
struct stream_structure
{
int64u Name;
diff --git a/Source/MediaInfo/Multiple/File_Riff_Elements.cpp b/Source/MediaInfo/Multiple/File_Riff_Elements.cpp
index 4525e62..aa04013 100644
--- a/Source/MediaInfo/Multiple/File_Riff_Elements.cpp
+++ b/Source/MediaInfo/Multiple/File_Riff_Elements.cpp
@@ -722,6 +722,7 @@ void File_Riff::AIFF_COMM()
}
#endif
+ stream& StreamItem = Stream[Stream_ID];
#if defined(MEDIAINFO_PCM_YES)
File_Pcm* Parser=new File_Pcm;
Parser->Codec=Retrieve(Stream_Audio, StreamPos_Last, Audio_CodecID);
@@ -740,9 +741,9 @@ void File_Riff::AIFF_COMM()
#else //MEDIAINFO_DEMUX
Parser->Frame_Count_Valid=(int64u)-1; //Disabling it, waiting for SMPTE ST 337 parser reject
#endif //MEDIAINFO_DEMUX
- Stream[Stream_ID].Parsers.push_back(Parser);
- Stream[Stream_ID].IsPcm=true;
- Stream[Stream_ID].StreamKind=Stream_Audio;
+ StreamItem.Parsers.push_back(Parser);
+ StreamItem.IsPcm=true;
+ StreamItem.StreamKind=Stream_Audio;
#endif
#if MEDIAINFO_DEMUX
BlockAlign=numChannels*sampleSize/8;
@@ -750,8 +751,7 @@ void File_Riff::AIFF_COMM()
#endif //MEDIAINFO_DEMUX
Element_Code=(int64u)-1;
- for (size_t Pos=0; Pos<Stream[Stream_ID].Parsers.size(); Pos++)
- Open_Buffer_Init(Stream[Stream_ID].Parsers[Pos]);
+ Open_Buffer_Init_All();
}
//---------------------------------------------------------------------------
@@ -1148,6 +1148,7 @@ void File_Riff::AVI__hdlr_strl_indx_SuperIndex(int32u Entry_Count, int32u ChunkI
Skip_L4( "Reserved0");
Skip_L4( "Reserved1");
Skip_L4( "Reserved2");
+ stream& StreamItem = Stream[Stream_ID];
for (int32u Pos=0; Pos<Entry_Count; Pos++)
{
int32u Duration;
@@ -1156,7 +1157,7 @@ void File_Riff::AVI__hdlr_strl_indx_SuperIndex(int32u Entry_Count, int32u ChunkI
Skip_L4( "Size"); //Size of index chunk at this offset
Get_L4 (Duration, "Duration"); //time span in stream ticks
Index_Pos[Offset]=ChunkId;
- Stream[Stream_ID].indx_Duration+=Duration;
+ StreamItem.indx_Duration+=Duration;
Element_End0();
}
@@ -1185,7 +1186,8 @@ void File_Riff::AVI__hdlr_strl_strf()
Element_Name("Stream format");
//Parse depending of kind of stream
- switch (Stream[Stream_ID].fccType)
+ stream& StreamItem = Stream[Stream_ID];
+ switch (StreamItem.fccType)
{
case Elements::AVI__hdlr_strl_strh_auds : AVI__hdlr_strl_strf_auds(); break;
case Elements::AVI__hdlr_strl_strh_iavs : AVI__hdlr_strl_strf_iavs(); break;
@@ -1196,8 +1198,8 @@ void File_Riff::AVI__hdlr_strl_strf()
}
//Registering stream
- Stream[Stream_ID].StreamKind=StreamKind_Last;
- Stream[Stream_ID].StreamPos=StreamPos_Last;
+ StreamItem.StreamKind=StreamKind_Last;
+ StreamItem.StreamPos=StreamPos_Last;
}
//---------------------------------------------------------------------------
@@ -1236,7 +1238,8 @@ void File_Riff::AVI__hdlr_strl_strf_auds()
//Filling
Stream_Prepare(Stream_Audio);
- Stream[Stream_ID].Compression=FormatTag;
+ stream& StreamItem = Stream[Stream_ID];
+ StreamItem.Compression=FormatTag;
Ztring Codec; Codec.From_Number(FormatTag, 16);
Codec.MakeUpperCase();
CodecID_Fill(Codec, Stream_Audio, StreamPos_Last, InfoCodecID_Format_Riff);
@@ -1250,7 +1253,7 @@ void File_Riff::AVI__hdlr_strl_strf_auds()
Fill(Stream_Audio, StreamPos_Last, Audio_BitRate, AvgBytesPerSec*8);
if (BitsPerSample)
Fill(Stream_Audio, StreamPos_Last, Audio_BitDepth, BitsPerSample);
- Stream[Stream_ID].AvgBytesPerSec=AvgBytesPerSec; //Saving bitrate for each stream
+ StreamItem.AvgBytesPerSec=AvgBytesPerSec; //Saving bitrate for each stream
if (SamplesPerSec && TimeReference!=(int64u)-1)
{
Fill(Stream_Audio, 0, Audio_Delay, float64_int64s(((float64)TimeReference)*1000/SamplesPerSec));
@@ -1274,7 +1277,7 @@ void File_Riff::AVI__hdlr_strl_strf_auds()
Demux_Level=4; //Intermediate
}
#endif //MEDIAINFO_DEMUX
- Stream[Stream_ID].Parsers.push_back(Parser);
+ StreamItem.Parsers.push_back(Parser);
}
#endif
@@ -1292,7 +1295,7 @@ void File_Riff::AVI__hdlr_strl_strf_auds()
Demux_Level=4; //Intermediate
}
#endif //MEDIAINFO_DEMUX
- Stream[Stream_ID].Parsers.push_back(Parser);
+ StreamItem.Parsers.push_back(Parser);
}
#endif
}
@@ -1306,7 +1309,7 @@ void File_Riff::AVI__hdlr_strl_strf_auds()
File_Mpega* Parser=new File_Mpega;
Parser->CalculateDelay=true;
Parser->ShouldContinueParsing=true;
- Stream[Stream_ID].Parsers.push_back(Parser);
+ StreamItem.Parsers.push_back(Parser);
}
#endif
#if defined(MEDIAINFO_AC3_YES)
@@ -1316,7 +1319,7 @@ void File_Riff::AVI__hdlr_strl_strf_auds()
Parser->Frame_Count_Valid=2;
Parser->CalculateDelay=true;
Parser->ShouldContinueParsing=true;
- Stream[Stream_ID].Parsers.push_back(Parser);
+ StreamItem.Parsers.push_back(Parser);
}
#endif
#if defined(MEDIAINFO_DTS_YES)
@@ -1325,7 +1328,7 @@ void File_Riff::AVI__hdlr_strl_strf_auds()
File_Dts* Parser=new File_Dts;
Parser->Frame_Count_Valid=2;
Parser->ShouldContinueParsing=true;
- Stream[Stream_ID].Parsers.push_back(Parser);
+ StreamItem.Parsers.push_back(Parser);
}
#endif
#if defined(MEDIAINFO_AAC_YES)
@@ -1335,7 +1338,7 @@ void File_Riff::AVI__hdlr_strl_strf_auds()
Parser->Mode=File_Aac::Mode_ADTS;
Parser->Frame_Count_Valid=1;
Parser->ShouldContinueParsing=true;
- Stream[Stream_ID].Parsers.push_back(Parser);
+ StreamItem.Parsers.push_back(Parser);
}
#endif
#if defined(MEDIAINFO_PCM_YES)
@@ -1357,8 +1360,9 @@ void File_Riff::AVI__hdlr_strl_strf_auds()
#else //MEDIAINFO_DEMUX
Parser->Frame_Count_Valid=(int64u)-1; //Disabling it, waiting for SMPTE ST 337 parser reject
#endif //MEDIAINFO_DEMUX
- Stream[Stream_ID].Parsers.push_back(Parser);
- Stream[Stream_ID].IsPcm=true;
+ stream& StreamItem = Stream[Stream_ID];
+ StreamItem.Parsers.push_back(Parser);
+ StreamItem.IsPcm=true;
}
#endif
#if defined(MEDIAINFO_ADPCM_YES)
@@ -1383,11 +1387,10 @@ void File_Riff::AVI__hdlr_strl_strf_auds()
{
File_Ogg* Parser=new File_Ogg;
Parser->ShouldContinueParsing=true;
- Stream[Stream_ID].Parsers.push_back(Parser);
+ StreamItem.Parsers.push_back(Parser);
}
#endif
- for (size_t Pos=0; Pos<Stream[Stream_ID].Parsers.size(); Pos++)
- Open_Buffer_Init(Stream[Stream_ID].Parsers[Pos]);
+ Open_Buffer_Init_All();
//Options
if (Element_Offset+2>Element_Size)
@@ -1508,10 +1511,11 @@ void File_Riff::AVI__hdlr_strl_strf_auds_Vorbis2()
Skip_XX(8, "Vorbis Unknown");
Element_Begin1("Vorbis options");
#if defined(MEDIAINFO_OGG_YES)
- Open_Buffer_Continue(Stream[Stream_ID].Parsers[0]);
- Open_Buffer_Continue(Stream[Stream_ID].Parsers[0], 0);
- Finish(Stream[Stream_ID].Parsers[0]);
- Merge(*Stream[Stream_ID].Parsers[0], StreamKind_Last, 0, StreamPos_Last);
+ stream& StreamItem = Stream[Stream_ID];
+ Open_Buffer_Continue(StreamItem.Parsers[0]);
+ Open_Buffer_Continue(StreamItem.Parsers[0], 0);
+ Finish(StreamItem.Parsers[0]);
+ Merge(*StreamItem.Parsers[0], StreamKind_Last, 0, StreamPos_Last);
Element_Show();
#else //MEDIAINFO_MPEG4_YES
Skip_XX(Element_Size-Element_Offset, "(Vorbis headers)");
@@ -1555,13 +1559,12 @@ void File_Riff::AVI__hdlr_strl_strf_auds_ExtensibleWave()
Demux_Level=4; //Intermediate
}
#endif //MEDIAINFO_DEMUX
- Stream[Stream_ID].Parsers.push_back(Parser);
- Stream[Stream_ID].IsPcm=true;
+ stream& StreamItem = Stream[Stream_ID];
+ StreamItem.Parsers.push_back(Parser);
+ StreamItem.IsPcm=true;
}
#endif
-
- for (size_t Pos=0; Pos<Stream[Stream_ID].Parsers.size(); Pos++)
- Open_Buffer_Init(Stream[Stream_ID].Parsers[Pos]);
+ Open_Buffer_Init_All();
}
else
{
@@ -1620,8 +1623,9 @@ void File_Riff::AVI__hdlr_strl_strf_iavs()
Finish(DV_FromHeader);
Stream_Prepare(Stream_Video);
- Stream[Stream_ID].Parsers.push_back(new File_DvDif);
- Open_Buffer_Init(Stream[Stream_ID].Parsers[0]);
+ stream& StreamItem = Stream[Stream_ID];
+ StreamItem.Parsers.push_back(new File_DvDif);
+ Open_Buffer_Init(StreamItem.Parsers[0]);
#else //MEDIAINFO_DVDIF_YES
//Parsing
@@ -1692,15 +1696,15 @@ void File_Riff::AVI__hdlr_strl_strf_txts()
if (Element_Size==0)
{
//Creating the parser
+ stream& StreamItem = Stream[Stream_ID];
#if defined(MEDIAINFO_SUBRIP_YES)
- Stream[Stream_ID].Parsers.push_back(new File_SubRip);
+ StreamItem.Parsers.push_back(new File_SubRip);
#endif
#if defined(MEDIAINFO_OTHERTEXT_YES)
- Stream[Stream_ID].Parsers.push_back(new File_OtherText); //For SSA
+ StreamItem.Parsers.push_back(new File_OtherText); //For SSA
#endif
- for (size_t Pos=0; Pos<Stream[Stream_ID].Parsers.size(); Pos++)
- Open_Buffer_Init(Stream[Stream_ID].Parsers[Pos]);
+ Open_Buffer_Init_All();
}
else
{
@@ -1874,8 +1878,7 @@ void File_Riff::AVI__hdlr_strl_strf_vids()
Stream[Stream_ID].Parsers.push_back(Parser);
}
#endif
- for (size_t Pos=0; Pos<Stream[Stream_ID].Parsers.size(); Pos++)
- Open_Buffer_Init(Stream[Stream_ID].Parsers[Pos]);
+ Open_Buffer_Init_All();
//Options
if (Element_Offset>=Element_Size)
@@ -1899,7 +1902,8 @@ void File_Riff::AVI__hdlr_strl_strf_vids_Avc()
Element_Begin1("AVC options");
#if defined(MEDIAINFO_AVC_YES)
//Can be sized block or with 000001
- File_Avc* Parser=(File_Avc*)Stream[Stream_ID].Parsers[0];
+ stream& StreamItem = Stream[Stream_ID];
+ File_Avc* Parser=(File_Avc*)StreamItem.Parsers[0];
Parser->MustParse_SPS_PPS=false;
Parser->SizedBlocks=false;
Parser->MustSynchronize=true;
@@ -1908,8 +1912,8 @@ void File_Riff::AVI__hdlr_strl_strf_vids_Avc()
if (!Parser->Status[IsAccepted])
{
Element_Offset=Element_Offset_Save;
- delete Stream[Stream_ID].Parsers[0]; Stream[Stream_ID].Parsers[0]=new File_Avc;
- Parser=(File_Avc*)Stream[Stream_ID].Parsers[0];
+ delete StreamItem.Parsers[0]; StreamItem.Parsers[0]=new File_Avc;
+ Parser=(File_Avc*)StreamItem.Parsers[0];
Open_Buffer_Init(Parser);
Parser->FrameIsAlwaysComplete=true;
Parser->MustParse_SPS_PPS=true;
@@ -2038,12 +2042,13 @@ void File_Riff::AVI__hdlr_strl_strh()
break;
default: ;
}
- Stream[Stream_ID].fccType=fccType;
- Stream[Stream_ID].fccHandler=fccHandler;
- Stream[Stream_ID].Scale=Scale;
- Stream[Stream_ID].Rate=Rate;
- Stream[Stream_ID].Start=Start;
- Stream[Stream_ID].Length=Length;
+ stream& StreamItem = Stream[Stream_ID];
+ StreamItem.fccType=fccType;
+ StreamItem.fccHandler=fccHandler;
+ StreamItem.Scale=Scale;
+ StreamItem.Rate=Rate;
+ StreamItem.Start=Start;
+ StreamItem.Length=Length;
}
//---------------------------------------------------------------------------
@@ -2506,13 +2511,14 @@ void File_Riff::AVI__movi_xxxx()
return;
}
+ stream& StreamItem = Stream[Stream_ID];
#if MEDIAINFO_DEMUX
- if (Stream[Stream_ID].Rate) //AVI
+ if (StreamItem.Rate) //AVI
{
int64u Element_Code_Old=Element_Code;
Element_Code=((Element_Code_Old>>24)&0xF)*10+((Element_Code_Old>>16)&0xF);
- Frame_Count_NotParsedIncluded=Stream[Stream_ID].PacketPos;
- FrameInfo.DTS=Frame_Count_NotParsedIncluded*1000000000*Stream[Stream_ID].Scale/Stream[Stream_ID].Rate;
+ Frame_Count_NotParsedIncluded= StreamItem.PacketPos;
+ FrameInfo.DTS=Frame_Count_NotParsedIncluded*1000000000* StreamItem.Scale/ StreamItem.Rate;
Demux(Buffer+Buffer_Offset, (size_t)Element_Size, ContentType_MainStream);
Element_Code=Element_Code_Old;
Frame_Count_NotParsedIncluded=(int64u)-1;
@@ -2523,10 +2529,10 @@ void File_Riff::AVI__movi_xxxx()
}
#endif //MEDIAINFO_DEMUX
- Stream[Stream_ID].PacketPos++;
+ StreamItem.PacketPos++;
//Finished?
- if (!Stream[Stream_ID].SearchingPayload)
+ if (!StreamItem.SearchingPayload)
{
Element_DoNotShow();
AVI__movi_StreamJump();
@@ -2558,37 +2564,37 @@ void File_Riff::AVI__movi_xxxx()
}
//Parsing
- for (size_t Pos=0; Pos<Stream[Stream_ID].Parsers.size(); Pos++)
- if (Stream[Stream_ID].Parsers[Pos])
+ for (size_t Pos=0; Pos<StreamItem.Parsers.size(); Pos++)
+ if (StreamItem.Parsers[Pos])
{
if (FrameInfo.PTS!=(int64u)-1)
- Stream[Stream_ID].Parsers[Pos]->FrameInfo.PTS=FrameInfo.PTS;
+ StreamItem.Parsers[Pos]->FrameInfo.PTS=FrameInfo.PTS;
if (FrameInfo.DTS!=(int64u)-1)
- Stream[Stream_ID].Parsers[Pos]->FrameInfo.DTS=FrameInfo.DTS;
+ StreamItem.Parsers[Pos]->FrameInfo.DTS=FrameInfo.DTS;
- Open_Buffer_Continue(Stream[Stream_ID].Parsers[Pos], Buffer+Buffer_Offset+(size_t)Element_Offset, (size_t)(Element_Size-Element_Offset));
+ Open_Buffer_Continue(StreamItem.Parsers[Pos], Buffer+Buffer_Offset+(size_t)Element_Offset, (size_t)(Element_Size-Element_Offset));
Element_Show();
- if (Stream[Stream_ID].Parsers.size()==1 && Stream[Stream_ID].Parsers[Pos]->Buffer_Size>0)
- Stream[Stream_ID].ChunksAreComplete=false;
+ if (StreamItem.Parsers.size()==1 && StreamItem.Parsers[Pos]->Buffer_Size>0)
+ StreamItem.ChunksAreComplete=false;
- if (Stream[Stream_ID].Parsers.size()>1)
+ if (StreamItem.Parsers.size()>1)
{
- if (!Stream[Stream_ID].Parsers[Pos]->Status[IsAccepted] && Stream[Stream_ID].Parsers[Pos]->Status[IsFinished])
+ if (!StreamItem.Parsers[Pos]->Status[IsAccepted] && StreamItem.Parsers[Pos]->Status[IsFinished])
{
- delete *(Stream[Stream_ID].Parsers.begin()+Pos);
- Stream[Stream_ID].Parsers.erase(Stream[Stream_ID].Parsers.begin()+Pos);
+ delete *(StreamItem.Parsers.begin()+Pos);
+ StreamItem.Parsers.erase(StreamItem.Parsers.begin()+Pos);
Pos--;
}
- else if (Stream[Stream_ID].Parsers.size()>1 && Stream[Stream_ID].Parsers[Pos]->Status[IsAccepted])
+ else if (StreamItem.Parsers.size()>1 && StreamItem.Parsers[Pos]->Status[IsAccepted])
{
- File__Analyze* Parser=Stream[Stream_ID].Parsers[Pos];
- for (size_t Pos2=0; Pos2<Stream[Stream_ID].Parsers.size(); Pos2++)
+ File__Analyze* Parser= StreamItem.Parsers[Pos];
+ for (size_t Pos2=0; Pos2<StreamItem.Parsers.size(); Pos2++)
{
if (Pos2!=Pos)
- delete *(Stream[Stream_ID].Parsers.begin()+Pos2);
+ delete *(StreamItem.Parsers.begin()+Pos2);
}
- Stream[Stream_ID].Parsers.clear();
- Stream[Stream_ID].Parsers.push_back(Parser);
+ StreamItem.Parsers.clear();
+ StreamItem.Parsers.push_back(Parser);
Pos=0;
}
}
@@ -2596,7 +2602,7 @@ void File_Riff::AVI__movi_xxxx()
#if MEDIAINFO_DEMUX
if (Config->Demux_EventWasSent)
{
- Demux_Parser=Stream[Stream_ID].Parsers[Pos];
+ Demux_Parser= StreamItem.Parsers[Pos];
return;
}
#endif //MEDIAINFO_DEMUX
@@ -2623,11 +2629,12 @@ void File_Riff::AVI__movi_xxxx()
void File_Riff::AVI__movi_xxxx___dc()
{
//Finish (if requested)
- if (Stream[Stream_ID].Parsers.empty()
- || Stream[Stream_ID].Parsers[0]->Status[IsFinished]
- || (Stream[Stream_ID].PacketPos>=300 && MediaInfoLib::Config.ParseSpeed_Get()<1.00))
+ stream& StreamItem = Stream[Stream_ID];
+ if (StreamItem.Parsers.empty()
+ || StreamItem.Parsers[0]->Status[IsFinished]
+ || (StreamItem.PacketPos>=300 && MediaInfoLib::Config.ParseSpeed_Get()<1.00))
{
- Stream[Stream_ID].SearchingPayload=false;
+ StreamItem.SearchingPayload=false;
stream_Count--;
return;
}
@@ -2664,12 +2671,13 @@ void File_Riff::AVI__movi_xxxx___tx()
void File_Riff::AVI__movi_xxxx___wb()
{
//Finish (if requested)
- if (Stream[Stream_ID].PacketPos>=4 //For having the chunk alignement
- && (Stream[Stream_ID].Parsers.empty()
- || Stream[Stream_ID].Parsers[0]->Status[IsFinished]
- || (Stream[Stream_ID].PacketPos>=300 && MediaInfoLib::Config.ParseSpeed_Get()<1.00)))
+ stream& StreamItem = Stream[Stream_ID];
+ if (StreamItem.PacketPos>=4 //For having the chunk alignement
+ && (StreamItem.Parsers.empty()
+ || StreamItem.Parsers[0]->Status[IsFinished]
+ || (StreamItem.PacketPos>=300 && MediaInfoLib::Config.ParseSpeed_Get()<1.00)))
{
- Stream[Stream_ID].SearchingPayload=false;
+ StreamItem.SearchingPayload=false;
stream_Count--;
}
}
@@ -3814,7 +3822,12 @@ void File_Riff::W3DI()
Fill(Stream_General, 0, General_Comment, Comment);
Fill(Stream_General, 0, General_Track_Position, TrackPos);
}
-
+void File_Riff::Open_Buffer_Init_All()
+{
+ stream& StreamItem = Stream[Stream_ID];
+ for (size_t Pos = 0; Pos<StreamItem.Parsers.size(); Pos++)
+ Open_Buffer_Init(StreamItem.Parsers[Pos]);
+}
//***************************************************************************
// C++
//***************************************************************************
diff --git a/Source/MediaInfo/Multiple/File_Wm_Elements.cpp b/Source/MediaInfo/Multiple/File_Wm_Elements.cpp
index 59cc573..db3193a 100644
--- a/Source/MediaInfo/Multiple/File_Wm_Elements.cpp
+++ b/Source/MediaInfo/Multiple/File_Wm_Elements.cpp
@@ -134,7 +134,7 @@ namespace Elements
UUID(Mutex_Bitrate, D6E22A01, 35DA, 11D1, 9034, 00A0C90349BE);
}
-static const char* Wm_StreamType(const int128u Kind)
+static const char* Wm_StreamType(const int128u& Kind)
{
switch (Kind.hi)
{
@@ -149,7 +149,7 @@ static const char* Wm_StreamType(const int128u Kind)
}
}
-static const char* Wm_ExclusionType(const int128u ExclusionType)
+static const char* Wm_ExclusionType(const int128u& ExclusionType)
{
switch (ExclusionType.hi)
{
@@ -320,10 +320,11 @@ void File_Wm::Header_StreamProperties ()
Skip_XX(ErrorCorrectionTypeLength, "Error Correction Data");
//Filling
- Stream[Stream_Number].StreamKind=StreamKind_Last;
- Stream[Stream_Number].StreamPos=StreamPos_Last;
- Stream[Stream_Number].Info["ID"].From_Number(Stream_Number);
- Stream[Stream_Number].Info["StreamOrder"].From_Number(Header_StreamProperties_StreamOrder);
+ stream& StreamItem = Stream[Stream_Number];
+ StreamItem.StreamKind=StreamKind_Last;
+ StreamItem.StreamPos=StreamPos_Last;
+ StreamItem.Info["ID"].From_Number(Stream_Number);
+ StreamItem.Info["StreamOrder"].From_Number(Header_StreamProperties_StreamOrder);
Header_StreamProperties_StreamOrder++;
}
@@ -362,9 +363,11 @@ void File_Wm::Header_StreamProperties_Audio ()
#if defined(MEDIAINFO_MPEGA_YES)
else if (MediaInfoLib::Config.CodecID_Get(Stream_Audio, InfoCodecID_Format_Riff, Ztring::ToZtring(CodecID, 16))==__T("MPEG Audio"))
{
- Stream[Stream_Number].Parser=new File_Mpega;
- ((File_Mpega*)Stream[Stream_Number].Parser)->Frame_Count_Valid=8;
- Stream[Stream_Number].Parser->ShouldContinueParsing=true;
+ stream& StreamItem = Stream[Stream_Number];
+ File_Mpega* Parser = new File_Mpega;
+ StreamItem.Parser= Parser;
+ Parser->Frame_Count_Valid=8;
+ StreamItem.Parser->ShouldContinueParsing=true;
}
#endif
Open_Buffer_Init(Stream[Stream_Number].Parser);
@@ -487,14 +490,16 @@ void File_Wm::Header_StreamProperties_Video ()
#if defined(MEDIAINFO_VC1_YES)
else if (MediaInfoLib::Config.CodecID_Get(Stream_Video, InfoCodecID_Format_Riff, Ztring().From_CC4(Compression), InfoCodecID_Format)==__T("VC-1"))
{
- Stream[Stream_Number].Parser=new File_Vc1;
+ stream& StreamItem = Stream[Stream_Number];
+ File_Vc1* Parser = new File_Vc1;
+ StreamItem.Parser= Parser;
if (Compression==CC4("WMV3"))
{
- ((File_Vc1*)Stream[Stream_Number].Parser)->From_WMV3=true;
- ((File_Vc1*)Stream[Stream_Number].Parser)->MustSynchronize=false;
+ Parser->From_WMV3=true;
+ Parser->MustSynchronize=false;
}
- ((File_Vc1*)Stream[Stream_Number].Parser)->FrameIsAlwaysComplete=true; //Warning: this is not always the case, see data parsing
- Open_Buffer_Init(Stream[Stream_Number].Parser);
+ Parser->FrameIsAlwaysComplete=true; //Warning: this is not always the case, see data parsing
+ Open_Buffer_Init(StreamItem.Parser);
if (Data_Size>40)
{
@@ -518,18 +523,18 @@ void File_Wm::Header_StreamProperties_Video ()
default : ;
}
#endif //MEDIAINFO_DEMUX
-
- Open_Buffer_Continue(Stream[Stream_Number].Parser, (size_t)(Data_Size-40));
- if (Stream[Stream_Number].Parser->Status[IsFinished])
+ stream& StreamItem = Stream[Stream_Number];
+ Open_Buffer_Continue(StreamItem.Parser, (size_t)(Data_Size-40));
+ if (StreamItem.Parser->Status[IsFinished])
{
- Finish(Stream[Stream_Number].Parser);
- Merge(*Stream[Stream_Number].Parser, Stream_Video, 0, StreamPos_Last);
- delete Stream[Stream_Number].Parser; Stream[Stream_Number].Parser=NULL;
+ Finish(StreamItem.Parser);
+ Merge(*StreamItem.Parser, Stream_Video, 0, StreamPos_Last);
+ delete StreamItem.Parser; StreamItem.Parser=NULL;
}
else
{
- ((File_Vc1*)Stream[Stream_Number].Parser)->Only_0D=true;
- ((File_Vc1*)Stream[Stream_Number].Parser)->MustSynchronize=false;
+ ((File_Vc1*)StreamItem.Parser)->Only_0D=true;
+ ((File_Vc1*)StreamItem.Parser)->MustSynchronize=false;
}
}
}
@@ -537,9 +542,11 @@ void File_Wm::Header_StreamProperties_Video ()
#if defined(MEDIAINFO_MPEGV_YES)
else if (MediaInfoLib::Config.Codec_Get(Ztring().From_CC4(Compression), InfoCodec_KindofCodec).find(__T("MPEG-2"))==0)
{
- Stream[Stream_Number].Parser=new File_Mpegv;
- ((File_Mpegv*)Stream[Stream_Number].Parser)->Frame_Count_Valid=30; //For searching Pulldown
- Open_Buffer_Init(Stream[Stream_Number].Parser);
+ stream& StreamItem = Stream[Stream_Number];
+ File_Mpegv* Parser = new File_Mpegv;
+ StreamItem.Parser = Parser;
+ Parser->Frame_Count_Valid=30; //For searching Pulldown
+ Open_Buffer_Init(StreamItem.Parser);
}
#endif
else if (Data_Size>40) //TODO: see "The Mummy_e"
@@ -699,9 +706,10 @@ void File_Wm::Header_HeaderExtension_ExtendedStreamProperties()
}
//Filling
- Stream[StreamNumber].LanguageID=LanguageID;
- Stream[StreamNumber].AverageBitRate=DataBitrate;
- Stream[StreamNumber].AverageTimePerFrame=AverageTimePerFrame;
+ stream& StreamItem = Stream[StreamNumber];
+ StreamItem.LanguageID=LanguageID;
+ StreamItem.AverageBitRate=DataBitrate;
+ StreamItem.AverageTimePerFrame=AverageTimePerFrame;
}
//---------------------------------------------------------------------------
@@ -1248,8 +1256,9 @@ void File_Wm::Header_StreamBitRate()
Element_End0();
//Filling
- if (Stream[StreamNumber].AverageBitRate==0) //Prefere Average bitrate of Extended Stream Properties if present
- Stream[StreamNumber].AverageBitRate=AverageBitRate;
+ stream& StreamItem = Stream[StreamNumber];
+ if (StreamItem.AverageBitRate==0) //Prefere Average bitrate of Extended Stream Properties if present
+ StreamItem.AverageBitRate=AverageBitRate;
}
}
@@ -1532,7 +1541,8 @@ void File_Wm::Data_Packet()
Demux(Buffer+(size_t)Element_Offset, (size_t)PayloadLength, ContentType_MainStream);
//Analyzing
- if (Stream[Stream_Number].Parser && Stream[Stream_Number].SearchingPayload)
+ stream& StreamItem = Stream[Stream_Number];
+ if (StreamItem.Parser && StreamItem.SearchingPayload)
{
//Handling of spanned on multiple chunks
#if defined(MEDIAINFO_VC1_YES)
@@ -1556,16 +1566,16 @@ void File_Wm::Data_Packet()
//Codec specific
#if defined(MEDIAINFO_VC1_YES)
- if (Retrieve(Stream[Stream_Number].StreamKind, Stream[Stream_Number].StreamPos, Fill_Parameter(Stream[Stream_Number].StreamKind, Generic_Format))==__T("VC-1"))
- ((File_Vc1*)Stream[Stream_Number].Parser)->FrameIsAlwaysComplete=FrameIsAlwaysComplete;
+ if (Retrieve(StreamItem.StreamKind, StreamItem.StreamPos, Fill_Parameter(StreamItem.StreamKind, Generic_Format))==__T("VC-1"))
+ ((File_Vc1*)StreamItem.Parser)->FrameIsAlwaysComplete=FrameIsAlwaysComplete;
#endif
- Open_Buffer_Continue(Stream[Stream_Number].Parser, (size_t)PayloadLength);
- if (Stream[Stream_Number].Parser->Status[IsFinished]
- || (Stream[Stream_Number].PresentationTimes.size()>=300 && MediaInfoLib::Config.ParseSpeed_Get()<1))
+ Open_Buffer_Continue(StreamItem.Parser, (size_t)PayloadLength);
+ if (StreamItem.Parser->Status[IsFinished]
+ || (StreamItem.PresentationTimes.size()>=300 && MediaInfoLib::Config.ParseSpeed_Get()<1))
{
- Stream[Stream_Number].Parser->Open_Buffer_Unsynch();
- Stream[Stream_Number].SearchingPayload=false;
+ StreamItem.Parser->Open_Buffer_Unsynch();
+ StreamItem.SearchingPayload=false;
Streams_Count--;
}
@@ -1574,10 +1584,10 @@ void File_Wm::Data_Packet()
else
{
Skip_XX(PayloadLength, "Data");
- if (Stream[Stream_Number].SearchingPayload
- && (Stream[Stream_Number].StreamKind==Stream_Video && Stream[Stream_Number].PresentationTimes.size()>=300))
+ if (StreamItem.SearchingPayload
+ && (StreamItem.StreamKind==Stream_Video && StreamItem.PresentationTimes.size()>=300))
{
- Stream[Stream_Number].SearchingPayload=false;
+ StreamItem.SearchingPayload=false;
Streams_Count--;
}
}
@@ -1604,20 +1614,21 @@ void File_Wm::Data_Packet_ReplicatedData(int32u Size)
{
Element_Begin1("Replicated Data");
int64u Element_Offset_Final=Element_Offset+Size;
- for (size_t Pos=0; Pos<Stream[Stream_Number].Payload_Extension_Systems.size(); Pos++)
+ stream& StreamItem = Stream[Stream_Number];
+ for (size_t Pos=0; Pos<StreamItem.Payload_Extension_Systems.size(); Pos++)
{
Element_Begin0();
- switch (Stream[Stream_Number].Payload_Extension_Systems[Pos].ID.hi)
+ switch (StreamItem.Payload_Extension_Systems[Pos].ID.hi)
{
case Elements::Payload_Extension_System_TimeStamp : Data_Packet_ReplicatedData_TimeStamp(); break;
default : //Not enough info to validate this algorithm
- //if (Stream[Stream_Number].Payload_Extension_Systems[Pos].Size!=(int16u)-1)
+ //if (StreamItem.Payload_Extension_Systems[Pos].Size!=(int16u)-1)
//{
// Element_Name("Unknown");
- // Skip_XX(Stream[Stream_Number].Payload_Extension_Systems[Pos].Size, "Unknown");
+ // Skip_XX(StreamItem.Payload_Extension_Systems[Pos].Size, "Unknown");
//}
//else
- Pos=Stream[Stream_Number].Payload_Extension_Systems.size(); //Disabling the rest, all is unknown
+ Pos=StreamItem.Payload_Extension_Systems.size(); //Disabling the rest, all is unknown
}
Element_End0();
}
@@ -1653,9 +1664,9 @@ void File_Wm::Data_Packet_ReplicatedData_TimeStamp()
Skip_L4( "Unknown");
Skip_L4( "Unknown");
Skip_L4( "Unknown");
-
- if (Stream[Stream_Number].TimeCode_First==(int64u)-1 && TS0!=(int64u)-1)
- Stream[Stream_Number].TimeCode_First=TS0/10000;
+ stream& StreamItem = Stream[Stream_Number];
+ if (StreamItem.TimeCode_First==(int64u)-1 && TS0!=(int64u)-1)
+ StreamItem.TimeCode_First=TS0/10000;
}
//---------------------------------------------------------------------------
diff --git a/Source/MediaInfo/Multiple/File__ReferenceFilesHelper.cpp b/Source/MediaInfo/Multiple/File__ReferenceFilesHelper.cpp
index ac2db3a..e100319 100644
--- a/Source/MediaInfo/Multiple/File__ReferenceFilesHelper.cpp
+++ b/Source/MediaInfo/Multiple/File__ReferenceFilesHelper.cpp
@@ -115,6 +115,7 @@ void File__ReferenceFilesHelper_InfoFromFileName (sequences &Sequences)
ZtringListList List;
vector<size_t> Iterators;
+ size_t ItemsValid=0;
for (size_t Sequences_Pos=0; Sequences_Pos<Sequences.size(); Sequences_Pos++)
{
ZtringList List2;
@@ -139,153 +140,171 @@ void File__ReferenceFilesHelper_InfoFromFileName (sequences &Sequences)
List2[Pos].MakeLowerCase();
List.push_back(List2);
Iterators.push_back(Sequences_Pos);
+ ItemsValid++;
}
+ else
+ List.push_back(Ztring());
}
- if (List.size()<2)
+ if (ItemsValid<2)
return;
- size_t ChannelLayout_Pos=(size_t)-1;
- size_t Language_Pos=(size_t)-1;
- for (size_t Pos2=0; Pos2<List[0].size(); Pos2++)
+ for (size_t Pos2=0; Pos2<List.size(); Pos2++)
{
- bool IsChannelLayout=true;
- bool IsLanguage=true;
- for (size_t Pos=0; Pos<List.size(); Pos++)
+ size_t ChannelLayout_Pos=(size_t)-1;
+ size_t Language_Pos=(size_t)-1;
+
+ //Pos = index file parts
+ for (size_t Pos=0; Pos<List[Pos2].size(); Pos++)
{
- if (Pos2>=List[Pos].size())
+ if (Pos>=List[Pos2].size())
break; //Maybe begin of title
- const Ztring &Test=List[Pos][List[Pos].size()-1-Pos2];
+ const Ztring &Test=List[Pos2][List[Pos2].size()-1-Pos];
//ChannelLayout
if (ChannelLayout_Pos==(size_t)-1
- && Test!=__T("l")
- && Test!=__T("r")
- && Test!=__T("lt")
- && Test!=__T("rt")
- && Test!=__T("c")
- && Test!=__T("lf")
- && Test!=__T("lfe")
- && Test!=__T("sub")
- && Test!=__T("ls")
- && Test!=__T("rs")
- && Test!=__T("b")
- && Test!=__T("mono"))
- IsChannelLayout=false;
+ && (Test==__T("l")
+ || Test==__T("r")
+ || Test==__T("lt")
+ || Test==__T("rt")
+ || Test==__T("c")
+ || Test==__T("lf")
+ || Test==__T("lfe")
+ || Test==__T("sub")
+ || Test==__T("ls")
+ || Test==__T("rs")
+ || Test==__T("lsr")
+ || Test==__T("rsr")
+ || Test==__T("b")
+ || Test==__T("mono")))
+ {
+ ChannelLayout_Pos = Pos;
+ }
//Language
if (Language_Pos==(size_t)-1
- && Test!=__T("ara")
- && Test!=__T("deu")
- && Test!=__T("eng")
- && Test!=__T("fra")
- && Test!=__T("fre")
- && Test!=__T("ita")
- && Test!=__T("jpn")
- && Test!=__T("rus")
- && Test!=__T("spa"))
- IsLanguage=false;
- }
+ && (Test==__T("ara")
+ || Test==__T("deu")
+ || Test==__T("eng")
+ || Test==__T("fra")
+ || Test==__T("fre")
+ || Test==__T("ger")
+ || Test==__T("ita")
+ || Test==__T("jpn")
+ || Test==__T("las") //Latin America Spanish
+ || Test==__T("rus")
+ || Test==__T("spa")))
+ {
+ Language_Pos = Pos;
+ }
- if (IsChannelLayout && ChannelLayout_Pos==(size_t)-1)
- ChannelLayout_Pos=Pos2;
- if (IsLanguage && Language_Pos==(size_t)-1)
- Language_Pos=Pos2;
- if (ChannelLayout_Pos!=(size_t)-1 && Language_Pos!=(size_t)-1)
- break;
- }
+ if (ChannelLayout_Pos!=(size_t)-1 && Language_Pos!=(size_t)-1)
+ break;
+ }
- //ChannelLayout
- if (ChannelLayout_Pos!=(size_t)-1)
- for (size_t Pos=0; Pos<List.size(); Pos++)
+ //ChannelLayout
+ if (ChannelLayout_Pos!=(size_t)-1)
{
Ztring ChannelPositions, ChannelPositions2, ChannelLayout;
- if (List[Pos][List[Pos].size()-1-ChannelLayout_Pos]==__T("l"))
+ if (List[Pos2][List[Pos2].size()-1-ChannelLayout_Pos]==__T("l"))
{
ChannelPositions=__T("Front: L");
ChannelPositions2=__T("1/0/0");
ChannelLayout=__T("L");
}
- if (List[Pos][List[Pos].size()-1-ChannelLayout_Pos]==__T("lt"))
+ else if (List[Pos2][List[Pos2].size()-1-ChannelLayout_Pos]==__T("lt"))
{
ChannelPositions=__T("Front: Lt");
ChannelPositions2=__T("1/0/0");
ChannelLayout=__T("Lt");
}
- if (List[Pos][List[Pos].size()-1-ChannelLayout_Pos]==__T("rt"))
+ else if (List[Pos2][List[Pos2].size()-1-ChannelLayout_Pos]==__T("rt"))
{
ChannelPositions=__T("Front: Rt");
ChannelPositions2=__T("1/0/0");
ChannelLayout=__T("Rt");
}
- if (List[Pos][List[Pos].size()-1-ChannelLayout_Pos]==__T("r"))
+ else if (List[Pos2][List[Pos2].size()-1-ChannelLayout_Pos]==__T("r"))
{
ChannelPositions=__T("Front: R");
ChannelPositions2=__T("1/0/0");
ChannelLayout=__T("R");
}
- if (List[Pos][List[Pos].size()-1-ChannelLayout_Pos]==__T("c") || List[Pos][List[Pos].size()-1-ChannelLayout_Pos]==__T("mono"))
+ else if (List[Pos2][List[Pos2].size()-1-ChannelLayout_Pos]==__T("c") || List[Pos2][List[Pos2].size()-1-ChannelLayout_Pos]==__T("mono"))
{
ChannelPositions=__T("Front: C");
ChannelPositions2=__T("1/0/0");
ChannelLayout=__T("C");
}
- if (List[Pos][List[Pos].size()-1-ChannelLayout_Pos]==__T("lf") || List[Pos][List[Pos].size()-1-ChannelLayout_Pos]==__T("lfe") || List[Pos][List[Pos].size()-1-ChannelLayout_Pos]==__T("sub"))
+ else if (List[Pos2][List[Pos2].size()-1-ChannelLayout_Pos]==__T("lf") || List[Pos2][List[Pos2].size()-1-ChannelLayout_Pos]==__T("lfe") || List[Pos2][List[Pos2].size()-1-ChannelLayout_Pos]==__T("sub"))
{
ChannelPositions=__T("LFE");
ChannelPositions2=__T(".1");
ChannelLayout=__T("LFE");
}
- if (List[Pos][List[Pos].size()-1-ChannelLayout_Pos]==__T("ls"))
+ else if (List[Pos2][List[Pos2].size()-1-ChannelLayout_Pos]==__T("ls"))
{
ChannelPositions=__T("Side: L");
ChannelPositions2=__T("0/1/0");
ChannelLayout=__T("Ls");
}
- if (List[Pos][List[Pos].size()-1-ChannelLayout_Pos]==__T("rs"))
+ else if (List[Pos2][List[Pos2].size()-1-ChannelLayout_Pos]==__T("rs"))
{
ChannelPositions=__T("Side: R");
ChannelPositions2=__T("0/1/0");
ChannelLayout=__T("Rs");
}
- if (List[Pos][List[Pos].size()-1-ChannelLayout_Pos]==__T("b"))
+ else if (List[Pos2][List[Pos2].size()-1-ChannelLayout_Pos]==__T("lsr"))
+ {
+ ChannelPositions=__T("Back: L");
+ ChannelPositions2=__T("0/0/1");
+ ChannelLayout=__T("Lsr");
+ }
+ else if (List[Pos2][List[Pos2].size()-1-ChannelLayout_Pos]==__T("rsr"))
+ {
+ ChannelPositions=__T("Back: R");
+ ChannelPositions2=__T("0/0/1");
+ ChannelLayout=__T("Rsr");
+ }
+ else if (List[Pos2][List[Pos2].size()-1-ChannelLayout_Pos]==__T("b"))
{
ChannelPositions=__T("Back: C");
ChannelPositions2=__T("0/0/1");
ChannelLayout=__T("Cs");
}
- Sequences[Iterators[Pos]]->Infos["ChannelPositions"]=ChannelPositions;
- Sequences[Iterators[Pos]]->Infos["ChannelPositions/String2"]=ChannelPositions2;
- Sequences[Iterators[Pos]]->Infos["ChannelLayout"]=ChannelLayout;
+ Sequences[Pos2]->Infos["ChannelPositions"]=ChannelPositions;
+ Sequences[Pos2]->Infos["ChannelPositions/String2"]=ChannelPositions2;
+ Sequences[Pos2]->Infos["ChannelLayout"]=ChannelLayout;
}
-
- //Language
- if (Language_Pos!=(size_t)-1)
- for (size_t Pos=0; Pos<List.size(); Pos++)
- if (1+Language_Pos<List[Pos].size())
+
+ //Language
+ if (Language_Pos!=(size_t)-1)
+ if (1+Language_Pos<List[Pos2].size())
{
Ztring Language;
- if (List[Pos][List[Pos].size()-1-Language_Pos]==__T("ara"))
+ if (List[Pos2][List[Pos2].size()-1-Language_Pos]==__T("ara"))
Language=__T("ar");
- if (List[Pos][List[Pos].size()-1-Language_Pos]==__T("deu"))
+ else if (List[Pos2][List[Pos2].size()-1-Language_Pos]==__T("deu") || List[Pos2][List[Pos2].size()-1-Language_Pos]==__T("ger"))
Language=__T("de");
- if (List[Pos][List[Pos].size()-1-Language_Pos]==__T("eng"))
+ else if (List[Pos2][List[Pos2].size()-1-Language_Pos]==__T("eng"))
Language=__T("en");
- if (List[Pos][List[Pos].size()-1-Language_Pos]==__T("fra") || List[Pos][List[Pos].size()-1-Language_Pos]==__T("fre"))
+ else if (List[Pos2][List[Pos2].size()-1-Language_Pos]==__T("fra") || List[Pos2][List[Pos2].size()-1-Language_Pos]==__T("fre"))
Language=__T("fr");
- if (List[Pos][List[Pos].size()-1-Language_Pos]==__T("ita"))
+ else if (List[Pos2][List[Pos2].size()-1-Language_Pos]==__T("ita"))
Language=__T("it");
- if (List[Pos][List[Pos].size()-1-Language_Pos]==__T("jpn"))
+ else if (List[Pos2][List[Pos2].size()-1-Language_Pos]==__T("jpn"))
Language=__T("ja");
- if (List[Pos][List[Pos].size()-1-Language_Pos]==__T("rus"))
+ else if (List[Pos2][List[Pos2].size()-1-Language_Pos]==__T("las")) //Latin America Spanish
+ Language=__T("es-419");
+ else if (List[Pos2][List[Pos2].size()-1-Language_Pos]==__T("rus"))
Language=__T("ru");
- if (List[Pos][List[Pos].size()-1-Language_Pos]==__T("spa"))
+ else if (List[Pos2][List[Pos2].size()-1-Language_Pos]==__T("spa"))
Language=__T("es");
- if (!Language.empty())
- Sequences[Iterators[Pos]]->Infos["Language"]=Language;
+ Sequences[Pos2]->Infos["Language"]=Language.empty()?List[Pos2][List[Pos2].size()-1-Language_Pos]:Language;
}
+ }
}
//***************************************************************************
diff --git a/Source/MediaInfo/Reader/Reader_libcurl.cpp b/Source/MediaInfo/Reader/Reader_libcurl.cpp
index d2f2b92..9e737db 100644
--- a/Source/MediaInfo/Reader/Reader_libcurl.cpp
+++ b/Source/MediaInfo/Reader/Reader_libcurl.cpp
@@ -64,7 +64,7 @@ namespace MediaInfoLib
namespace Http
{
//Helpers
- void CutHead(std::string &Input, std::string &Output, std::string Delimiter)
+ static void CutHead(std::string &Input, std::string &Output, const std::string& Delimiter)
{
// Remove the delimiter and everything that precedes
size_t Delimiter_Pos = Input.find(Delimiter);
@@ -75,7 +75,7 @@ namespace Http
Input = Input.substr(Begin, Input.size() - Begin);
}
}
- void CutTail(std::string &Input, std::string &Output, const std::string &Delimiter, bool KeepDelimiter=false)
+ static void CutTail(std::string &Input, std::string &Output, const std::string &Delimiter, bool KeepDelimiter=false)
{
// Remove the delimiter and everything that follows
size_t Delimiter_Pos = Input.find(Delimiter);
@@ -518,7 +518,7 @@ Ztring Reader_libcurl_ExpandFileName(const Ztring &FileName)
if (env)
FileName_Modified.FindAndReplace(__T("$HOME"), Ztring().From_Local(env));
}
- if (FileName_Modified.find(__T("~"))==0)
+ if (FileName_Modified.find(__T('~'))==0)
{
char* env=getenv("HOME");
if (env)
@@ -1114,7 +1114,7 @@ size_t Reader_libcurl::Format_Test_PerParser_Continue (MediaInfo_Internal* MI)
MessageString.From_Local(curl_easy_strerror(Result));
if (Result==CURLE_PEER_FAILED_VERIFICATION)
{
- size_t Protocol_Limit=Curl_Data->File_Name.find(__T(":"));
+ size_t Protocol_Limit=Curl_Data->File_Name.find(__T(':'));
if (Protocol_Limit!=string::npos)
{
Ztring Protocol=Curl_Data->File_Name;
diff --git a/Source/MediaInfo/Tag/File_ApeTag.cpp b/Source/MediaInfo/Tag/File_ApeTag.cpp
index 97b49e9..ab96fb7 100644
--- a/Source/MediaInfo/Tag/File_ApeTag.cpp
+++ b/Source/MediaInfo/Tag/File_ApeTag.cpp
@@ -156,7 +156,7 @@ void File_ApeTag::Data_Parse()
else if (Key=="COPYRIGHT") Fill(Stream_General, 0, General_Copyright, Value);
else if (Key=="DISK")
{
- if (Value.find(__T("/"))!=Error)
+ if (Value.find(__T('/'))!=Error)
{
Fill(Stream_General, 0, General_Part_Position_Total, Value.SubString(__T("/"), __T("")));
Fill(Stream_General, 0, General_Part_Position, Value.SubString(__T(""), __T("/")));
@@ -170,7 +170,7 @@ void File_ApeTag::Data_Parse()
else if (Key=="TITLE") Fill(Stream_General, 0, General_Title, Value);
else if (Key=="TRACK")
{
- if (Value.find(__T("/"))!=Error)
+ if (Value.find(__T('/'))!=Error)
{
Fill(Stream_General, 0, General_Track_Position_Total, Value.SubString(__T("/"), __T("")));
Fill(Stream_General, 0, General_Track_Position, Value.SubString(__T(""), __T("/")));
diff --git a/Source/MediaInfo/Tag/File_Id3v2.cpp b/Source/MediaInfo/Tag/File_Id3v2.cpp
index 02c63e4..f334e63 100644
--- a/Source/MediaInfo/Tag/File_Id3v2.cpp
+++ b/Source/MediaInfo/Tag/File_Id3v2.cpp
@@ -1188,7 +1188,7 @@ void File_Id3v2::Fill_Name()
case Elements::TCOM : Fill(Stream_General, 0, General_Composer, Element_Value); break;
case Elements::TCON :
{
- if (Element_Value.find(__T("("))==0)
+ if (Element_Value.find(__T('('))==0)
Element_Value=Element_Value.SubString(__T("("), __T(")")); //Replace (nn) by nn
if (Element_Value==__T("0") || Element_Value==__T("255"))
Element_Value.clear();
@@ -1330,7 +1330,7 @@ void File_Id3v2::Fill_Name()
case Elements::TCM : Fill(Stream_General, 0, "Composer", Element_Value); break;
case Elements::TCO :
{
- if (Element_Value.find(__T("("))==0)
+ if (Element_Value.find(__T('('))==0)
Element_Value=Element_Value.SubString(__T("("), __T(")")); //Replace (nn) by nn
if (Element_Value==__T("0") || Element_Value==__T("255"))
Element_Value.clear();
diff --git a/Source/MediaInfo/Tag/File_VorbisCom.cpp b/Source/MediaInfo/Tag/File_VorbisCom.cpp
index 8673b8a..9ed9dd6 100644
--- a/Source/MediaInfo/Tag/File_VorbisCom.cpp
+++ b/Source/MediaInfo/Tag/File_VorbisCom.cpp
@@ -122,7 +122,7 @@ void File_VorbisCom::FileHeader_Parse()
if (Library_Date.size()>9)
{
Library_Version=Library_Date.substr(9, std::string::npos);
- if (Library_Version.find(__T("("))==std::string::npos)
+ if (Library_Version.find(__T('('))==std::string::npos)
{
Library_Version.FindAndReplace(__T(" "), __T("."), 0, Ztring_Recursive);
Library_Date.resize(8);
diff --git a/Source/MediaInfo/Tag/File_Xmp.cpp b/Source/MediaInfo/Tag/File_Xmp.cpp
index 38a0484..5262ae1 100644
--- a/Source/MediaInfo/Tag/File_Xmp.cpp
+++ b/Source/MediaInfo/Tag/File_Xmp.cpp
@@ -74,9 +74,7 @@ bool File_Xmp::FileHeader_Begin()
//RDF item
if (!strcmp(Rdf_Item->Value(), (NameSpace+"Description").c_str()))
{
- const char* Attribute;
-
- Attribute=Rdf_Item->Attribute("xmlns:pdfaid");
+ const char* Attribute=Rdf_Item->Attribute("xmlns:pdfaid");
if (Attribute)
{
string Profile;
diff --git a/Source/MediaInfo/Tag/File__Tags.h b/Source/MediaInfo/Tag/File__Tags.h
index 7347ec8..3276299 100644
--- a/Source/MediaInfo/Tag/File__Tags.h
+++ b/Source/MediaInfo/Tag/File__Tags.h
@@ -23,6 +23,30 @@ namespace MediaInfoLib
{
//***************************************************************************
+// Class File__UnCompressedSize_Helper
+//***************************************************************************
+class File__UnCompressedSize_Helper
+{
+ protected:
+ int64u Duration;
+ int64u UncompressedSize;
+ public:
+ File__UnCompressedSize_Helper() :Duration(0), UncompressedSize(0) {}
+ bool CalcDurationUncompressedSize(int64u Samples, int32u SampleRate, int8u BitsPerSample, int8u Channels)
+ {
+ if (SampleRate == 0)
+ return false;
+ Duration = Samples * 1000 / SampleRate;
+ if (Duration == 0)
+ return false;
+ UncompressedSize = Samples * Channels * BitsPerSample / 8;
+ if (UncompressedSize == 0)
+ return false;
+ return true;
+ }
+};
+
+//***************************************************************************
// Class File__Tags_Helper
//***************************************************************************
diff --git a/Source/MediaInfo/Text/File_AribStdB24B37.cpp b/Source/MediaInfo/Text/File_AribStdB24B37.cpp
index 38cd78f..5242b9b 100644
--- a/Source/MediaInfo/Text/File_AribStdB24B37.cpp
+++ b/Source/MediaInfo/Text/File_AribStdB24B37.cpp
@@ -832,7 +832,7 @@ void File_AribStdB24B37::Add (Char Character)
}
//---------------------------------------------------------------------------
-void File_AribStdB24B37::Add (Ztring Character)
+void File_AribStdB24B37::Add (const Ztring& Character)
{
Streams[(size_t)(Element_Code-1)].Line+=Character;
}
diff --git a/Source/MediaInfo/Text/File_AribStdB24B37.h b/Source/MediaInfo/Text/File_AribStdB24B37.h
index 4834681..ad70e72 100644
--- a/Source/MediaInfo/Text/File_AribStdB24B37.h
+++ b/Source/MediaInfo/Text/File_AribStdB24B37.h
@@ -85,7 +85,7 @@ private :
void data_unit_data(int64u End);
void Character(int16u CharacterSet, int8u G_Value, int8u FirstByte, int8u SecondByte);
void Add(Char Character);
- void Add(Ztring Character);
+ void Add(const Ztring& Character);
void DefaultMacro();
void control_code();
void NUL();
diff --git a/Source/MediaInfo/Text/File_DvbSubtitle.cpp b/Source/MediaInfo/Text/File_DvbSubtitle.cpp
index 0dccd30..7d1d709 100644
--- a/Source/MediaInfo/Text/File_DvbSubtitle.cpp
+++ b/Source/MediaInfo/Text/File_DvbSubtitle.cpp
@@ -392,10 +392,11 @@ void File_DvbSubtitle::region_composition_segment()
}
FILLING_BEGIN();
- subtitle_streams[subtitle_stream_id].pages[page_id].regions[region_id].region_composition_segment=true;
- subtitle_streams[subtitle_stream_id].pages[page_id].regions[region_id].region_width=region_width;
- subtitle_streams[subtitle_stream_id].pages[page_id].regions[region_id].region_height=region_height;
- subtitle_streams[subtitle_stream_id].pages[page_id].regions[region_id].region_depth=region_depth;
+ region_data& region = subtitle_streams[subtitle_stream_id].pages[page_id].regions[region_id];
+ region.region_composition_segment=true;
+ region.region_width=region_width;
+ region.region_height=region_height;
+ region.region_depth=region_depth;
FILLING_END();
}
diff --git a/Source/MediaInfo/Text/File_Ttml.cpp b/Source/MediaInfo/Text/File_Ttml.cpp
index 65b8c8f..4337c53 100644
--- a/Source/MediaInfo/Text/File_Ttml.cpp
+++ b/Source/MediaInfo/Text/File_Ttml.cpp
@@ -226,10 +226,8 @@ void File_Ttml::Read_Buffer_Continue()
//p
if (!strcmp(p->Value(), "p"))
{
- const char* Attribute;
-
int64u DTS_Begin=(int64u)-1;
- Attribute=p->Attribute("begin");
+ const char* Attribute=p->Attribute("begin");
if (Attribute)
DTS_Begin=Ttml_str2timecode(Attribute);
int64u DTS_End=(int64u)-1;
@@ -255,7 +253,7 @@ void File_Ttml::Read_Buffer_Continue()
if (Span_Begin==string::npos)
break;
- size_t Span_End=Content.find(__T(">"), Span_Begin+5);
+ size_t Span_End=Content.find(__T('>'), Span_Begin+5);
if (Span_End==string::npos)
break;
@@ -272,7 +270,7 @@ void File_Ttml::Read_Buffer_Continue()
if (Span_Begin==string::npos)
break;
- size_t Span_End=Content.find(__T(">"), Span_Begin+5);
+ size_t Span_End=Content.find(__T('>'), Span_Begin+5);
if (Span_End==string::npos)
break;
diff --git a/Source/MediaInfo/TimeCode.h b/Source/MediaInfo/TimeCode.h
index 7dccfd2..3215505 100644
--- a/Source/MediaInfo/TimeCode.h
+++ b/Source/MediaInfo/TimeCode.h
@@ -62,14 +62,7 @@ public:
}
bool operator!= (const TimeCode &tc) const
{
- return Hours !=tc.Hours
- || Minutes !=tc.Minutes
- || Seconds !=tc.Seconds
- || Frames !=tc.Frames
- || FramesPerSecond !=tc.FramesPerSecond
- || DropFrame !=tc.DropFrame
- || MustUseSecondField !=tc.MustUseSecondField
- || IsSecondField !=tc.IsSecondField;
+ return !(*this == tc);
}
//Helpers
diff --git a/Source/MediaInfo/Video/File_Avc.cpp b/Source/MediaInfo/Video/File_Avc.cpp
index 4c4fd7b..5931be0 100644
--- a/Source/MediaInfo/Video/File_Avc.cpp
+++ b/Source/MediaInfo/Video/File_Avc.cpp
@@ -3084,7 +3084,7 @@ void File_Avc::sei_message_user_data_unregistered_x264(int32u payloadSize)
Encoded_Library_Settings.clear();
do
{
- size_t Options_Pos=Data.find(__T(" "), Options_Pos_Before);
+ size_t Options_Pos=Data.find(__T(' '), Options_Pos_Before);
if (Options_Pos==std::string::npos)
Options_Pos=Data.size();
Ztring option;
diff --git a/Source/MediaInfo/Video/File_Avc.h b/Source/MediaInfo/Video/File_Avc.h
index 9cc34e5..df0422a 100644
--- a/Source/MediaInfo/Video/File_Avc.h
+++ b/Source/MediaInfo/Video/File_Avc.h
@@ -56,6 +56,7 @@ public :
private :
File_Avc(const File_Avc &File_Avc); //No copy
+ File_Avc &operator =(const File_Avc &);
//Structures - seq_parameter_set
struct seq_parameter_set_struct
@@ -84,17 +85,6 @@ private :
//initial_cpb_removal_delay_offset(initial_cpb_removal_delay_offset_)
{
}
-
- xxl_data &operator=(const xxl_data &x)
- {
- bit_rate_value=x.bit_rate_value;
- cpb_size_value=x.cpb_size_value;
- cbr_flag=x.cbr_flag;
- //initial_cpb_removal_delay=x.initial_cpb_removal_delay;
- //initial_cpb_removal_delay_offset=x.initial_cpb_removal_delay_offset;
- return *this;
- }
-
private:
xxl_data();
};
@@ -113,20 +103,10 @@ private :
time_offset_length(time_offset_length_)
{
}
-
- xxl &operator=(const xxl &x)
- {
- SchedSel=x.SchedSel;
- initial_cpb_removal_delay_length_minus1=x.initial_cpb_removal_delay_length_minus1;
- cpb_removal_delay_length_minus1=x.cpb_removal_delay_length_minus1;
- dpb_output_delay_length_minus1=x.dpb_output_delay_length_minus1;
- time_offset_length=x.time_offset_length;
-
- return *this;
- }
-
private:
xxl();
+ xxl &operator =(const xxl &);
+ xxl(const xxl &);
};
struct bitstream_restriction_struct
{
@@ -137,14 +117,6 @@ private :
max_num_reorder_frames(max_num_reorder_frames_)
{
}
-
- bitstream_restriction_struct &operator=(const bitstream_restriction_struct &b)
- {
- max_num_reorder_frames=b.max_num_reorder_frames;
-
- return *this;
- }
-
private:
bitstream_restriction_struct();
};
@@ -201,6 +173,7 @@ private :
private:
vui_parameters_struct &operator=(const vui_parameters_struct &v);
+ vui_parameters_struct(const vui_parameters_struct &);
vui_parameters_struct();
};
vui_parameters_struct* vui_parameters;
@@ -297,6 +270,7 @@ private :
private:
seq_parameter_set_struct &operator=(const seq_parameter_set_struct &v);
+ seq_parameter_set_struct(const seq_parameter_set_struct &);
seq_parameter_set_struct();
};
typedef vector<seq_parameter_set_struct*> seq_parameter_set_structs;
@@ -350,6 +324,7 @@ private :
private:
pic_parameter_set_struct &operator=(const pic_parameter_set_struct &v);
+ pic_parameter_set_struct(const pic_parameter_set_struct &);
pic_parameter_set_struct();
};
typedef vector<pic_parameter_set_struct*> pic_parameter_set_structs;
diff --git a/Source/MediaInfo/Video/File_Avc_Duplicate.cpp b/Source/MediaInfo/Video/File_Avc_Duplicate.cpp
index da39b51..4cc9e20 100644
--- a/Source/MediaInfo/Video/File_Avc_Duplicate.cpp
+++ b/Source/MediaInfo/Video/File_Avc_Duplicate.cpp
@@ -204,7 +204,7 @@ void File_Avc::File__Duplicate_Write (int64u Element_Code, int32u frame_num)
}
else if (frame_num!=(int32u)-1)
{
- if (frame_num!=frame_num_Old && frame_num_Old!=(int32u)-1 && frame_num!=(int32u)-1)
+ if (frame_num!=frame_num_Old && frame_num_Old!=(int32u)-1)
{
// Form:
// 8 bytes : PTS
diff --git a/Source/MediaInfo/Video/File_Ffv1.cpp b/Source/MediaInfo/Video/File_Ffv1.cpp
index 8e27164..cce7eb5 100644
--- a/Source/MediaInfo/Video/File_Ffv1.cpp
+++ b/Source/MediaInfo/Video/File_Ffv1.cpp
@@ -1117,10 +1117,13 @@ int File_Ffv1::slice(states &States)
if (!coder_type && ((version == 3 && micro_version > 1) || version > 3))
BS_End();
- if (coder_type && version > 2)
+ if (coder_type)
{
- int8u s = 129;
- RC->get_rac(&s);
+ if (version > 2)
+ {
+ int8u s = 129;
+ RC->get_rac(&s);
+ }
Element_Offset+=RC->BytesUsed();
}
@@ -1597,7 +1600,7 @@ void File_Ffv1::read_quant_table(int i, int j, size_t scale)
return;
}
- for (size_t a=0; a<=len_minus1; a++)
+ for (int32u a=0; a<=len_minus1; a++)
{
quant_tables[i][j][k] = scale * v;
k++;
diff --git a/Source/MediaInfo/Video/File_Hevc.cpp b/Source/MediaInfo/Video/File_Hevc.cpp
index ef56525..d162eb0 100644
--- a/Source/MediaInfo/Video/File_Hevc.cpp
+++ b/Source/MediaInfo/Video/File_Hevc.cpp
@@ -1993,7 +1993,7 @@ void File_Hevc::sei_message_user_data_unregistered_x265(int32u payloadSize)
Encoded_Library_Settings.clear();
while (Options_Pos_Before!=Data.size())
{
- size_t Options_Pos=Data.find(__T(" "), Options_Pos_Before);
+ size_t Options_Pos=Data.find(__T(' '), Options_Pos_Before);
if (Options_Pos==std::string::npos)
Options_Pos=Data.size();
Ztring option;
@@ -2035,7 +2035,7 @@ void File_Hevc::sei_message_user_data_unregistered_x265(int32u payloadSize)
Value.erase(Value.begin());
while (!Value.empty() && Value[Value.size()-1]<0x30)
Value.erase(Value.end()-1);
- size_t Value_Pos=Value.find(__T(" "));
+ size_t Value_Pos=Value.find(__T(' '));
if (Value_Pos!=string::npos)
Value.resize(Value_Pos);
Encoded_Library=Value;
diff --git a/Source/MediaInfo/Video/File_Hevc.h b/Source/MediaInfo/Video/File_Hevc.h
index d7e6157..1343716 100644
--- a/Source/MediaInfo/Video/File_Hevc.h
+++ b/Source/MediaInfo/Video/File_Hevc.h
@@ -37,6 +37,8 @@ public :
private :
File_Hevc(const File_Hevc &File_Hevc); //No copy
+ File_Hevc &operator =(const File_Hevc &); //No copy
+
//Structures - video_parameter_set
struct video_parameter_set_struct
@@ -67,6 +69,7 @@ private :
private:
video_parameter_set_struct &operator=(const video_parameter_set_struct &v);
+ video_parameter_set_struct(const video_parameter_set_struct &a);
video_parameter_set_struct();
};
typedef vector<video_parameter_set_struct*> video_parameter_set_structs;
@@ -99,16 +102,6 @@ private :
{
}
- xxl_data &operator=(const xxl_data &x)
- {
- bit_rate_value = x.bit_rate_value;
- cpb_size_value = x.cpb_size_value;
- cbr_flag = x.cbr_flag;
- //initial_cpb_removal_delay=x.initial_cpb_removal_delay;
- //initial_cpb_removal_delay_offset=x.initial_cpb_removal_delay_offset;
- return *this;
- }
-
private:
xxl_data();
};
@@ -119,15 +112,9 @@ private :
SchedSel(SchedSel_)
{
}
-
- xxl &operator=(const xxl &x)
- {
- SchedSel = x.SchedSel;
-
- return *this;
- }
-
private:
+ xxl &operator=(const xxl &x);
+ xxl(const xxl &);
xxl();
};
struct xxl_common
@@ -151,18 +138,6 @@ private :
{
}
- xxl_common &operator=(const xxl_common &x)
- {
- sub_pic_hrd_params_present_flag = x.sub_pic_hrd_params_present_flag;
- du_cpb_removal_delay_increment_length_minus1 = x.du_cpb_removal_delay_increment_length_minus1;
- dpb_output_delay_du_length_minus1 = x.dpb_output_delay_du_length_minus1;
- initial_cpb_removal_delay_length_minus1 = x.initial_cpb_removal_delay_length_minus1;
- au_cpb_removal_delay_length_minus1 = x.au_cpb_removal_delay_length_minus1;
- dpb_output_delay_length_minus1 = x.dpb_output_delay_length_minus1;
-
- return *this;
- }
-
private:
xxl_common();
};
@@ -217,6 +192,7 @@ private :
private:
vui_parameters_struct &operator=(const vui_parameters_struct &v);
+ vui_parameters_struct(const vui_parameters_struct &);
vui_parameters_struct();
};
vui_parameters_struct* vui_parameters;
@@ -290,6 +266,7 @@ private :
private:
seq_parameter_set_struct &operator=(const seq_parameter_set_struct &v);
+ seq_parameter_set_struct(const seq_parameter_set_struct &);
seq_parameter_set_struct();
};
typedef vector<seq_parameter_set_struct*> seq_parameter_set_structs;
@@ -331,6 +308,7 @@ private :
private:
pic_parameter_set_struct &operator=(const pic_parameter_set_struct &v);
+ pic_parameter_set_struct(const pic_parameter_set_struct &a);
pic_parameter_set_struct();
};
typedef vector<pic_parameter_set_struct*> pic_parameter_set_structs;
diff --git a/Source/MediaInfo/Video/File_Mpeg4v.cpp b/Source/MediaInfo/Video/File_Mpeg4v.cpp
index 7153531..0300887 100644
--- a/Source/MediaInfo/Video/File_Mpeg4v.cpp
+++ b/Source/MediaInfo/Video/File_Mpeg4v.cpp
@@ -1215,7 +1215,7 @@ void File_Mpeg4v::video_object_layer_start()
}
//Coherancy
- if (shape!=2 && shape==0 && (object_layer_width==0 || object_layer_height==0 || ((float32)object_layer_width)/object_layer_height<((float32)0.1) || object_layer_width/object_layer_height>10))
+ if (shape==0 && (object_layer_width==0 || object_layer_height==0 || ((float32)object_layer_width)/object_layer_height<((float32)0.1) || object_layer_width/object_layer_height>10))
Trusted_IsNot("Problem with width and height!");
FILLING_BEGIN();
diff --git a/Source/MediaInfoDLL/MediaInfoDLL.py b/Source/MediaInfoDLL/MediaInfoDLL.py
index b09ae93..9b4a8e3 100644
--- a/Source/MediaInfoDLL/MediaInfoDLL.py
+++ b/Source/MediaInfoDLL/MediaInfoDLL.py
@@ -101,6 +101,30 @@ class MediaInfo:
MediaInfo_Open_Buffer.argtypes = [c_void_p, c_void_p, c_size_t, c_void_p, c_size_t]
MediaInfo_Open_Buffer.restype = c_size_t
+ #/** @brief Wrapper for MediaInfoLib::MediaInfo::Open (with a buffer, Init) */
+ #MEDIAINFO_EXP size_t __stdcall MediaInfo_Open_Buffer_Init (void* Handle, MediaInfo_int64u File_Size, MediaInfo_int64u File_Offset);
+ MediaInfo_Open_Buffer_Init = MediaInfoDLL_Handler.MediaInfo_Open_Buffer_Init
+ MediaInfo_Open_Buffer_Init.argtypes = [c_void_p, c_uint64, c_uint64]
+ MediaInfo_Open_Buffer_Init.restype = c_size_t
+
+ #/** @brief Wrapper for MediaInfoLib::MediaInfo::Open (with a buffer, Continue) */
+ #MEDIAINFO_EXP size_t __stdcall MediaInfo_Open_Buffer_Continue (void* Handle, MediaInfo_int8u* Buffer, size_t Buffer_Size);
+ MediaInfo_Open_Buffer_Continue = MediaInfoDLL_Handler.MediaInfo_Open_Buffer_Continue
+ MediaInfo_Open_Buffer_Continue.argtypes = [c_void_p, c_char_p, c_size_t]
+ MediaInfo_Open_Buffer_Continue.restype = c_size_t
+
+ #/** @brief Wrapper for MediaInfoLib::MediaInfo::Open (with a buffer, Continue_GoTo_Get) */
+ #MEDIAINFO_EXP MediaInfo_int64u __stdcall MediaInfo_Open_Buffer_Continue_GoTo_Get (void* Handle);
+ MediaInfo_Open_Buffer_Continue_GoTo_Get = MediaInfoDLL_Handler.MediaInfo_Open_Buffer_Continue_GoTo_Get
+ MediaInfo_Open_Buffer_Continue_GoTo_Get.argtypes = [c_void_p]
+ MediaInfo_Open_Buffer_Continue_GoTo_Get.restype = c_uint64
+
+ #/** @brief Wrapper for MediaInfoLib::MediaInfo::Open (with a buffer, Finalize) */
+ #MEDIAINFO_EXP size_t __stdcall MediaInfo_Open_Buffer_Finalize (void* Handle);
+ MediaInfo_Open_Buffer_Finalize = MediaInfoDLL_Handler.MediaInfo_Open_Buffer_Finalize
+ MediaInfo_Open_Buffer_Finalize.argtypes = [c_void_p]
+ MediaInfo_Open_Buffer_Finalize.restype = c_size_t
+
#/** @brief Wrapper for MediaInfoLib::MediaInfo::Save */
#MEDIAINFO_EXP size_t __stdcall MediaInfo_Save (void* Handle);
MediaInfo_Save = MediaInfoDLL_Handler.MediaInfo_Save
@@ -196,6 +220,14 @@ class MediaInfo:
return self.MediaInfo_Open (self.Handle, File);
def Open_Buffer(self, Begin, Begin_Size, End=None, End_Size=0):
return self.MediaInfo_Open_Buffer(self.Handle, Begin, Begin_Size, End, End_Size)
+ def Open_Buffer_Init(self, File_Size, File_Offset=0):
+ return self.MediaInfo_Open_Buffer_Init(self.Handle, File_Size, File_Offset)
+ def Open_Buffer_Continue(self, Buffer, Buffer_Size):
+ return self.MediaInfo_Open_Buffer_Continue(self.Handle, Buffer, Buffer_Size)
+ def Open_Buffer_Continue_GoTo_Get(self):
+ return self.MediaInfo_Open_Buffer_Continue_GoTo_Get(self.Handle)
+ def Open_Buffer_Finalize(self):
+ return self.MediaInfo_Open_Buffer_Finalize(self.Handle)
def Save(self):
return self.MediaInfo_Save(self.Handle)
def Close(self):
diff --git a/Source/MediaInfoDLL/MediaInfoDLL3.py b/Source/MediaInfoDLL/MediaInfoDLL3.py
index 0bb88b8..5caaf2e 100644
--- a/Source/MediaInfoDLL/MediaInfoDLL3.py
+++ b/Source/MediaInfoDLL/MediaInfoDLL3.py
@@ -100,6 +100,30 @@ class MediaInfo:
MediaInfo_Open_Buffer.argtypes = [c_void_p, c_void_p, c_size_t, c_void_p, c_size_t]
MediaInfo_Open_Buffer.restype = c_size_t
+ #/** @brief Wrapper for MediaInfoLib::MediaInfo::Open (with a buffer, Init) */
+ #MEDIAINFO_EXP size_t __stdcall MediaInfo_Open_Buffer_Init (void* Handle, MediaInfo_int64u File_Size, MediaInfo_int64u File_Offset);
+ MediaInfo_Open_Buffer_Init = MediaInfoDLL_Handler.MediaInfo_Open_Buffer_Init
+ MediaInfo_Open_Buffer_Init.argtypes = [c_void_p, c_uint64, c_uint64]
+ MediaInfo_Open_Buffer_Init.restype = c_size_t
+
+ #/** @brief Wrapper for MediaInfoLib::MediaInfo::Open (with a buffer, Continue) */
+ #MEDIAINFO_EXP size_t __stdcall MediaInfo_Open_Buffer_Continue (void* Handle, MediaInfo_int8u* Buffer, size_t Buffer_Size);
+ MediaInfo_Open_Buffer_Continue = MediaInfoDLL_Handler.MediaInfo_Open_Buffer_Continue
+ MediaInfo_Open_Buffer_Continue.argtypes = [c_void_p, c_char_p, c_size_t]
+ MediaInfo_Open_Buffer_Continue.restype = c_size_t
+
+ #/** @brief Wrapper for MediaInfoLib::MediaInfo::Open (with a buffer, Continue_GoTo_Get) */
+ #MEDIAINFO_EXP MediaInfo_int64u __stdcall MediaInfo_Open_Buffer_Continue_GoTo_Get (void* Handle);
+ MediaInfo_Open_Buffer_Continue_GoTo_Get = MediaInfoDLL_Handler.MediaInfo_Open_Buffer_Continue_GoTo_Get
+ MediaInfo_Open_Buffer_Continue_GoTo_Get.argtypes = [c_void_p]
+ MediaInfo_Open_Buffer_Continue_GoTo_Get.restype = c_uint64
+
+ #/** @brief Wrapper for MediaInfoLib::MediaInfo::Open (with a buffer, Finalize) */
+ #MEDIAINFO_EXP size_t __stdcall MediaInfo_Open_Buffer_Finalize (void* Handle);
+ MediaInfo_Open_Buffer_Finalize = MediaInfoDLL_Handler.MediaInfo_Open_Buffer_Finalize
+ MediaInfo_Open_Buffer_Finalize.argtypes = [c_void_p]
+ MediaInfo_Open_Buffer_Finalize.restype = c_size_t
+
#/** @brief Wrapper for MediaInfoLib::MediaInfo::Save */
#MEDIAINFO_EXP size_t __stdcall MediaInfo_Save (void* Handle);
MediaInfo_Save = MediaInfoDLL_Handler.MediaInfo_Save
@@ -194,6 +218,14 @@ class MediaInfo:
return self.MediaInfo_Open (self.Handle, File);
def Open_Buffer(self, Begin, Begin_Size, End=None, End_Size=0):
return self.MediaInfo_Open_Buffer(self.Handle, Begin, Begin_Size, End, End_Size)
+ def Open_Buffer_Init(self, File_Size, File_Offset=0):
+ return self.MediaInfo_Open_Buffer_Init(self.Handle, File_Size, File_Offset)
+ def Open_Buffer_Continue(self, Buffer, Buffer_Size):
+ return self.MediaInfo_Open_Buffer_Continue(self.Handle, Buffer, Buffer_Size)
+ def Open_Buffer_Continue_GoTo_Get(self):
+ return self.MediaInfo_Open_Buffer_Continue_GoTo_Get(self.Handle)
+ def Open_Buffer_Finalize(self):
+ return self.MediaInfo_Open_Buffer_Finalize(self.Handle)
def Save(self):
return self.MediaInfo_Save(self.Handle)
def Close(self):
diff --git a/Source/Resource/Text/Language/DefaultLanguage.csv b/Source/Resource/Text/Language/DefaultLanguage.csv
index 09b9e51..8cb39a5 100644
--- a/Source/Resource/Text/Language/DefaultLanguage.csv
+++ b/Source/Resource/Text/Language/DefaultLanguage.csv
@@ -672,6 +672,7 @@ Language_en-gb;English (Great Britain)
Language_en-us;English (United States)
Language_eo;Esperanto
Language_es;Spanish
+Language_es-419;Spanish (Latin America)
Language_et;Estonian
Language_eu;Basque
Language_fa;Persian
diff --git a/Source/ThirdParty/base64/base64.h b/Source/ThirdParty/base64/base64.h
index 40a340c..0bed6cf 100644
--- a/Source/ThirdParty/base64/base64.h
+++ b/Source/ThirdParty/base64/base64.h
@@ -29,13 +29,17 @@ namespace Base64 {
@return Base64 encoded string
*/
inline std::string Base64::encode(const std::string &sString) {
- static const std::string sBase64Table(
- // 0000000000111111111122222222223333333333444444444455555555556666
- // 0123456789012345678901234567890123456789012345678901234567890123
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
- );
- static const char cFillChar = '=';
- std::string::size_type nLength = sString.length();
+ static const char sBase64Table[64] =
+ { 'A','B','C','D','E','F','G','H',
+ 'I','J','K','L','M','N','O','P',
+ 'Q','R','S','T','U','V','W','X',
+ 'Y','Z','a','b','c','d','e','f',
+ 'g','h','i','j','k','l','m','n',
+ 'o','p','q','r','s','t','u','v',
+ 'w','x','y','z','0','1','2','3',
+ '4','5','6','7','8','9','+','/' };
+ const char cFillChar = '=';
+ const std::string::size_type nLength = sString.length();
std::string sResult;
// Allocate memory for the converted string
--
libmediainfo packaging
More information about the pkg-multimedia-commits
mailing list