/* Copyright (c) MediaArea.net SARL. All Rights Reserved. * * Use of this source code is governed by a BSD-style license that can * be found in the License.html file in the root of the source tree. */ //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // // Some containers use mono stream for AES3 (Stereo) grouping // We need to group the 2-mono streams in one before sending // data to AES parser // //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //--------------------------------------------------------------------------- #ifndef MediaInfo_File_ChannelGroupingH #define MediaInfo_File_ChannelGroupingH //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- #include "MediaInfo/Audio/File_Pcm.h" #include //--------------------------------------------------------------------------- namespace MediaInfoLib { //*************************************************************************** // Class File_ChannelGrouping //*************************************************************************** #ifdef MEDIAINFO_SMPTEST0337_YES class File_ChannelGrouping : public File_Pcm_Base { public : //In int8u BitDepth; int16u SamplingRate; bool Aligned; bool CanBePcm; struct common { struct channel { int8u* Buffer; size_t Buffer_Offset; size_t Buffer_Size; size_t Buffer_Size_Max; std::vector Offsets_Stream; std::vector Offsets_Buffer; channel() { Buffer=new int8u[32768]; Buffer_Offset=0; Buffer_Size=0; Buffer_Size_Max=32768; } ~channel() { delete[] Buffer; //Buffer=NULL; } void resize(size_t NewSize) { if (NewSize Channels; channel MergedChannel; std::vector Parsers; size_t Instances; size_t Instances_Max; common() { Instances=0; Instances_Max=0; } ~common() { for (size_t Pos=0; Pos