Skip to content

Commit

Permalink
feat(HLSStream): support seg with range
Browse files Browse the repository at this point in the history
Signed-off-by: pingkai <pingkai010@gmail.com>
  • Loading branch information
pingkai committed Feb 28, 2020
1 parent a232ae7 commit ac345e9
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 8 deletions.
15 changes: 9 additions & 6 deletions framework/demuxer/play_list/HLSStream.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ namespace Cicada {
}

uri = Helper::combinePaths(mPTracker->getBaseUri(), mCurSeg->init_section->mUri);
ret = tryOpenSegment(uri);
ret = tryOpenSegment(uri, mCurSeg->init_section->rangeStart, mCurSeg->init_section->rangeEnd);

if (ret < 0) {
return ret;
Expand Down Expand Up @@ -292,7 +292,7 @@ namespace Cicada {
uri = Helper::combinePaths(mPTracker->getBaseUri(),
mCurSeg->mUri);
AF_LOGD("open uri is %s seq is %llu\n", uri.c_str(), mCurSeg->sequence);
ret = tryOpenSegment(uri);
ret = tryOpenSegment(uri, mCurSeg->rangeStart, mCurSeg->rangeEnd);

if (isHttpError(ret)) {
resetSource();
Expand Down Expand Up @@ -457,14 +457,14 @@ namespace Cicada {
return ret;
}

int HLSStream::tryOpenSegment(const string &uri)
int HLSStream::tryOpenSegment(const string &uri, int64_t start, int64_t end)
{
int retryTimes = 0;
int ret;

do {
resetSource();
ret = openSegment(uri);
ret = openSegment(uri, start, end);
retryTimes++;

if (retryTimes > 2) {
Expand All @@ -477,18 +477,21 @@ namespace Cicada {
return ret;
}

int HLSStream::openSegment(const string &uri)
int HLSStream::openSegment(const string &uri, int64_t start, int64_t end)
{
int ret;

if (mExtDataSource) {
mExtDataSource->setRange(start, end);
return mExtDataSource->Open(uri);
}

if (mPdataSource == nullptr) {
recreateSource(uri);
mPdataSource->setRange(start, end);
ret = mPdataSource->Open(0);
} else {
mPdataSource->setRange(start, end);
ret = mPdataSource->Open(uri);
}

Expand Down Expand Up @@ -833,7 +836,7 @@ namespace Cicada {
mCurSeg = seg;
string uri = Helper::combinePaths(mPTracker->getBaseUri(),
seg->mUri);
ret = tryOpenSegment(uri);
ret = tryOpenSegment(uri, seg->rangeStart, seg->rangeEnd);

if (isHttpError(ret)) {
resetSource();
Expand Down
4 changes: 2 additions & 2 deletions framework/demuxer/play_list/HLSStream.h
Original file line number Diff line number Diff line change
Expand Up @@ -129,9 +129,9 @@ namespace Cicada {

CicadaJSONArray openInfoArray;

int openSegment(const string &uri);
int openSegment(const string &uri, int64_t start = INT64_MIN, int64_t end = INT64_MIN);

int tryOpenSegment(const string &uri);
int tryOpenSegment(const string &uri, int64_t start, int64_t end);

int createDemuxer();

Expand Down

0 comments on commit ac345e9

Please sign in to comment.