mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +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);
|
reader->skip(data_size + SRS_FLV_PREVIOUS_TAG_SIZE);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if video duplicated, no audio
|
// if video duplicated, no audio
|
||||||
if (is_video && got_video) {
|
if (is_video && got_video) {
|
||||||
break;
|
break;
|
||||||
|
@ -868,7 +868,7 @@ srs_error_t SrsFlvVodStreamDecoder::read_sequence_header_summary(int64_t* pstart
|
||||||
if (is_audio) {
|
if (is_audio) {
|
||||||
srs_assert(!got_audio);
|
srs_assert(!got_audio);
|
||||||
got_audio = true;
|
got_audio = true;
|
||||||
|
|
||||||
if (av_sequence_offset_start < 0) {
|
if (av_sequence_offset_start < 0) {
|
||||||
av_sequence_offset_start = reader->tellg() - SRS_FLV_TAG_HEADER_SIZE;
|
av_sequence_offset_start = reader->tellg() - SRS_FLV_TAG_HEADER_SIZE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -143,6 +143,7 @@ MockSrsFileReader::MockSrsFileReader()
|
||||||
size = 0;
|
size = 0;
|
||||||
offset = 0;
|
offset = 0;
|
||||||
opened = false;
|
opened = false;
|
||||||
|
seekable = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
MockSrsFileReader::MockSrsFileReader(const char* src, int nb_src)
|
MockSrsFileReader::MockSrsFileReader(const char* src, int nb_src)
|
||||||
|
@ -157,6 +158,7 @@ MockSrsFileReader::MockSrsFileReader(const char* src, int nb_src)
|
||||||
|
|
||||||
offset = 0;
|
offset = 0;
|
||||||
opened = false;
|
opened = false;
|
||||||
|
seekable = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
MockSrsFileReader::~MockSrsFileReader()
|
MockSrsFileReader::~MockSrsFileReader()
|
||||||
|
@ -194,6 +196,10 @@ void MockSrsFileReader::skip(int64_t _size)
|
||||||
|
|
||||||
int64_t MockSrsFileReader::seek2(int64_t _offset)
|
int64_t MockSrsFileReader::seek2(int64_t _offset)
|
||||||
{
|
{
|
||||||
|
if (!seekable) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
offset = (int)_offset;
|
offset = (int)_offset;
|
||||||
return 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,
|
* test the flv decoder,
|
||||||
* exception: file stream not open.
|
* exception: file stream not open.
|
||||||
|
|
|
@ -82,6 +82,8 @@ public:
|
||||||
int size;
|
int size;
|
||||||
int offset;
|
int offset;
|
||||||
bool opened;
|
bool opened;
|
||||||
|
// Could seek.
|
||||||
|
bool seekable;
|
||||||
public:
|
public:
|
||||||
MockSrsFileReader();
|
MockSrsFileReader();
|
||||||
MockSrsFileReader(const char* data, int nb_data);
|
MockSrsFileReader(const char* data, int nb_data);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue