正在显示
3 个修改的文件
包含
29 行增加
和
43 行删除
| @@ -241,6 +241,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -241,6 +241,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 241 | #define ERROR_RESPONSE_DATA 3065 | 241 | #define ERROR_RESPONSE_DATA 3065 |
| 242 | #define ERROR_REQUEST_DATA 3066 | 242 | #define ERROR_REQUEST_DATA 3066 |
| 243 | #define ERROR_EDGE_PORT_INVALID 3067 | 243 | #define ERROR_EDGE_PORT_INVALID 3067 |
| 244 | +#define ERROR_EXPECT_FILE_IO 3068 | ||
| 244 | 245 | ||
| 245 | /////////////////////////////////////////////////////// | 246 | /////////////////////////////////////////////////////// |
| 246 | // HTTP/StreamCaster/KAFKA protocol error. | 247 | // HTTP/StreamCaster/KAFKA protocol error. |
| @@ -346,7 +346,7 @@ SrsSharedPtrMessage* SrsSharedPtrMessage::copy() | @@ -346,7 +346,7 @@ SrsSharedPtrMessage* SrsSharedPtrMessage::copy() | ||
| 346 | 346 | ||
| 347 | SrsFlvEncoder::SrsFlvEncoder() | 347 | SrsFlvEncoder::SrsFlvEncoder() |
| 348 | { | 348 | { |
| 349 | - reader = NULL; | 349 | + writer = NULL; |
| 350 | tag_stream = new SrsBuffer(); | 350 | tag_stream = new SrsBuffer(); |
| 351 | 351 | ||
| 352 | #ifdef SRS_PERF_FAST_FLV_ENCODER | 352 | #ifdef SRS_PERF_FAST_FLV_ENCODER |
| @@ -370,21 +370,11 @@ SrsFlvEncoder::~SrsFlvEncoder() | @@ -370,21 +370,11 @@ SrsFlvEncoder::~SrsFlvEncoder() | ||
| 370 | #endif | 370 | #endif |
| 371 | } | 371 | } |
| 372 | 372 | ||
| 373 | -int SrsFlvEncoder::initialize(SrsFileWriter* fr) | 373 | +int SrsFlvEncoder::initialize(ISrsWriter* fw) |
| 374 | { | 374 | { |
| 375 | - int ret = ERROR_SUCCESS; | ||
| 376 | - | ||
| 377 | - srs_assert(fr); | ||
| 378 | - | ||
| 379 | - if (!fr->is_open()) { | ||
| 380 | - ret = ERROR_KERNEL_FLV_STREAM_CLOSED; | ||
| 381 | - srs_warn("stream is not open for encoder. ret=%d", ret); | ||
| 382 | - return ret; | ||
| 383 | - } | ||
| 384 | - | ||
| 385 | - reader = fr; | ||
| 386 | - | ||
| 387 | - return ret; | 375 | + srs_assert(fw); |
| 376 | + writer = fw; | ||
| 377 | + return ERROR_SUCCESS; | ||
| 388 | } | 378 | } |
| 389 | 379 | ||
| 390 | int SrsFlvEncoder::write_header() | 380 | int SrsFlvEncoder::write_header() |
| @@ -416,14 +406,14 @@ int SrsFlvEncoder::write_header(char flv_header[9]) | @@ -416,14 +406,14 @@ int SrsFlvEncoder::write_header(char flv_header[9]) | ||
| 416 | int ret = ERROR_SUCCESS; | 406 | int ret = ERROR_SUCCESS; |
| 417 | 407 | ||
| 418 | // write data. | 408 | // write data. |
| 419 | - if ((ret = reader->write(flv_header, 9, NULL)) != ERROR_SUCCESS) { | 409 | + if ((ret = writer->write(flv_header, 9, NULL)) != ERROR_SUCCESS) { |
| 420 | srs_error("write flv header failed. ret=%d", ret); | 410 | srs_error("write flv header failed. ret=%d", ret); |
| 421 | return ret; | 411 | return ret; |
| 422 | } | 412 | } |
| 423 | 413 | ||
| 424 | // previous tag size. | 414 | // previous tag size. |
| 425 | char pts[] = { (char)0x00, (char)0x00, (char)0x00, (char)0x00 }; | 415 | char pts[] = { (char)0x00, (char)0x00, (char)0x00, (char)0x00 }; |
| 426 | - if ((ret = reader->write(pts, 4, NULL)) != ERROR_SUCCESS) { | 416 | + if ((ret = writer->write(pts, 4, NULL)) != ERROR_SUCCESS) { |
| 427 | return ret; | 417 | return ret; |
| 428 | } | 418 | } |
| 429 | 419 | ||
| @@ -566,7 +556,7 @@ int SrsFlvEncoder::write_tags(SrsSharedPtrMessage** msgs, int count) | @@ -566,7 +556,7 @@ int SrsFlvEncoder::write_tags(SrsSharedPtrMessage** msgs, int count) | ||
| 566 | iovs += 3; | 556 | iovs += 3; |
| 567 | } | 557 | } |
| 568 | 558 | ||
| 569 | - if ((ret = reader->writev(iovss, nb_iovss, NULL)) != ERROR_SUCCESS) { | 559 | + if ((ret = writer->writev(iovss, nb_iovss, NULL)) != ERROR_SUCCESS) { |
| 570 | if (!srs_is_client_gracefully_close(ret)) { | 560 | if (!srs_is_client_gracefully_close(ret)) { |
| 571 | srs_error("write flv tags failed. ret=%d", ret); | 561 | srs_error("write flv tags failed. ret=%d", ret); |
| 572 | } | 562 | } |
| @@ -697,7 +687,7 @@ int SrsFlvEncoder::write_tag(char* header, int header_size, char* tag, int tag_s | @@ -697,7 +687,7 @@ int SrsFlvEncoder::write_tag(char* header, int header_size, char* tag, int tag_s | ||
| 697 | iovs[2].iov_base = pre_size; | 687 | iovs[2].iov_base = pre_size; |
| 698 | iovs[2].iov_len = SRS_FLV_PREVIOUS_TAG_SIZE; | 688 | iovs[2].iov_len = SRS_FLV_PREVIOUS_TAG_SIZE; |
| 699 | 689 | ||
| 700 | - if ((ret = reader->writev(iovs, 3, NULL)) != ERROR_SUCCESS) { | 690 | + if ((ret = writer->writev(iovs, 3, NULL)) != ERROR_SUCCESS) { |
| 701 | if (!srs_is_client_gracefully_close(ret)) { | 691 | if (!srs_is_client_gracefully_close(ret)) { |
| 702 | srs_error("write flv tag failed. ret=%d", ret); | 692 | srs_error("write flv tag failed. ret=%d", ret); |
| 703 | } | 693 | } |
| @@ -718,21 +708,11 @@ SrsFlvDecoder::~SrsFlvDecoder() | @@ -718,21 +708,11 @@ SrsFlvDecoder::~SrsFlvDecoder() | ||
| 718 | srs_freep(tag_stream); | 708 | srs_freep(tag_stream); |
| 719 | } | 709 | } |
| 720 | 710 | ||
| 721 | -int SrsFlvDecoder::initialize(SrsFileReader* fr) | 711 | +int SrsFlvDecoder::initialize(ISrsReader* fr) |
| 722 | { | 712 | { |
| 723 | - int ret = ERROR_SUCCESS; | ||
| 724 | - | ||
| 725 | srs_assert(fr); | 713 | srs_assert(fr); |
| 726 | - | ||
| 727 | - if (!fr->is_open()) { | ||
| 728 | - ret = ERROR_KERNEL_FLV_STREAM_CLOSED; | ||
| 729 | - srs_warn("stream is not open for decoder. ret=%d", ret); | ||
| 730 | - return ret; | ||
| 731 | - } | ||
| 732 | - | ||
| 733 | reader = fr; | 714 | reader = fr; |
| 734 | - | ||
| 735 | - return ret; | 715 | + return ERROR_SUCCESS; |
| 736 | } | 716 | } |
| 737 | 717 | ||
| 738 | int SrsFlvDecoder::read_header(char header[9]) | 718 | int SrsFlvDecoder::read_header(char header[9]) |
| @@ -842,20 +822,24 @@ SrsFlvVodStreamDecoder::~SrsFlvVodStreamDecoder() | @@ -842,20 +822,24 @@ SrsFlvVodStreamDecoder::~SrsFlvVodStreamDecoder() | ||
| 842 | srs_freep(tag_stream); | 822 | srs_freep(tag_stream); |
| 843 | } | 823 | } |
| 844 | 824 | ||
| 845 | -int SrsFlvVodStreamDecoder::initialize(SrsFileReader* fr) | 825 | +int SrsFlvVodStreamDecoder::initialize(ISrsReader* fr) |
| 846 | { | 826 | { |
| 847 | int ret = ERROR_SUCCESS; | 827 | int ret = ERROR_SUCCESS; |
| 848 | 828 | ||
| 849 | srs_assert(fr); | 829 | srs_assert(fr); |
| 830 | + reader = dynamic_cast<SrsFileReader*>(fr); | ||
| 831 | + if (!reader) { | ||
| 832 | + ret = ERROR_EXPECT_FILE_IO; | ||
| 833 | + srs_error("stream is not file io. ret=%d", ret); | ||
| 834 | + return ret; | ||
| 835 | + } | ||
| 850 | 836 | ||
| 851 | - if (!fr->is_open()) { | 837 | + if (!reader->is_open()) { |
| 852 | ret = ERROR_KERNEL_FLV_STREAM_CLOSED; | 838 | ret = ERROR_KERNEL_FLV_STREAM_CLOSED; |
| 853 | srs_warn("stream is not open for decoder. ret=%d", ret); | 839 | srs_warn("stream is not open for decoder. ret=%d", ret); |
| 854 | return ret; | 840 | return ret; |
| 855 | } | 841 | } |
| 856 | 842 | ||
| 857 | - reader = fr; | ||
| 858 | - | ||
| 859 | return ret; | 843 | return ret; |
| 860 | } | 844 | } |
| 861 | 845 |
| @@ -37,7 +37,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -37,7 +37,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 37 | #endif | 37 | #endif |
| 38 | 38 | ||
| 39 | class SrsBuffer; | 39 | class SrsBuffer; |
| 40 | -class SrsFileWriter; | 40 | +class ISrsWriter; |
| 41 | +class ISrsReader; | ||
| 41 | class SrsFileReader; | 42 | class SrsFileReader; |
| 42 | 43 | ||
| 43 | #define SRS_FLV_TAG_HEADER_SIZE 11 | 44 | #define SRS_FLV_TAG_HEADER_SIZE 11 |
| @@ -442,7 +443,7 @@ public: | @@ -442,7 +443,7 @@ public: | ||
| 442 | class SrsFlvEncoder | 443 | class SrsFlvEncoder |
| 443 | { | 444 | { |
| 444 | private: | 445 | private: |
| 445 | - SrsFileWriter* reader; | 446 | + ISrsWriter* writer; |
| 446 | private: | 447 | private: |
| 447 | SrsBuffer* tag_stream; | 448 | SrsBuffer* tag_stream; |
| 448 | char tag_header[SRS_FLV_TAG_HEADER_SIZE]; | 449 | char tag_header[SRS_FLV_TAG_HEADER_SIZE]; |
| @@ -453,9 +454,9 @@ public: | @@ -453,9 +454,9 @@ public: | ||
| 453 | /** | 454 | /** |
| 454 | * initialize the underlayer file stream. | 455 | * initialize the underlayer file stream. |
| 455 | * @remark user can initialize multiple times to encode multiple flv files. | 456 | * @remark user can initialize multiple times to encode multiple flv files. |
| 456 | - * @remark, user must free the @param fr, flv encoder never close/free it. | 457 | + * @remark, user must free the @param fw, flv encoder never close/free it. |
| 457 | */ | 458 | */ |
| 458 | - virtual int initialize(SrsFileWriter* fr); | 459 | + virtual int initialize(ISrsWriter* fw); |
| 459 | public: | 460 | public: |
| 460 | /** | 461 | /** |
| 461 | * write flv header. | 462 | * write flv header. |
| @@ -520,7 +521,7 @@ private: | @@ -520,7 +521,7 @@ private: | ||
| 520 | class SrsFlvDecoder | 521 | class SrsFlvDecoder |
| 521 | { | 522 | { |
| 522 | private: | 523 | private: |
| 523 | - SrsFileReader* reader; | 524 | + ISrsReader* reader; |
| 524 | private: | 525 | private: |
| 525 | SrsBuffer* tag_stream; | 526 | SrsBuffer* tag_stream; |
| 526 | public: | 527 | public: |
| @@ -530,9 +531,9 @@ public: | @@ -530,9 +531,9 @@ public: | ||
| 530 | /** | 531 | /** |
| 531 | * initialize the underlayer file stream | 532 | * initialize the underlayer file stream |
| 532 | * @remark user can initialize multiple times to decode multiple flv files. | 533 | * @remark user can initialize multiple times to decode multiple flv files. |
| 533 | - * @remark user must free the @param fr, flv decoder never close/free it. | 534 | + * @remark user must free the @param fr, flv decoder never close/free it |
| 534 | */ | 535 | */ |
| 535 | - virtual int initialize(SrsFileReader* fr); | 536 | + virtual int initialize(ISrsReader* fr); |
| 536 | public: | 537 | public: |
| 537 | /** | 538 | /** |
| 538 | * read the flv header, donot including the 4bytes previous tag size. | 539 | * read the flv header, donot including the 4bytes previous tag size. |
| @@ -576,7 +577,7 @@ public: | @@ -576,7 +577,7 @@ public: | ||
| 576 | * @remark user can initialize multiple times to decode multiple flv files. | 577 | * @remark user can initialize multiple times to decode multiple flv files. |
| 577 | * @remark user must free the @param fr, flv decoder never close/free it. | 578 | * @remark user must free the @param fr, flv decoder never close/free it. |
| 578 | */ | 579 | */ |
| 579 | - virtual int initialize(SrsFileReader* fr); | 580 | + virtual int initialize(ISrsReader* fr); |
| 580 | public: | 581 | public: |
| 581 | /** | 582 | /** |
| 582 | * read the flv header and its size. | 583 | * read the flv header and its size. |
-
请 注册 或 登录 后发表评论