正在显示
13 个修改的文件
包含
165 行增加
和
119 行删除
@@ -121,14 +121,14 @@ int process(const char* in_flv_file, const char* out_flv_file, srs_flv_t* pic, s | @@ -121,14 +121,14 @@ int process(const char* in_flv_file, const char* out_flv_file, srs_flv_t* pic, s | ||
121 | srs_amf0_t amf0_data = NULL; | 121 | srs_amf0_t amf0_data = NULL; |
122 | srs_amf0_t filepositions = NULL; | 122 | srs_amf0_t filepositions = NULL; |
123 | 123 | ||
124 | - if ((ic = srs_flv_open_read(in_flv_file)) == NULL) { | 124 | + if ((ic = srs_flv_open(in_flv_file)) == NULL) { |
125 | ret = 2; | 125 | ret = 2; |
126 | trace("open input flv file failed. ret=%d", ret); | 126 | trace("open input flv file failed. ret=%d", ret); |
127 | return ret; | 127 | return ret; |
128 | } | 128 | } |
129 | *pic = ic; | 129 | *pic = ic; |
130 | 130 | ||
131 | - if ((oc = srs_flv_open_write(out_flv_file)) == NULL) { | 131 | + if ((oc = srs_flv_open(out_flv_file)) == NULL) { |
132 | ret = 2; | 132 | ret = 2; |
133 | trace("open output flv file failed. ret=%d", ret); | 133 | trace("open output flv file failed. ret=%d", ret); |
134 | return ret; | 134 | return ret; |
@@ -64,7 +64,7 @@ int main(int argc, char** argv) | @@ -64,7 +64,7 @@ int main(int argc, char** argv) | ||
64 | trace("version: %d.%d.%d", srs_version_major(), srs_version_minor(), srs_version_revision()); | 64 | trace("version: %d.%d.%d", srs_version_major(), srs_version_minor(), srs_version_revision()); |
65 | trace("input: %s", in_flv_file); | 65 | trace("input: %s", in_flv_file); |
66 | 66 | ||
67 | - if ((flv = srs_flv_open_read(in_flv_file)) == NULL) { | 67 | + if ((flv = srs_flv_open(in_flv_file)) == NULL) { |
68 | ret = 2; | 68 | ret = 2; |
69 | trace("open flv file failed. ret=%d", ret); | 69 | trace("open flv file failed. ret=%d", ret); |
70 | return ret; | 70 | return ret; |
@@ -93,7 +93,7 @@ int main(int argc, char** argv) | @@ -93,7 +93,7 @@ int main(int argc, char** argv) | ||
93 | trace("input: %s", in_flv_file); | 93 | trace("input: %s", in_flv_file); |
94 | trace("output: %s", out_rtmp_url); | 94 | trace("output: %s", out_rtmp_url); |
95 | 95 | ||
96 | - if ((flv = srs_flv_open_read(in_flv_file)) == NULL) { | 96 | + if ((flv = srs_flv_open(in_flv_file)) == NULL) { |
97 | ret = 2; | 97 | ret = 2; |
98 | trace("open flv file failed. ret=%d", ret); | 98 | trace("open flv file failed. ret=%d", ret); |
99 | return ret; | 99 | return ret; |
@@ -71,7 +71,7 @@ SrsDvrPlan::SrsDvrPlan() | @@ -71,7 +71,7 @@ SrsDvrPlan::SrsDvrPlan() | ||
71 | _req = NULL; | 71 | _req = NULL; |
72 | jitter = NULL; | 72 | jitter = NULL; |
73 | dvr_enabled = false; | 73 | dvr_enabled = false; |
74 | - fs = new SrsFileStream(); | 74 | + fs = new SrsFileWriter(); |
75 | enc = new SrsFlvEncoder(); | 75 | enc = new SrsFlvEncoder(); |
76 | segment = new SrsFlvSegment(); | 76 | segment = new SrsFlvSegment(); |
77 | jitter_algorithm = SrsRtmpJitterAlgorithmOFF; | 77 | jitter_algorithm = SrsRtmpJitterAlgorithmOFF; |
@@ -283,7 +283,7 @@ int SrsDvrPlan::flv_open(string stream, string path) | @@ -283,7 +283,7 @@ int SrsDvrPlan::flv_open(string stream, string path) | ||
283 | segment->reset(); | 283 | segment->reset(); |
284 | 284 | ||
285 | std::string tmp_file = path + ".tmp"; | 285 | std::string tmp_file = path + ".tmp"; |
286 | - if ((ret = fs->open_write(tmp_file)) != ERROR_SUCCESS) { | 286 | + if ((ret = fs->open(tmp_file)) != ERROR_SUCCESS) { |
287 | srs_error("open file stream for file %s failed. ret=%d", path.c_str(), ret); | 287 | srs_error("open file stream for file %s failed. ret=%d", path.c_str(), ret); |
288 | return ret; | 288 | return ret; |
289 | } | 289 | } |
@@ -569,8 +569,8 @@ int SrsDvrHssPlan::on_meta_data(SrsOnMetaDataPacket* metadata) | @@ -569,8 +569,8 @@ int SrsDvrHssPlan::on_meta_data(SrsOnMetaDataPacket* metadata) | ||
569 | << "/" << req->app << "/" | 569 | << "/" << req->app << "/" |
570 | << req->stream << ".header.flv"; | 570 | << req->stream << ".header.flv"; |
571 | 571 | ||
572 | - SrsFileStream fs; | ||
573 | - if ((ret = fs.open_write(path.str().c_str())) != ERROR_SUCCESS) { | 572 | + SrsFileWriter fs; |
573 | + if ((ret = fs.open(path.str().c_str())) != ERROR_SUCCESS) { | ||
574 | return ret; | 574 | return ret; |
575 | } | 575 | } |
576 | 576 |
@@ -39,7 +39,7 @@ class SrsStream; | @@ -39,7 +39,7 @@ class SrsStream; | ||
39 | class SrsRtmpJitter; | 39 | class SrsRtmpJitter; |
40 | class SrsOnMetaDataPacket; | 40 | class SrsOnMetaDataPacket; |
41 | class SrsSharedPtrMessage; | 41 | class SrsSharedPtrMessage; |
42 | -class SrsFileStream; | 42 | +class SrsFileWriter; |
43 | class SrsFlvEncoder; | 43 | class SrsFlvEncoder; |
44 | 44 | ||
45 | #include <srs_app_source.hpp> | 45 | #include <srs_app_source.hpp> |
@@ -114,7 +114,7 @@ protected: | @@ -114,7 +114,7 @@ protected: | ||
114 | SrsFlvSegment* segment; | 114 | SrsFlvSegment* segment; |
115 | SrsRequest* _req; | 115 | SrsRequest* _req; |
116 | bool dvr_enabled; | 116 | bool dvr_enabled; |
117 | - SrsFileStream* fs; | 117 | + SrsFileWriter* fs; |
118 | public: | 118 | public: |
119 | SrsDvrPlan(); | 119 | SrsDvrPlan(); |
120 | virtual ~SrsDvrPlan(); | 120 | virtual ~SrsDvrPlan(); |
@@ -300,10 +300,10 @@ int SrsHttpVhost::response_flv_file2(SrsSocket* skt, SrsHttpMessage* req, string | @@ -300,10 +300,10 @@ int SrsHttpVhost::response_flv_file2(SrsSocket* skt, SrsHttpMessage* req, string | ||
300 | { | 300 | { |
301 | int ret = ERROR_SUCCESS; | 301 | int ret = ERROR_SUCCESS; |
302 | 302 | ||
303 | - SrsFileStream fs; | 303 | + SrsFileReader fs; |
304 | 304 | ||
305 | // open flv file | 305 | // open flv file |
306 | - if ((ret = fs.open_read(fullpath)) != ERROR_SUCCESS) { | 306 | + if ((ret = fs.open(fullpath)) != ERROR_SUCCESS) { |
307 | return ret; | 307 | return ret; |
308 | } | 308 | } |
309 | 309 |
@@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
31 | // current release version | 31 | // current release version |
32 | #define VERSION_MAJOR "0" | 32 | #define VERSION_MAJOR "0" |
33 | #define VERSION_MINOR "9" | 33 | #define VERSION_MINOR "9" |
34 | -#define VERSION_REVISION "141" | 34 | +#define VERSION_REVISION "142" |
35 | #define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION | 35 | #define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION |
36 | // server info. | 36 | // server info. |
37 | #define RTMP_SIG_SRS_KEY "SRS" | 37 | #define RTMP_SIG_SRS_KEY "SRS" |
@@ -37,17 +37,16 @@ using namespace std; | @@ -37,17 +37,16 @@ using namespace std; | ||
37 | #define SRS_FLV_TAG_HEADER_SIZE 11 | 37 | #define SRS_FLV_TAG_HEADER_SIZE 11 |
38 | #define SRS_FLV_PREVIOUS_TAG_SIZE 4 | 38 | #define SRS_FLV_PREVIOUS_TAG_SIZE 4 |
39 | 39 | ||
40 | -SrsFileStream::SrsFileStream() | 40 | +SrsFileWriter::SrsFileWriter() |
41 | { | 41 | { |
42 | - fd = -1; | ||
43 | } | 42 | } |
44 | 43 | ||
45 | -SrsFileStream::~SrsFileStream() | 44 | +SrsFileWriter::~SrsFileWriter() |
46 | { | 45 | { |
47 | close(); | 46 | close(); |
48 | } | 47 | } |
49 | 48 | ||
50 | -int SrsFileStream::open_write(string file) | 49 | +int SrsFileWriter::open(string file) |
51 | { | 50 | { |
52 | int ret = ERROR_SUCCESS; | 51 | int ret = ERROR_SUCCESS; |
53 | 52 | ||
@@ -71,7 +70,63 @@ int SrsFileStream::open_write(string file) | @@ -71,7 +70,63 @@ int SrsFileStream::open_write(string file) | ||
71 | return ret; | 70 | return ret; |
72 | } | 71 | } |
73 | 72 | ||
74 | -int SrsFileStream::open_read(string file) | 73 | +void SrsFileWriter::close() |
74 | +{ | ||
75 | + int ret = ERROR_SUCCESS; | ||
76 | + | ||
77 | + if (fd < 0) { | ||
78 | + return; | ||
79 | + } | ||
80 | + | ||
81 | + if (::close(fd) < 0) { | ||
82 | + ret = ERROR_SYSTEM_FILE_CLOSE; | ||
83 | + srs_error("close file %s failed. ret=%d", _file.c_str(), ret); | ||
84 | + return; | ||
85 | + } | ||
86 | + fd = -1; | ||
87 | + | ||
88 | + return; | ||
89 | +} | ||
90 | + | ||
91 | +bool SrsFileWriter::is_open() | ||
92 | +{ | ||
93 | + return fd > 0; | ||
94 | +} | ||
95 | + | ||
96 | +int64_t SrsFileWriter::tellg() | ||
97 | +{ | ||
98 | + return (int64_t)::lseek(fd, 0, SEEK_CUR); | ||
99 | +} | ||
100 | + | ||
101 | +int SrsFileWriter::write(void* buf, size_t count, ssize_t* pnwrite) | ||
102 | +{ | ||
103 | + int ret = ERROR_SUCCESS; | ||
104 | + | ||
105 | + ssize_t nwrite; | ||
106 | + if ((nwrite = ::write(fd, buf, count)) < 0) { | ||
107 | + ret = ERROR_SYSTEM_FILE_WRITE; | ||
108 | + srs_error("write to file %s failed. ret=%d", _file.c_str(), ret); | ||
109 | + return ret; | ||
110 | + } | ||
111 | + | ||
112 | + if (pnwrite != NULL) { | ||
113 | + *pnwrite = nwrite; | ||
114 | + } | ||
115 | + | ||
116 | + return ret; | ||
117 | +} | ||
118 | + | ||
119 | +SrsFileReader::SrsFileReader() | ||
120 | +{ | ||
121 | + fd = -1; | ||
122 | +} | ||
123 | + | ||
124 | +SrsFileReader::~SrsFileReader() | ||
125 | +{ | ||
126 | + close(); | ||
127 | +} | ||
128 | + | ||
129 | +int SrsFileReader::open(string file) | ||
75 | { | 130 | { |
76 | int ret = ERROR_SUCCESS; | 131 | int ret = ERROR_SUCCESS; |
77 | 132 | ||
@@ -92,7 +147,7 @@ int SrsFileStream::open_read(string file) | @@ -92,7 +147,7 @@ int SrsFileStream::open_read(string file) | ||
92 | return ret; | 147 | return ret; |
93 | } | 148 | } |
94 | 149 | ||
95 | -void SrsFileStream::close() | 150 | +void SrsFileReader::close() |
96 | { | 151 | { |
97 | int ret = ERROR_SUCCESS; | 152 | int ret = ERROR_SUCCESS; |
98 | 153 | ||
@@ -110,12 +165,30 @@ void SrsFileStream::close() | @@ -110,12 +165,30 @@ void SrsFileStream::close() | ||
110 | return; | 165 | return; |
111 | } | 166 | } |
112 | 167 | ||
113 | -bool SrsFileStream::is_open() | 168 | +int64_t SrsFileReader::tellg() |
114 | { | 169 | { |
115 | - return fd > 0; | 170 | + return (int64_t)::lseek(fd, 0, SEEK_CUR); |
171 | +} | ||
172 | + | ||
173 | +void SrsFileReader::skip(int64_t size) | ||
174 | +{ | ||
175 | + ::lseek(fd, size, SEEK_CUR); | ||
176 | +} | ||
177 | + | ||
178 | +int64_t SrsFileReader::lseek(int64_t offset) | ||
179 | +{ | ||
180 | + return (int64_t)::lseek(fd, offset, SEEK_SET); | ||
181 | +} | ||
182 | + | ||
183 | +int64_t SrsFileReader::filesize() | ||
184 | +{ | ||
185 | + int64_t cur = tellg(); | ||
186 | + int64_t size = (int64_t)::lseek(fd, 0, SEEK_END); | ||
187 | + ::lseek(fd, cur, SEEK_SET); | ||
188 | + return size; | ||
116 | } | 189 | } |
117 | 190 | ||
118 | -int SrsFileStream::read(void* buf, size_t count, ssize_t* pnread) | 191 | +int SrsFileReader::read(void* buf, size_t count, ssize_t* pnread) |
119 | { | 192 | { |
120 | int ret = ERROR_SUCCESS; | 193 | int ret = ERROR_SUCCESS; |
121 | 194 | ||
@@ -138,47 +211,6 @@ int SrsFileStream::read(void* buf, size_t count, ssize_t* pnread) | @@ -138,47 +211,6 @@ int SrsFileStream::read(void* buf, size_t count, ssize_t* pnread) | ||
138 | return ret; | 211 | return ret; |
139 | } | 212 | } |
140 | 213 | ||
141 | -int SrsFileStream::write(void* buf, size_t count, ssize_t* pnwrite) | ||
142 | -{ | ||
143 | - int ret = ERROR_SUCCESS; | ||
144 | - | ||
145 | - ssize_t nwrite; | ||
146 | - if ((nwrite = ::write(fd, buf, count)) < 0) { | ||
147 | - ret = ERROR_SYSTEM_FILE_WRITE; | ||
148 | - srs_error("write to file %s failed. ret=%d", _file.c_str(), ret); | ||
149 | - return ret; | ||
150 | - } | ||
151 | - | ||
152 | - if (pnwrite != NULL) { | ||
153 | - *pnwrite = nwrite; | ||
154 | - } | ||
155 | - | ||
156 | - return ret; | ||
157 | -} | ||
158 | - | ||
159 | -int64_t SrsFileStream::tellg() | ||
160 | -{ | ||
161 | - return (int64_t)::lseek(fd, 0, SEEK_CUR); | ||
162 | -} | ||
163 | - | ||
164 | -int64_t SrsFileStream::lseek(int64_t offset) | ||
165 | -{ | ||
166 | - return (int64_t)::lseek(fd, offset, SEEK_SET); | ||
167 | -} | ||
168 | - | ||
169 | -int64_t SrsFileStream::filesize() | ||
170 | -{ | ||
171 | - int64_t cur = tellg(); | ||
172 | - int64_t size = (int64_t)::lseek(fd, 0, SEEK_END); | ||
173 | - ::lseek(fd, cur, SEEK_SET); | ||
174 | - return size; | ||
175 | -} | ||
176 | - | ||
177 | -void SrsFileStream::skip(int64_t size) | ||
178 | -{ | ||
179 | - ::lseek(fd, size, SEEK_CUR); | ||
180 | -} | ||
181 | - | ||
182 | SrsFlvEncoder::SrsFlvEncoder() | 214 | SrsFlvEncoder::SrsFlvEncoder() |
183 | { | 215 | { |
184 | _fs = NULL; | 216 | _fs = NULL; |
@@ -190,7 +222,7 @@ SrsFlvEncoder::~SrsFlvEncoder() | @@ -190,7 +222,7 @@ SrsFlvEncoder::~SrsFlvEncoder() | ||
190 | srs_freep(tag_stream); | 222 | srs_freep(tag_stream); |
191 | } | 223 | } |
192 | 224 | ||
193 | -int SrsFlvEncoder::initialize(SrsFileStream* fs) | 225 | +int SrsFlvEncoder::initialize(SrsFileWriter* fs) |
194 | { | 226 | { |
195 | int ret = ERROR_SUCCESS; | 227 | int ret = ERROR_SUCCESS; |
196 | 228 | ||
@@ -377,7 +409,7 @@ SrsFlvFastDecoder::~SrsFlvFastDecoder() | @@ -377,7 +409,7 @@ SrsFlvFastDecoder::~SrsFlvFastDecoder() | ||
377 | srs_freep(tag_stream); | 409 | srs_freep(tag_stream); |
378 | } | 410 | } |
379 | 411 | ||
380 | -int SrsFlvFastDecoder::initialize(SrsFileStream* fs) | 412 | +int SrsFlvFastDecoder::initialize(SrsFileReader* fs) |
381 | { | 413 | { |
382 | int ret = ERROR_SUCCESS; | 414 | int ret = ERROR_SUCCESS; |
383 | 415 | ||
@@ -538,7 +570,7 @@ SrsFlvDecoder::~SrsFlvDecoder() | @@ -538,7 +570,7 @@ SrsFlvDecoder::~SrsFlvDecoder() | ||
538 | srs_freep(tag_stream); | 570 | srs_freep(tag_stream); |
539 | } | 571 | } |
540 | 572 | ||
541 | -int SrsFlvDecoder::initialize(SrsFileStream* fs) | 573 | +int SrsFlvDecoder::initialize(SrsFileReader* fs) |
542 | { | 574 | { |
543 | int ret = ERROR_SUCCESS; | 575 | int ret = ERROR_SUCCESS; |
544 | 576 |
@@ -34,37 +34,47 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -34,37 +34,47 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
34 | class SrsStream; | 34 | class SrsStream; |
35 | 35 | ||
36 | /** | 36 | /** |
37 | -* file stream to read/write file. | 37 | +* file writer, to write to file. |
38 | */ | 38 | */ |
39 | -class SrsFileStream | 39 | +class SrsFileWriter |
40 | { | 40 | { |
41 | private: | 41 | private: |
42 | std::string _file; | 42 | std::string _file; |
43 | int fd; | 43 | int fd; |
44 | public: | 44 | public: |
45 | - SrsFileStream(); | ||
46 | - virtual ~SrsFileStream(); | 45 | + SrsFileWriter(); |
46 | + virtual ~SrsFileWriter(); | ||
47 | public: | 47 | public: |
48 | - virtual int open_write(std::string file); | ||
49 | - virtual int open_read(std::string file); | 48 | + virtual int open(std::string file); |
50 | virtual void close(); | 49 | virtual void close(); |
50 | +public: | ||
51 | virtual bool is_open(); | 51 | virtual bool is_open(); |
52 | + virtual int64_t tellg(); | ||
52 | public: | 53 | public: |
53 | - /** | ||
54 | - * @param pnread, return the read size. NULL to ignore. | ||
55 | - */ | ||
56 | - virtual int read(void* buf, size_t count, ssize_t* pnread); | ||
57 | - /** | ||
58 | - * @param pnwrite, return the write size. NULL to ignore. | ||
59 | - */ | ||
60 | virtual int write(void* buf, size_t count, ssize_t* pnwrite); | 54 | virtual int write(void* buf, size_t count, ssize_t* pnwrite); |
61 | - /** | ||
62 | - * tell current offset of stream. | ||
63 | - */ | 55 | +}; |
56 | + | ||
57 | +/** | ||
58 | +* file reader, to read from file. | ||
59 | +*/ | ||
60 | +class SrsFileReader | ||
61 | +{ | ||
62 | +private: | ||
63 | + std::string _file; | ||
64 | + int fd; | ||
65 | +public: | ||
66 | + SrsFileReader(); | ||
67 | + virtual ~SrsFileReader(); | ||
68 | +public: | ||
69 | + virtual int open(std::string file); | ||
70 | + virtual void close(); | ||
71 | +public: | ||
64 | virtual int64_t tellg(); | 72 | virtual int64_t tellg(); |
73 | + virtual void skip(int64_t size); | ||
65 | virtual int64_t lseek(int64_t offset); | 74 | virtual int64_t lseek(int64_t offset); |
66 | virtual int64_t filesize(); | 75 | virtual int64_t filesize(); |
67 | - virtual void skip(int64_t size); | 76 | +public: |
77 | + virtual int read(void* buf, size_t count, ssize_t* pnread); | ||
68 | }; | 78 | }; |
69 | 79 | ||
70 | /** | 80 | /** |
@@ -73,7 +83,7 @@ public: | @@ -73,7 +83,7 @@ public: | ||
73 | class SrsFlvEncoder | 83 | class SrsFlvEncoder |
74 | { | 84 | { |
75 | private: | 85 | private: |
76 | - SrsFileStream* _fs; | 86 | + SrsFileWriter* _fs; |
77 | private: | 87 | private: |
78 | SrsStream* tag_stream; | 88 | SrsStream* tag_stream; |
79 | public: | 89 | public: |
@@ -84,7 +94,7 @@ public: | @@ -84,7 +94,7 @@ public: | ||
84 | * initialize the underlayer file stream, | 94 | * initialize the underlayer file stream, |
85 | * user can initialize multiple times to encode multiple flv files. | 95 | * user can initialize multiple times to encode multiple flv files. |
86 | */ | 96 | */ |
87 | - virtual int initialize(SrsFileStream* fs); | 97 | + virtual int initialize(SrsFileWriter* fs); |
88 | public: | 98 | public: |
89 | /** | 99 | /** |
90 | * write flv header. | 100 | * write flv header. |
@@ -122,7 +132,7 @@ private: | @@ -122,7 +132,7 @@ private: | ||
122 | class SrsFlvFastDecoder | 132 | class SrsFlvFastDecoder |
123 | { | 133 | { |
124 | private: | 134 | private: |
125 | - SrsFileStream* _fs; | 135 | + SrsFileReader* _fs; |
126 | private: | 136 | private: |
127 | SrsStream* tag_stream; | 137 | SrsStream* tag_stream; |
128 | public: | 138 | public: |
@@ -133,7 +143,7 @@ public: | @@ -133,7 +143,7 @@ public: | ||
133 | * initialize the underlayer file stream, | 143 | * initialize the underlayer file stream, |
134 | * user can initialize multiple times to encode multiple flv files. | 144 | * user can initialize multiple times to encode multiple flv files. |
135 | */ | 145 | */ |
136 | - virtual int initialize(SrsFileStream* fs); | 146 | + virtual int initialize(SrsFileReader* fs); |
137 | public: | 147 | public: |
138 | /** | 148 | /** |
139 | * read the flv header and size. | 149 | * read the flv header and size. |
@@ -156,7 +166,7 @@ public: | @@ -156,7 +166,7 @@ public: | ||
156 | class SrsFlvDecoder | 166 | class SrsFlvDecoder |
157 | { | 167 | { |
158 | private: | 168 | private: |
159 | - SrsFileStream* _fs; | 169 | + SrsFileReader* _fs; |
160 | private: | 170 | private: |
161 | SrsStream* tag_stream; | 171 | SrsStream* tag_stream; |
162 | public: | 172 | public: |
@@ -167,7 +177,7 @@ public: | @@ -167,7 +177,7 @@ public: | ||
167 | * initialize the underlayer file stream, | 177 | * initialize the underlayer file stream, |
168 | * user can initialize multiple times to decode multiple flv files. | 178 | * user can initialize multiple times to decode multiple flv files. |
169 | */ | 179 | */ |
170 | - virtual int initialize(SrsFileStream* fs); | 180 | + virtual int initialize(SrsFileReader* fs); |
171 | public: | 181 | public: |
172 | virtual int read_header(char header[9]); | 182 | virtual int read_header(char header[9]); |
173 | virtual int read_tag_header(char* ptype, int32_t* pdata_size, u_int32_t* ptime); | 183 | virtual int read_tag_header(char* ptype, int32_t* pdata_size, u_int32_t* ptime); |
@@ -461,52 +461,34 @@ int64_t srs_get_nrecv_bytes(srs_rtmp_t rtmp) | @@ -461,52 +461,34 @@ int64_t srs_get_nrecv_bytes(srs_rtmp_t rtmp) | ||
461 | 461 | ||
462 | struct FlvContext | 462 | struct FlvContext |
463 | { | 463 | { |
464 | - SrsFileStream fs; | 464 | + SrsFileReader reader; |
465 | + SrsFileWriter writer; | ||
465 | SrsFlvEncoder enc; | 466 | SrsFlvEncoder enc; |
466 | SrsFlvDecoder dec; | 467 | SrsFlvDecoder dec; |
467 | }; | 468 | }; |
468 | 469 | ||
469 | -srs_flv_t srs_flv_open_read(const char* file) | 470 | +srs_flv_t srs_flv_open(const char* file) |
470 | { | 471 | { |
471 | int ret = ERROR_SUCCESS; | 472 | int ret = ERROR_SUCCESS; |
472 | 473 | ||
473 | FlvContext* flv = new FlvContext(); | 474 | FlvContext* flv = new FlvContext(); |
474 | 475 | ||
475 | - if ((ret = flv->fs.open_read(file)) != ERROR_SUCCESS) { | 476 | + if ((ret = flv->reader.open(file)) != ERROR_SUCCESS) { |
476 | srs_freep(flv); | 477 | srs_freep(flv); |
477 | return NULL; | 478 | return NULL; |
478 | } | 479 | } |
479 | 480 | ||
480 | - if ((ret = flv->enc.initialize(&flv->fs)) != ERROR_SUCCESS) { | 481 | + if ((ret = flv->dec.initialize(&flv->reader)) != ERROR_SUCCESS) { |
481 | srs_freep(flv); | 482 | srs_freep(flv); |
482 | return NULL; | 483 | return NULL; |
483 | } | 484 | } |
484 | 485 | ||
485 | - if ((ret = flv->dec.initialize(&flv->fs)) != ERROR_SUCCESS) { | 486 | + if ((ret = flv->writer.open(file)) != ERROR_SUCCESS) { |
486 | srs_freep(flv); | 487 | srs_freep(flv); |
487 | return NULL; | 488 | return NULL; |
488 | } | 489 | } |
489 | 490 | ||
490 | - return flv; | ||
491 | -} | ||
492 | - | ||
493 | -srs_flv_t srs_flv_open_write(const char* file) | ||
494 | -{ | ||
495 | - int ret = ERROR_SUCCESS; | ||
496 | - | ||
497 | - FlvContext* flv = new FlvContext(); | ||
498 | - | ||
499 | - if ((ret = flv->fs.open_write(file)) != ERROR_SUCCESS) { | ||
500 | - srs_freep(flv); | ||
501 | - return NULL; | ||
502 | - } | ||
503 | - | ||
504 | - if ((ret = flv->enc.initialize(&flv->fs)) != ERROR_SUCCESS) { | ||
505 | - srs_freep(flv); | ||
506 | - return NULL; | ||
507 | - } | ||
508 | - | ||
509 | - if ((ret = flv->dec.initialize(&flv->fs)) != ERROR_SUCCESS) { | 491 | + if ((ret = flv->enc.initialize(&flv->writer)) != ERROR_SUCCESS) { |
510 | srs_freep(flv); | 492 | srs_freep(flv); |
511 | return NULL; | 493 | return NULL; |
512 | } | 494 | } |
@@ -602,13 +584,13 @@ int srs_flv_size_tag(int data_size) | @@ -602,13 +584,13 @@ int srs_flv_size_tag(int data_size) | ||
602 | int64_t srs_flv_tellg(srs_flv_t flv) | 584 | int64_t srs_flv_tellg(srs_flv_t flv) |
603 | { | 585 | { |
604 | FlvContext* context = (FlvContext*)flv; | 586 | FlvContext* context = (FlvContext*)flv; |
605 | - return context->fs.tellg(); | 587 | + return context->reader.tellg(); |
606 | } | 588 | } |
607 | 589 | ||
608 | void srs_flv_lseek(srs_flv_t flv, int64_t offset) | 590 | void srs_flv_lseek(srs_flv_t flv, int64_t offset) |
609 | { | 591 | { |
610 | FlvContext* context = (FlvContext*)flv; | 592 | FlvContext* context = (FlvContext*)flv; |
611 | - context->fs.lseek(offset); | 593 | + context->reader.lseek(offset); |
612 | } | 594 | } |
613 | 595 | ||
614 | flv_bool srs_flv_is_eof(int error_code) | 596 | flv_bool srs_flv_is_eof(int error_code) |
@@ -165,8 +165,7 @@ int64_t srs_get_nrecv_bytes(srs_rtmp_t rtmp); | @@ -165,8 +165,7 @@ int64_t srs_get_nrecv_bytes(srs_rtmp_t rtmp); | ||
165 | */ | 165 | */ |
166 | typedef void* srs_flv_t; | 166 | typedef void* srs_flv_t; |
167 | typedef int flv_bool; | 167 | typedef int flv_bool; |
168 | -srs_flv_t srs_flv_open_read(const char* file); | ||
169 | -srs_flv_t srs_flv_open_write(const char* file); | 168 | +srs_flv_t srs_flv_open(const char* file); |
170 | void srs_flv_close(srs_flv_t flv); | 169 | void srs_flv_close(srs_flv_t flv); |
171 | /* read the flv header. 9bytes header. drop the 4bytes zero previous tag size */ | 170 | /* read the flv header. 9bytes header. drop the 4bytes zero previous tag size */ |
172 | int srs_flv_read_header(srs_flv_t flv, char header[9]); | 171 | int srs_flv_read_header(srs_flv_t flv, char header[9]); |
@@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
25 | using namespace std; | 25 | using namespace std; |
26 | 26 | ||
27 | #include <srs_kernel_error.hpp> | 27 | #include <srs_kernel_error.hpp> |
28 | +#include <srs_kernel_codec.hpp> | ||
28 | 29 | ||
29 | VOID TEST(KernelCodecTest, IsKeyFrame) | 30 | VOID TEST(KernelCodecTest, IsKeyFrame) |
30 | { | 31 | { |
@@ -30,6 +30,28 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -30,6 +30,28 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
30 | #include <srs_utest.hpp> | 30 | #include <srs_utest.hpp> |
31 | 31 | ||
32 | #include <string> | 32 | #include <string> |
33 | -#include <srs_kernel_codec.hpp> | 33 | +#include <srs_kernel_flv.hpp> |
34 | + | ||
35 | +/* | ||
36 | +class MockSrsFileStream : public SrsFileStream | ||
37 | +{ | ||
38 | +public: | ||
39 | + MockSrsFileStream(); | ||
40 | + virtual ~MockSrsFileStream(); | ||
41 | +public: | ||
42 | +public: | ||
43 | + virtual int open_write(std::string file); | ||
44 | + virtual int open_read(std::string file); | ||
45 | + virtual void close(); | ||
46 | + virtual bool is_open(); | ||
47 | +public: | ||
48 | + virtual int read(void* buf, size_t count, ssize_t* pnread); | ||
49 | + virtual int write(void* buf, size_t count, ssize_t* pnwrite); | ||
50 | + virtual int64_t tellg(); | ||
51 | + virtual int64_t lseek(int64_t offset); | ||
52 | + virtual int64_t filesize(); | ||
53 | + virtual void skip(int64_t size); | ||
54 | +}; | ||
55 | +*/ | ||
34 | 56 | ||
35 | #endif | 57 | #endif |
-
请 注册 或 登录 后发表评论