OSDN Git Service

セクションクラスを追加とその他いろいろ修正
[tsparser/tsparser.git] / src / TS / descriptor.cpp
index 3c519f3..839d6ae 100644 (file)
@@ -52,6 +52,30 @@ Descriptor* DescriptorParser::parse( const uint8_t *data, const uint16_t len, ui
        }
 
        return p;
+}\r
+\r
+Descriptor* DescriptorParser::clone( const Descriptor *des)\r
+{\r
+       int16_t         ret;\r
+       Descriptor      *p = NULL;\r
+\r
+       p = create( des->descriptor_tag, des->descriptor_length);\r
+       if( !p) {\r
+               return p;\r
+       }\r
+\r
+       ret = p->parse( des->descriptor.begin(), des->descriptor.size());\r
+       if( ret < 0) {\r
+               fprintf( stderr, "Descriptor clone error tag = 0x%02X", des->descriptor_tag);\r
+               delete p;\r
+               p = NULL;\r
+       }\r
+       else if( ret != des->descriptor_length) {\r
+               fprintf( stderr, "clone des overflow tag = 0x%02X, len = %d, ret = %d\n", des->descriptor_tag, des->descriptor_length, ret);\r
+               delete p;\r
+               p = NULL;\r
+       }\r
+       return p;\r
 }
 
 Descriptor* DescriptorParser::create( const uint8_t tag, const uint8_t length)