mirror of
https://github.com/ossrs/srs.git
synced 2025-02-12 19:31:53 +00:00
Covert FLV Vod decoder.
This commit is contained in:
parent
3bd7978b59
commit
ea9c4f89af
3 changed files with 67 additions and 2 deletions
|
@ -842,7 +842,7 @@ srs_error_t SrsFlvVodStreamDecoder::read_sequence_header_summary(int64_t* pstart
|
|||
reader->skip(data_size + SRS_FLV_PREVIOUS_TAG_SIZE);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
// if video duplicated, no audio
|
||||
if (is_video && got_video) {
|
||||
break;
|
||||
|
@ -868,7 +868,7 @@ srs_error_t SrsFlvVodStreamDecoder::read_sequence_header_summary(int64_t* pstart
|
|||
if (is_audio) {
|
||||
srs_assert(!got_audio);
|
||||
got_audio = true;
|
||||
|
||||
|
||||
if (av_sequence_offset_start < 0) {
|
||||
av_sequence_offset_start = reader->tellg() - SRS_FLV_TAG_HEADER_SIZE;
|
||||
}
|
||||
|
|
|
@ -143,6 +143,7 @@ MockSrsFileReader::MockSrsFileReader()
|
|||
size = 0;
|
||||
offset = 0;
|
||||
opened = false;
|
||||
seekable = true;
|
||||
}
|
||||
|
||||
MockSrsFileReader::MockSrsFileReader(const char* src, int nb_src)
|
||||
|
@ -157,6 +158,7 @@ MockSrsFileReader::MockSrsFileReader(const char* src, int nb_src)
|
|||
|
||||
offset = 0;
|
||||
opened = false;
|
||||
seekable = true;
|
||||
}
|
||||
|
||||
MockSrsFileReader::~MockSrsFileReader()
|
||||
|
@ -194,6 +196,10 @@ void MockSrsFileReader::skip(int64_t _size)
|
|||
|
||||
int64_t MockSrsFileReader::seek2(int64_t _offset)
|
||||
{
|
||||
if (!seekable) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
offset = (int)_offset;
|
||||
return offset;
|
||||
}
|
||||
|
@ -872,6 +878,63 @@ VOID TEST(KernelFLVTest, CoverReaderErrorCase)
|
|||
}
|
||||
}
|
||||
|
||||
VOID TEST(KernelFLVTest, CoverVodStreamErrorCase)
|
||||
{
|
||||
srs_error_t err;
|
||||
|
||||
if (true) {
|
||||
MockSrsFileReader r;
|
||||
HELPER_EXPECT_SUCCESS(r.open(""));
|
||||
|
||||
SrsFlvVodStreamDecoder d;
|
||||
HELPER_EXPECT_SUCCESS(d.initialize(&r));
|
||||
}
|
||||
|
||||
if (true) {
|
||||
MockSrsFileReader r;
|
||||
HELPER_EXPECT_SUCCESS(r.open(""));
|
||||
|
||||
SrsFlvVodStreamDecoder d;
|
||||
HELPER_EXPECT_SUCCESS(d.initialize(&r));
|
||||
|
||||
char header[13];
|
||||
HELPER_EXPECT_FAILED(d.read_header_ext(header));
|
||||
}
|
||||
|
||||
if (true) {
|
||||
MockSrsFileReader r;
|
||||
HELPER_EXPECT_SUCCESS(r.open(""));
|
||||
|
||||
SrsFlvVodStreamDecoder d;
|
||||
HELPER_EXPECT_SUCCESS(d.initialize(&r));
|
||||
|
||||
int64_t start;
|
||||
int size;
|
||||
HELPER_EXPECT_FAILED(d.read_sequence_header_summary(&start, &size));
|
||||
}
|
||||
|
||||
if (true) {
|
||||
MockSrsFileReader r;
|
||||
HELPER_EXPECT_SUCCESS(r.open(""));
|
||||
|
||||
SrsFlvVodStreamDecoder d;
|
||||
HELPER_EXPECT_SUCCESS(d.initialize(&r));
|
||||
|
||||
HELPER_EXPECT_FAILED(d.seek2(1));
|
||||
}
|
||||
|
||||
if (true) {
|
||||
MockSrsFileReader r;
|
||||
HELPER_EXPECT_SUCCESS(r.open(""));
|
||||
r.seekable = false;
|
||||
|
||||
SrsFlvVodStreamDecoder d;
|
||||
HELPER_EXPECT_SUCCESS(d.initialize(&r));
|
||||
|
||||
HELPER_EXPECT_FAILED(d.seek2(0));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* test the flv decoder,
|
||||
* exception: file stream not open.
|
||||
|
|
|
@ -82,6 +82,8 @@ public:
|
|||
int size;
|
||||
int offset;
|
||||
bool opened;
|
||||
// Could seek.
|
||||
bool seekable;
|
||||
public:
|
||||
MockSrsFileReader();
|
||||
MockSrsFileReader(const char* data, int nb_data);
|
||||
|
|
Loading…
Reference in a new issue