winlin

refine dvr, add comments

@@ -258,7 +258,7 @@ int SrsFlvEncoder::write_video(int32_t timestamp, char* data, int size) @@ -258,7 +258,7 @@ int SrsFlvEncoder::write_video(int32_t timestamp, char* data, int size)
258 return ret; 258 return ret;
259 } 259 }
260 260
261 -int SrsFlvEncoder::write_tag(char* header, int header_size, char* data, int size) 261 +int SrsFlvEncoder::write_tag(char* header, int header_size, char* tag, int tag_size)
262 { 262 {
263 int ret = ERROR_SUCCESS; 263 int ret = ERROR_SUCCESS;
264 264
@@ -269,7 +269,7 @@ int SrsFlvEncoder::write_tag(char* header, int header_size, char* data, int size @@ -269,7 +269,7 @@ int SrsFlvEncoder::write_tag(char* header, int header_size, char* data, int size
269 } 269 }
270 270
271 // write tag data. 271 // write tag data.
272 - if ((ret = _fs->write(data, size, NULL)) != ERROR_SUCCESS) { 272 + if ((ret = _fs->write(tag, tag_size, NULL)) != ERROR_SUCCESS) {
273 srs_error("write flv tag failed. ret=%d", ret); 273 srs_error("write flv tag failed. ret=%d", ret);
274 return ret; 274 return ret;
275 } 275 }
@@ -279,7 +279,7 @@ int SrsFlvEncoder::write_tag(char* header, int header_size, char* data, int size @@ -279,7 +279,7 @@ int SrsFlvEncoder::write_tag(char* header, int header_size, char* data, int size
279 if ((ret = tag_stream->initialize(pre_size, 4)) != ERROR_SUCCESS) { 279 if ((ret = tag_stream->initialize(pre_size, 4)) != ERROR_SUCCESS) {
280 return ret; 280 return ret;
281 } 281 }
282 - tag_stream->write_4bytes(size + header_size); 282 + tag_stream->write_4bytes(tag_size + header_size);
283 if ((ret = _fs->write(pre_size, sizeof(pre_size), NULL)) != ERROR_SUCCESS) { 283 if ((ret = _fs->write(pre_size, sizeof(pre_size), NULL)) != ERROR_SUCCESS) {
284 srs_error("write flv previous tag size failed. ret=%d", ret); 284 srs_error("write flv previous tag size failed. ret=%d", ret);
285 return ret; 285 return ret;
@@ -75,24 +75,34 @@ public: @@ -75,24 +75,34 @@ public:
75 SrsFlvEncoder(); 75 SrsFlvEncoder();
76 virtual ~SrsFlvEncoder(); 76 virtual ~SrsFlvEncoder();
77 public: 77 public:
  78 + /**
  79 + * initialize the underlayer file stream,
  80 + * user can initialize multiple times to encode multiple flv files.
  81 + */
78 virtual int initialize(SrsFileStream* fs); 82 virtual int initialize(SrsFileStream* fs);
79 public: 83 public:
80 /** 84 /**
81 * write flv header. 85 * write flv header.
82 - * user can invoke this method multiple times,  
83 - * for example, when get audio/video sequence header.  
84 - *  
85 * write following: 86 * write following:
86 * 1. E.2 The FLV header 87 * 1. E.2 The FLV header
87 * 2. PreviousTagSize0 UI32 Always 0 88 * 2. PreviousTagSize0 UI32 Always 0
88 * that is, 9+4=13bytes. 89 * that is, 9+4=13bytes.
89 */ 90 */
90 virtual int write_header(); 91 virtual int write_header();
  92 + /**
  93 + * write flv metadata.
  94 + * serialize from:
  95 + * AMF0 string: onMetaData,
  96 + * AMF0 object: the metadata object.
  97 + */
91 virtual int write_metadata(char* data, int size); 98 virtual int write_metadata(char* data, int size);
  99 + /**
  100 + * write audio/video packet.
  101 + */
92 virtual int write_audio(int32_t timestamp, char* data, int size); 102 virtual int write_audio(int32_t timestamp, char* data, int size);
93 virtual int write_video(int32_t timestamp, char* data, int size); 103 virtual int write_video(int32_t timestamp, char* data, int size);
94 private: 104 private:
95 - virtual int write_tag(char* header, int header_size, char* data, int size); 105 + virtual int write_tag(char* header, int header_size, char* tag, int tag_size);
96 }; 106 };
97 107
98 /** 108 /**