正在显示
7 个修改的文件
包含
57 行增加
和
54 行删除
| @@ -252,7 +252,7 @@ int SrsFileReader::read(void* buf, size_t count, ssize_t* pnread) | @@ -252,7 +252,7 @@ int SrsFileReader::read(void* buf, size_t count, ssize_t* pnread) | ||
| 252 | // TODO: FIXME: use st_read. | 252 | // TODO: FIXME: use st_read. |
| 253 | if ((nread = ::read(fd, buf, count)) < 0) { | 253 | if ((nread = ::read(fd, buf, count)) < 0) { |
| 254 | ret = ERROR_SYSTEM_FILE_READ; | 254 | ret = ERROR_SYSTEM_FILE_READ; |
| 255 | - srs_error("read from file %s failed. ret=%d", _file.c_str(), ret); | 255 | + srs_error("read from file %s failed. ret=%d", path.c_str(), ret); |
| 256 | return ret; | 256 | return ret; |
| 257 | } | 257 | } |
| 258 | 258 |
| @@ -40,7 +40,7 @@ using namespace std; | @@ -40,7 +40,7 @@ using namespace std; | ||
| 40 | 40 | ||
| 41 | SrsMp3Encoder::SrsMp3Encoder() | 41 | SrsMp3Encoder::SrsMp3Encoder() |
| 42 | { | 42 | { |
| 43 | - _fs = NULL; | 43 | + writer = NULL; |
| 44 | tag_stream = new SrsStream(); | 44 | tag_stream = new SrsStream(); |
| 45 | } | 45 | } |
| 46 | 46 | ||
| @@ -49,19 +49,19 @@ SrsMp3Encoder::~SrsMp3Encoder() | @@ -49,19 +49,19 @@ SrsMp3Encoder::~SrsMp3Encoder() | ||
| 49 | srs_freep(tag_stream); | 49 | srs_freep(tag_stream); |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | -int SrsMp3Encoder::initialize(SrsFileWriter* fs) | 52 | +int SrsMp3Encoder::initialize(SrsFileWriter* fw) |
| 53 | { | 53 | { |
| 54 | int ret = ERROR_SUCCESS; | 54 | int ret = ERROR_SUCCESS; |
| 55 | 55 | ||
| 56 | - srs_assert(fs); | 56 | + srs_assert(fw); |
| 57 | 57 | ||
| 58 | - if (!fs->is_open()) { | 58 | + if (!fw->is_open()) { |
| 59 | ret = ERROR_KERNEL_MP3_STREAM_CLOSED; | 59 | ret = ERROR_KERNEL_MP3_STREAM_CLOSED; |
| 60 | srs_warn("stream is not open for encoder. ret=%d", ret); | 60 | srs_warn("stream is not open for encoder. ret=%d", ret); |
| 61 | return ret; | 61 | return ret; |
| 62 | } | 62 | } |
| 63 | 63 | ||
| 64 | - _fs = fs; | 64 | + writer = fw; |
| 65 | 65 | ||
| 66 | return ret; | 66 | return ret; |
| 67 | } | 67 | } |
| @@ -78,7 +78,7 @@ int SrsMp3Encoder::write_header() | @@ -78,7 +78,7 @@ int SrsMp3Encoder::write_header() | ||
| 78 | (char)0x00, (char)0x00, (char)0x00, (char)0x00, // FrameSize | 78 | (char)0x00, (char)0x00, (char)0x00, (char)0x00, // FrameSize |
| 79 | (char)0x00, (char)0x00 // Flags | 79 | (char)0x00, (char)0x00 // Flags |
| 80 | }; | 80 | }; |
| 81 | - return _fs->write(id3, sizeof(id3), NULL); | 81 | + return writer->write(id3, sizeof(id3), NULL); |
| 82 | } | 82 | } |
| 83 | 83 | ||
| 84 | int SrsMp3Encoder::write_audio(int64_t timestamp, char* data, int size) | 84 | int SrsMp3Encoder::write_audio(int64_t timestamp, char* data, int size) |
| @@ -122,6 +122,6 @@ int SrsMp3Encoder::write_audio(int64_t timestamp, char* data, int size) | @@ -122,6 +122,6 @@ int SrsMp3Encoder::write_audio(int64_t timestamp, char* data, int size) | ||
| 122 | return ret; | 122 | return ret; |
| 123 | } | 123 | } |
| 124 | 124 | ||
| 125 | - return _fs->write(data + stream->pos(), size - stream->pos(), NULL); | 125 | + return writer->write(data + stream->pos(), size - stream->pos(), NULL); |
| 126 | } | 126 | } |
| 127 | 127 |
| @@ -33,7 +33,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -33,7 +33,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 33 | 33 | ||
| 34 | class SrsStream; | 34 | class SrsStream; |
| 35 | class SrsFileWriter; | 35 | class SrsFileWriter; |
| 36 | -class SrsFileReader; | ||
| 37 | 36 | ||
| 38 | /** | 37 | /** |
| 39 | * encode data to aac file. | 38 | * encode data to aac file. |
| @@ -41,7 +40,7 @@ class SrsFileReader; | @@ -41,7 +40,7 @@ class SrsFileReader; | ||
| 41 | class SrsMp3Encoder | 40 | class SrsMp3Encoder |
| 42 | { | 41 | { |
| 43 | private: | 42 | private: |
| 44 | - SrsFileWriter* _fs; | 43 | + SrsFileWriter* writer; |
| 45 | private: | 44 | private: |
| 46 | SrsStream* tag_stream; | 45 | SrsStream* tag_stream; |
| 47 | public: | 46 | public: |
| @@ -51,9 +50,9 @@ public: | @@ -51,9 +50,9 @@ public: | ||
| 51 | /** | 50 | /** |
| 52 | * initialize the underlayer file stream. | 51 | * initialize the underlayer file stream. |
| 53 | * @remark user can initialize multiple times to encode multiple mp3 files. | 52 | * @remark user can initialize multiple times to encode multiple mp3 files. |
| 54 | - * @remark, user must free the fs, mp3 encoder never close/free it. | 53 | + * @remark, user must free the @param fw, mp3 encoder never close/free it. |
| 55 | */ | 54 | */ |
| 56 | - virtual int initialize(SrsFileWriter* fs); | 55 | + virtual int initialize(SrsFileWriter* fw); |
| 57 | public: | 56 | public: |
| 58 | /** | 57 | /** |
| 59 | * write mp3 id3 v2.3 header. | 58 | * write mp3 id3 v2.3 header. |
| @@ -31,8 +31,8 @@ using namespace std; | @@ -31,8 +31,8 @@ using namespace std; | ||
| 31 | 31 | ||
| 32 | SrsStream::SrsStream() | 32 | SrsStream::SrsStream() |
| 33 | { | 33 | { |
| 34 | - p = _bytes = NULL; | ||
| 35 | - _size = 0; | 34 | + p = bytes = NULL; |
| 35 | + nb_bytes = 0; | ||
| 36 | 36 | ||
| 37 | // TODO: support both little and big endian. | 37 | // TODO: support both little and big endian. |
| 38 | srs_assert(srs_is_little_endian()); | 38 | srs_assert(srs_is_little_endian()); |
| @@ -42,24 +42,24 @@ SrsStream::~SrsStream() | @@ -42,24 +42,24 @@ SrsStream::~SrsStream() | ||
| 42 | { | 42 | { |
| 43 | } | 43 | } |
| 44 | 44 | ||
| 45 | -int SrsStream::initialize(char* bytes, int size) | 45 | +int SrsStream::initialize(char* b, int nb) |
| 46 | { | 46 | { |
| 47 | int ret = ERROR_SUCCESS; | 47 | int ret = ERROR_SUCCESS; |
| 48 | 48 | ||
| 49 | - if (!bytes) { | 49 | + if (!b) { |
| 50 | ret = ERROR_KERNEL_STREAM_INIT; | 50 | ret = ERROR_KERNEL_STREAM_INIT; |
| 51 | srs_error("stream param bytes must not be NULL. ret=%d", ret); | 51 | srs_error("stream param bytes must not be NULL. ret=%d", ret); |
| 52 | return ret; | 52 | return ret; |
| 53 | } | 53 | } |
| 54 | 54 | ||
| 55 | - if (size <= 0) { | 55 | + if (nb <= 0) { |
| 56 | ret = ERROR_KERNEL_STREAM_INIT; | 56 | ret = ERROR_KERNEL_STREAM_INIT; |
| 57 | srs_error("stream param size must be positive. ret=%d", ret); | 57 | srs_error("stream param size must be positive. ret=%d", ret); |
| 58 | return ret; | 58 | return ret; |
| 59 | } | 59 | } |
| 60 | 60 | ||
| 61 | - _size = size; | ||
| 62 | - p = _bytes = bytes; | 61 | + nb_bytes = nb; |
| 62 | + p = bytes = b; | ||
| 63 | srs_info("init stream ok, size=%d", size); | 63 | srs_info("init stream ok, size=%d", size); |
| 64 | 64 | ||
| 65 | return ret; | 65 | return ret; |
| @@ -67,29 +67,29 @@ int SrsStream::initialize(char* bytes, int size) | @@ -67,29 +67,29 @@ int SrsStream::initialize(char* bytes, int size) | ||
| 67 | 67 | ||
| 68 | char* SrsStream::data() | 68 | char* SrsStream::data() |
| 69 | { | 69 | { |
| 70 | - return _bytes; | 70 | + return bytes; |
| 71 | } | 71 | } |
| 72 | 72 | ||
| 73 | int SrsStream::size() | 73 | int SrsStream::size() |
| 74 | { | 74 | { |
| 75 | - return _size; | 75 | + return nb_bytes; |
| 76 | } | 76 | } |
| 77 | 77 | ||
| 78 | int SrsStream::pos() | 78 | int SrsStream::pos() |
| 79 | { | 79 | { |
| 80 | - return p - _bytes; | 80 | + return (int)(p - bytes); |
| 81 | } | 81 | } |
| 82 | 82 | ||
| 83 | bool SrsStream::empty() | 83 | bool SrsStream::empty() |
| 84 | { | 84 | { |
| 85 | - return !_bytes || (p >= _bytes + _size); | 85 | + return !bytes || (p >= bytes + nb_bytes); |
| 86 | } | 86 | } |
| 87 | 87 | ||
| 88 | bool SrsStream::require(int required_size) | 88 | bool SrsStream::require(int required_size) |
| 89 | { | 89 | { |
| 90 | srs_assert(required_size > 0); | 90 | srs_assert(required_size > 0); |
| 91 | 91 | ||
| 92 | - return required_size <= _size - (p - _bytes); | 92 | + return required_size <= nb_bytes - (p - bytes); |
| 93 | } | 93 | } |
| 94 | 94 | ||
| 95 | void SrsStream::skip(int size) | 95 | void SrsStream::skip(int size) |
| @@ -111,7 +111,7 @@ int16_t SrsStream::read_2bytes() | @@ -111,7 +111,7 @@ int16_t SrsStream::read_2bytes() | ||
| 111 | srs_assert(require(2)); | 111 | srs_assert(require(2)); |
| 112 | 112 | ||
| 113 | int16_t value; | 113 | int16_t value; |
| 114 | - pp = (char*)&value; | 114 | + char* pp = (char*)&value; |
| 115 | pp[1] = *p++; | 115 | pp[1] = *p++; |
| 116 | pp[0] = *p++; | 116 | pp[0] = *p++; |
| 117 | 117 | ||
| @@ -123,7 +123,7 @@ int32_t SrsStream::read_3bytes() | @@ -123,7 +123,7 @@ int32_t SrsStream::read_3bytes() | ||
| 123 | srs_assert(require(3)); | 123 | srs_assert(require(3)); |
| 124 | 124 | ||
| 125 | int32_t value = 0x00; | 125 | int32_t value = 0x00; |
| 126 | - pp = (char*)&value; | 126 | + char* pp = (char*)&value; |
| 127 | pp[2] = *p++; | 127 | pp[2] = *p++; |
| 128 | pp[1] = *p++; | 128 | pp[1] = *p++; |
| 129 | pp[0] = *p++; | 129 | pp[0] = *p++; |
| @@ -136,7 +136,7 @@ int32_t SrsStream::read_4bytes() | @@ -136,7 +136,7 @@ int32_t SrsStream::read_4bytes() | ||
| 136 | srs_assert(require(4)); | 136 | srs_assert(require(4)); |
| 137 | 137 | ||
| 138 | int32_t value; | 138 | int32_t value; |
| 139 | - pp = (char*)&value; | 139 | + char* pp = (char*)&value; |
| 140 | pp[3] = *p++; | 140 | pp[3] = *p++; |
| 141 | pp[2] = *p++; | 141 | pp[2] = *p++; |
| 142 | pp[1] = *p++; | 142 | pp[1] = *p++; |
| @@ -150,7 +150,7 @@ int64_t SrsStream::read_8bytes() | @@ -150,7 +150,7 @@ int64_t SrsStream::read_8bytes() | ||
| 150 | srs_assert(require(8)); | 150 | srs_assert(require(8)); |
| 151 | 151 | ||
| 152 | int64_t value; | 152 | int64_t value; |
| 153 | - pp = (char*)&value; | 153 | + char* pp = (char*)&value; |
| 154 | pp[7] = *p++; | 154 | pp[7] = *p++; |
| 155 | pp[6] = *p++; | 155 | pp[6] = *p++; |
| 156 | pp[5] = *p++; | 156 | pp[5] = *p++; |
| @@ -195,7 +195,7 @@ void SrsStream::write_2bytes(int16_t value) | @@ -195,7 +195,7 @@ void SrsStream::write_2bytes(int16_t value) | ||
| 195 | { | 195 | { |
| 196 | srs_assert(require(2)); | 196 | srs_assert(require(2)); |
| 197 | 197 | ||
| 198 | - pp = (char*)&value; | 198 | + char* pp = (char*)&value; |
| 199 | *p++ = pp[1]; | 199 | *p++ = pp[1]; |
| 200 | *p++ = pp[0]; | 200 | *p++ = pp[0]; |
| 201 | } | 201 | } |
| @@ -204,7 +204,7 @@ void SrsStream::write_4bytes(int32_t value) | @@ -204,7 +204,7 @@ void SrsStream::write_4bytes(int32_t value) | ||
| 204 | { | 204 | { |
| 205 | srs_assert(require(4)); | 205 | srs_assert(require(4)); |
| 206 | 206 | ||
| 207 | - pp = (char*)&value; | 207 | + char* pp = (char*)&value; |
| 208 | *p++ = pp[3]; | 208 | *p++ = pp[3]; |
| 209 | *p++ = pp[2]; | 209 | *p++ = pp[2]; |
| 210 | *p++ = pp[1]; | 210 | *p++ = pp[1]; |
| @@ -215,7 +215,7 @@ void SrsStream::write_3bytes(int32_t value) | @@ -215,7 +215,7 @@ void SrsStream::write_3bytes(int32_t value) | ||
| 215 | { | 215 | { |
| 216 | srs_assert(require(3)); | 216 | srs_assert(require(3)); |
| 217 | 217 | ||
| 218 | - pp = (char*)&value; | 218 | + char* pp = (char*)&value; |
| 219 | *p++ = pp[2]; | 219 | *p++ = pp[2]; |
| 220 | *p++ = pp[1]; | 220 | *p++ = pp[1]; |
| 221 | *p++ = pp[0]; | 221 | *p++ = pp[0]; |
| @@ -225,7 +225,7 @@ void SrsStream::write_8bytes(int64_t value) | @@ -225,7 +225,7 @@ void SrsStream::write_8bytes(int64_t value) | ||
| 225 | { | 225 | { |
| 226 | srs_assert(require(8)); | 226 | srs_assert(require(8)); |
| 227 | 227 | ||
| 228 | - pp = (char*)&value; | 228 | + char* pp = (char*)&value; |
| 229 | *p++ = pp[7]; | 229 | *p++ = pp[7]; |
| 230 | *p++ = pp[6]; | 230 | *p++ = pp[6]; |
| 231 | *p++ = pp[5]; | 231 | *p++ = pp[5]; |
| @@ -238,7 +238,7 @@ void SrsStream::write_8bytes(int64_t value) | @@ -238,7 +238,7 @@ void SrsStream::write_8bytes(int64_t value) | ||
| 238 | 238 | ||
| 239 | void SrsStream::write_string(string value) | 239 | void SrsStream::write_string(string value) |
| 240 | { | 240 | { |
| 241 | - srs_assert(require(value.length())); | 241 | + srs_assert(require((int)value.length())); |
| 242 | 242 | ||
| 243 | memcpy(p, value.data(), value.length()); | 243 | memcpy(p, value.data(), value.length()); |
| 244 | p += value.length(); | 244 | p += value.length(); |
| @@ -41,23 +41,25 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -41,23 +41,25 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 41 | class SrsStream | 41 | class SrsStream |
| 42 | { | 42 | { |
| 43 | private: | 43 | private: |
| 44 | + // current position at bytes. | ||
| 44 | char* p; | 45 | char* p; |
| 45 | - char* pp; | ||
| 46 | - char* _bytes; | ||
| 47 | - int _size; | 46 | + // the bytes data for stream to read or write. |
| 47 | + char* bytes; | ||
| 48 | + // the total number of bytes. | ||
| 49 | + int nb_bytes; | ||
| 48 | public: | 50 | public: |
| 49 | SrsStream(); | 51 | SrsStream(); |
| 50 | virtual ~SrsStream(); | 52 | virtual ~SrsStream(); |
| 51 | public: | 53 | public: |
| 52 | /** | 54 | /** |
| 53 | * initialize the stream from bytes. | 55 | * initialize the stream from bytes. |
| 54 | - * @bytes, the bytes to convert from/to basic types. | ||
| 55 | - * @size, the size of bytes. | 56 | + * @b, the bytes to convert from/to basic types. |
| 57 | + * @nb, the size of bytes, total number of bytes for stream. | ||
| 56 | * @remark, stream never free the bytes, user must free it. | 58 | * @remark, stream never free the bytes, user must free it. |
| 57 | * @remark, return error when bytes NULL. | 59 | * @remark, return error when bytes NULL. |
| 58 | * @remark, return error when size is not positive. | 60 | * @remark, return error when size is not positive. |
| 59 | */ | 61 | */ |
| 60 | - virtual int initialize(char* bytes, int size); | 62 | + virtual int initialize(char* b, int nb); |
| 61 | // get the status of stream | 63 | // get the status of stream |
| 62 | public: | 64 | public: |
| 63 | /** | 65 | /** |
| @@ -2697,11 +2697,11 @@ SrsTSMuxer::~SrsTSMuxer() | @@ -2697,11 +2697,11 @@ SrsTSMuxer::~SrsTSMuxer() | ||
| 2697 | close(); | 2697 | close(); |
| 2698 | } | 2698 | } |
| 2699 | 2699 | ||
| 2700 | -int SrsTSMuxer::open(string _path) | 2700 | +int SrsTSMuxer::open(string p) |
| 2701 | { | 2701 | { |
| 2702 | int ret = ERROR_SUCCESS; | 2702 | int ret = ERROR_SUCCESS; |
| 2703 | 2703 | ||
| 2704 | - path = _path; | 2704 | + path = p; |
| 2705 | 2705 | ||
| 2706 | close(); | 2706 | close(); |
| 2707 | 2707 | ||
| @@ -3048,7 +3048,7 @@ int SrsTsCache::do_cache_avc(SrsAvcAacCodec* codec, SrsCodecSample* sample) | @@ -3048,7 +3048,7 @@ int SrsTsCache::do_cache_avc(SrsAvcAacCodec* codec, SrsCodecSample* sample) | ||
| 3048 | 3048 | ||
| 3049 | SrsTsEncoder::SrsTsEncoder() | 3049 | SrsTsEncoder::SrsTsEncoder() |
| 3050 | { | 3050 | { |
| 3051 | - _fs = NULL; | 3051 | + writer = NULL; |
| 3052 | codec = new SrsAvcAacCodec(); | 3052 | codec = new SrsAvcAacCodec(); |
| 3053 | sample = new SrsCodecSample(); | 3053 | sample = new SrsCodecSample(); |
| 3054 | cache = new SrsTsCache(); | 3054 | cache = new SrsTsCache(); |
| @@ -3065,22 +3065,22 @@ SrsTsEncoder::~SrsTsEncoder() | @@ -3065,22 +3065,22 @@ SrsTsEncoder::~SrsTsEncoder() | ||
| 3065 | srs_freep(context); | 3065 | srs_freep(context); |
| 3066 | } | 3066 | } |
| 3067 | 3067 | ||
| 3068 | -int SrsTsEncoder::initialize(SrsFileWriter* fs) | 3068 | +int SrsTsEncoder::initialize(SrsFileWriter* fw) |
| 3069 | { | 3069 | { |
| 3070 | int ret = ERROR_SUCCESS; | 3070 | int ret = ERROR_SUCCESS; |
| 3071 | 3071 | ||
| 3072 | - srs_assert(fs); | 3072 | + srs_assert(fw); |
| 3073 | 3073 | ||
| 3074 | - if (!fs->is_open()) { | 3074 | + if (!fw->is_open()) { |
| 3075 | ret = ERROR_KERNEL_FLV_STREAM_CLOSED; | 3075 | ret = ERROR_KERNEL_FLV_STREAM_CLOSED; |
| 3076 | srs_warn("stream is not open for encoder. ret=%d", ret); | 3076 | srs_warn("stream is not open for encoder. ret=%d", ret); |
| 3077 | return ret; | 3077 | return ret; |
| 3078 | } | 3078 | } |
| 3079 | 3079 | ||
| 3080 | - _fs = fs; | 3080 | + writer = fw; |
| 3081 | 3081 | ||
| 3082 | srs_freep(muxer); | 3082 | srs_freep(muxer); |
| 3083 | - muxer = new SrsTSMuxer(fs, context, SrsCodecAudioAAC, SrsCodecVideoAVC); | 3083 | + muxer = new SrsTSMuxer(fw, context, SrsCodecAudioAAC, SrsCodecVideoAVC); |
| 3084 | 3084 | ||
| 3085 | if ((ret = muxer->open("")) != ERROR_SUCCESS) { | 3085 | if ((ret = muxer->open("")) != ERROR_SUCCESS) { |
| 3086 | return ret; | 3086 | return ret; |
| @@ -1560,9 +1560,10 @@ public: | @@ -1560,9 +1560,10 @@ public: | ||
| 1560 | virtual ~SrsTSMuxer(); | 1560 | virtual ~SrsTSMuxer(); |
| 1561 | public: | 1561 | public: |
| 1562 | /** | 1562 | /** |
| 1563 | - * open the writer, donot write the PSI of ts. | ||
| 1564 | - */ | ||
| 1565 | - virtual int open(std::string _path); | 1563 | + * open the writer, donot write the PSI of ts. |
| 1564 | + * @param p a string indicates the path of ts file to mux to. | ||
| 1565 | + */ | ||
| 1566 | + virtual int open(std::string p); | ||
| 1566 | /** | 1567 | /** |
| 1567 | * when open ts, we donot write the header(PSI), | 1568 | * when open ts, we donot write the header(PSI), |
| 1568 | * for user may need to update the acodec to mp3 or others, | 1569 | * for user may need to update the acodec to mp3 or others, |
| @@ -1625,7 +1626,7 @@ private: | @@ -1625,7 +1626,7 @@ private: | ||
| 1625 | class SrsTsEncoder | 1626 | class SrsTsEncoder |
| 1626 | { | 1627 | { |
| 1627 | private: | 1628 | private: |
| 1628 | - SrsFileWriter* _fs; | 1629 | + SrsFileWriter* writer; |
| 1629 | private: | 1630 | private: |
| 1630 | SrsAvcAacCodec* codec; | 1631 | SrsAvcAacCodec* codec; |
| 1631 | SrsCodecSample* sample; | 1632 | SrsCodecSample* sample; |
| @@ -1637,9 +1638,10 @@ public: | @@ -1637,9 +1638,10 @@ public: | ||
| 1637 | virtual ~SrsTsEncoder(); | 1638 | virtual ~SrsTsEncoder(); |
| 1638 | public: | 1639 | public: |
| 1639 | /** | 1640 | /** |
| 1640 | - * initialize the underlayer file stream. | ||
| 1641 | - */ | ||
| 1642 | - virtual int initialize(SrsFileWriter* fs); | 1641 | + * initialize the underlayer file stream. |
| 1642 | + * @param fw the writer to use for ts encoder, user must free it. | ||
| 1643 | + */ | ||
| 1644 | + virtual int initialize(SrsFileWriter* fw); | ||
| 1643 | public: | 1645 | public: |
| 1644 | /** | 1646 | /** |
| 1645 | * write audio/video packet. | 1647 | * write audio/video packet. |
-
请 注册 或 登录 后发表评论