OSDN Git Service

modified BluRayOutput class in Utils
[tsremuxcpp/developing01.git] / src / Utils.h
index 0e4a580..b8bfe71 100755 (executable)
@@ -106,8 +106,9 @@ struct EpElement {
 class Utility {
  public:
   static pByte ToString(std::vector<byte> vector);
-  static void ToArray(std::vector<byte>& vctr, byte* str);
-  static void AddRange(std::vector<byte>& new_vctr, std::vector<byte>& old_vctr);
+  static void AddRange(std::vector<byte>& new_vctr, const byte* str);
+  static void AddRange(std::vector<byte>& new_vctr, const pByte str);
+  static void AddRange(std::vector<byte>& new_vctr, const std::vector<byte>& old_vctr);
 };
 
 class StreamInfo {
@@ -154,29 +155,30 @@ class BluRayOutput {
   static readonly byte ClipInfo_0000_clpi[];
   static readonly byte TsTypeInfoBlock[];
   BluRayOutput(std::string path, TimeSpan chapterLen);
-  void Author(EpElement* EpInfo, StreamInfo* sis, UInt32 numOfSourcePackets);
-  pByte BuildPlayList(pByte PlayItems);
-  pByte BuildFirstPlayItem(byte stc_id, UInt32 start, UInt32 end, byte* StnTable);
+  void Author(std::vector<EpElement>& EpInfo, std::vector<StreamInfo>& sis, UInt32 numOfSourcePackets);
+  pByte BuildPlayList(std::vector<pByte> PlayItems);
+  pByte BuildFirstPlayItem(byte stc_id, UInt32 start, UInt32 end, pByte StnTable);
   pByte BuildFirstPlayMarks(UInt32 start, UInt32 end, UInt32 interval);
-  pByte Build_clpi(byte* ClipInfo, byte* SequenceInfo, byte* ProgramInfo, byte* CPI);
-  pByte BuildClipInfo(UInt32 numOfSourcePackets, EpElement* EpInfo);
+  pByte Build_clpi(pByte ClipInfo, pByte SequenceInfo, pByte ProgramInfo, pByte CPI);
+  pByte BuildClipInfo(UInt32 numOfSourcePackets, std::vector<EpElement> EpInfo);
   pByte BuildSequenceInfo(UInt32 start, UInt32 end);
-  pByte BuildProgramInfo(ushort pids, byte* StreamCodingInfos);
+  pByte BuildProgramInfo(std::vector<ushort> pids, std::vector<pByte> StreamCodingInfos);
   pByte BuildVideoStreamCodingInfo(ElementaryStreamTypes type, VideoFormat format, FrameRate rate, AspectRatio ratio);
   pByte BuildAudioStreamCodingInfo(ElementaryStreamTypes type, AudioPresentationType format, SamplingFrequency rate);
   pByte BuildPgStreamCodingInfo(void);
-  pByte BuildCpi(byte* EpMap);
-  pByte BuildEpMap(EpElement* EpInfo);
+  pByte BuildCpi(pByte EpMap);
+  pByte BuildEpMap(std::vector<EpElement>& EpInfo);
  private:
   pByte BuildStreamEntry(ushort pid);
   pByte BuildVideoStreamAttributes(byte type, VideoFormat vf, FrameRate fr)throw(std::invalid_argument);
-  pByte BuildAudioStreamAttributes(byte type, AudioPresentationType vf,
-        SamplingFrequency fr)throw(std::invalid_argument);
-  pByte BuildStnTable(byte* VideoEntry, byte* VideoAttributes,
-        byte* AudioEntries, byte* AudioAttributes, byte* PgEntries, byte* PgAttributes);
+  pByte BuildAudioStreamAttributes(byte type, AudioPresentationType vf, SamplingFrequency fr)
+        throw(std::invalid_argument);
+  pByte BuildStnTable(pByte VideoEntry, pByte VideoAttributes,
+        std::vector<pByte>& AudioEntries, std::vector<pByte>& AudioAttributes,
+        std::vector<pByte>& PgEntries, std::vector<pByte>& PgAttributes);
   pByte UintToByteArraryNetwork(UInt32 value);
-  pByte Build_mlps(byte* PlayList, byte* PlayListMark);
-  std::string path;
+  pByte Build_mlps(pByte PlayList, pByte PlayListMark);
+  boost::filesystem::path path;
   TimeSpan chapterLen; 
 };
 
@@ -359,15 +361,22 @@ class SitPacket : TsTable {
   SitPacket(pByte data);
 };
 
-class PmPacket : TsTable {
+class PmtPacket : TsTable {
  public:
-  PmPacket(void);
-  PmPacket(pByte data)throw(std::invalid_argument);
-  DTCP_Descriptor GetDtcpInfo(void);
+  PmtPacket(void);
+  PmtPacket(pByte data)throw(std::invalid_argument);
+  boost::shared_array<DTCP_Descriptor> GetDtcpInfo(void);
   pByte GetProgramDescriptorsData(void);
   void SetProgramDescriptorsData(pByte value);
   ushort GetProgramDescriptorsLength(void);
   void SetProgramDescriptorsLength(ushort value);
+  ushort GetProgramNumber(void);
+  void SetProgramNumber(ushort id);
+  ushort GetPcrPID(void);
+  void SetPcrPID(ushort pid);
+  ushort GetStreamInfoLength(void);
+ private:
+  ushort PcrPID;
 };
 
 class PesHeader {