OSDN Git Service

implement EbmlElement class in Mkv
authorcocot <cocot@users.sourceforge.jp>
Wed, 25 Mar 2009 13:15:30 +0000 (22:15 +0900)
committercocot <cocot@users.sourceforge.jp>
Wed, 25 Mar 2009 13:15:30 +0000 (22:15 +0900)
src/Mkv.cc
src/Mkv.h
src/Utils.h

index a9e6430..7a92e9d 100644 (file)
@@ -6,13 +6,12 @@ namespace TsRemux
     0x3fLL, 0x1ffffLL, 0xfffffLL, 0x7ffffffLL, 0x3ffffffffLL,
     0x1ffffffffffLL, 0xffffffffffffffLL, 0x7fffffffffffffLL };
 
-EbmlElement::EbmlElement(
-    signed long long id, signed long long size, signed long long pos, Stream fs)
+EbmlElement::EbmlElement(signed long long id, signed long long size, signed long long pos, Stream& fs)
 {
     return;
 }
 
-EbmlElement* EbmlElement::ParseEbml(Stream fs)
+EbmlElement* EbmlElement::ParseEbml(Stream& fs)
 {
     
     return NULL;
@@ -23,17 +22,17 @@ char EbmlElement::VintLength(char vint)
     return 'A';
 }
 
-signed long long EbmlElement::VintToInt64(Stream fs)
+signed long long EbmlElement::VintToInt64(Stream& fs)
 {
     return 1;
 }
 
-MkvPesFile::MkvPesFile(BackgroundWorker bw)
+MkvPesFile::MkvPesFile(BackgroundWorker& bw)
 {
     return;
 }
 
-TrackInfo::TrackInfo(unsigned short pid, std::string codec, char* data, EbmlElement info)
+TrackInfo::TrackInfo(unsigned short pid, std::string codec, char* data, EbmlElement& info)
 {
     return;
 }
index 23d7132..295b3b1 100644 (file)
--- a/src/Mkv.h
+++ b/src/Mkv.h
@@ -1,10 +1,8 @@
 #ifndef TSREMUXCPP_MKV_H_
 #define TSREMUXCPP_MKV_H_
 
-#include <string>
 #include "Utils.h"
 #include "define_temporary.h"
-#include "define_stream.h"
 #include "define_backgroundworker.h"
 
 namespace TsRemux {
@@ -19,29 +17,29 @@ enum LacingType {
 class EbmlElement {
  public:
   static EbmlElement* ParseEbml(Stream fs);
-  signed long long Id;
-  signed long long Size;
+  Int64 Id;
+  Int64 Size;
   Stream DataStream;
   EbmlElement* Children;
   static char VintLength(char vint);
-  static signed long long VintToInt64(Stream fs);
+  static Int64 VintToInt64(Stream fs);
  protected:
-  signed long long id;
-  signed long long size;
-  signed long long pos;
+  Int64 id;
+  Int64 size;
+  Int64 pos;
   Stream fs;
-  signed long long Position;
-  EbmlElement(signed long long id, signed long long size, signed long long pos, Stream fs);
+  Int64 Position;
+  EbmlElement(Int64 id, Int64 size, Int64 pos, Stream& fs);
  private:
-/*  static const signed long long vsint_subtr[] = {
+/*  static const Int64 vsint_subtr[] = {
     0x3fLL, 0x1ffffLL, 0xfffffLL, 0x7ffffffLL, 0x3ffffffffLL,
     0x1ffffffffffLL, 0xffffffffffffffLL, 0x7fffffffffffffLL };*/
 };
 
 struct TrackInfo {
  public:
-  TrackInfo(unsigned short pid, std::string codec, char* data, EbmlElement info);
-  unsigned short pid;
+  TrackInfo(ushort pid, std::string codec, pByte data, EbmlElement& info);
+  ushort pid;
   std::string codec;
   char data[];
   EbmlElement info;
@@ -49,21 +47,21 @@ struct TrackInfo {
 
 class MkvPesFile {
  public:
-  MkvPesFile(BackgroundWorker bw);
+  MkvPesFile(BackgroundWorker& bw);
   DTCP_Descriptor DtcpInfo;
-  PesPacket* GetNextPesPackets(void);
-  void Seek(signed long pcr);
+  boost::shared_array<PesPacket> GetNextPesPackets(void);
+  void Seek(Int32 pcr);
  protected:
   void GetInitialValues(void);
  private:
-  SortedList<signed long long, EbmlElement> Clusters;
+  SortedList<Int64, EbmlElement> Clusters;
   signed int CuurentIndex;
-  Dictionary<unsigned short, TrackInfo> TrackList;
+  Dictionary<ushort, TrackInfo> TrackList;
   unsigned long long GetClusterClock(EbmlElement cluster);
-  PesPacket BuildAc3Pes(signed long long timestamp, char data[], unsigned short pid);
-  PesPacket BuildMpeg2Pes(signed long long timestamp, char data[], unsigned short pid);
-  PesPacket BuildAvcPes(signed long long timestamp, char data[], unsigned short pid);
-  PesPacket BuildVc1Pes(signed long long timestamp, char data[], unsigned short pid);
+  PesPacket BuildAc3Pes(Int64 timestamp, char data[], ushort pid);
+  PesPacket BuildMpeg2Pes(Int64 timestamp, char data[], ushort pid);
+  PesPacket BuildAvcPes(Int64 timestamp, char data[], ushort pid);
+  PesPacket BuildVc1Pes(Int64 timestamp, char data[], ushort pid);
   void GetTimeStamps(void);
 };
 }
index 16d2485..bb92317 100755 (executable)
@@ -4,13 +4,48 @@
 #include <cstring>
 #include <ctime>
 #include <list>
+#include <iosfwd>
 #include <vector>
 #include <stdexcept>
+#include <boost/date_time/posix_time/posix_time.hpp>
+#include <boost/shared_ptr.hpp>
 #include <boost/shared_array.hpp>
 #include <boost/filesystem.hpp>
-#include "tsremuxcpp_define.h"
+#include <boost/iostreams/stream.hpp>
+
+#define readonly const
 
 namespace TsRemux {
+
+/**   tsremuxcpp original   **/
+typedef unsigned char byte;
+typedef unsigned short ushort;
+typedef unsigned int uint;
+typedef unsigned int UInt32;
+typedef signed int Int32;
+typedef unsigned long long UInt64;
+typedef signed long long Int64;
+typedef boost::posix_time::time_duration TimeSpan;
+typedef boost::shared_array<byte> pByte;
+    
+class Stream {
+ public:
+  Stream(void);
+  ~Stream(void);
+ private:
+  std::ifstream&   input_file;
+  std::ofstream&   output_file;
+};
+        
+class FileStream {
+ public:
+  FileStream(void);
+  ~FileStream(void);
+ private:
+  std::ifstream&   input_file;
+  std::ofstream&   output_file;
+};
+    
 enum TsFileType {
     UNKNOWN = 0,
     TS,