Commit 22af55ce authored by François Cartegnie's avatar François Cartegnie 🤞

stream_filter: dash: add init flag on segments

parent 7081fb2b
......@@ -341,7 +341,7 @@ bool BasicCMParser::setSegmentInfo (Node *root, Representation *rep)
return false;
}
Segment* BasicCMParser::parseSegment( Node* node )
Segment* BasicCMParser::parseSegment( Node* node, bool init )
{
const std::map<std::string, std::string> attr = node->getAttributes();
std::map<std::string, std::string>::const_iterator it;
......@@ -368,7 +368,7 @@ Segment* BasicCMParser::parseSegment( Node* node )
seg = new SegmentTemplate( runtimeToken, this->currentRepresentation );
}
else
seg = new Segment( this->currentRepresentation );
seg = new Segment( this->currentRepresentation, init );
if ( url.find( this->p_stream->psz_access ) != 0 ) //Relative url
url = this->url + url;
seg->setSourceUrl( url );
......@@ -408,7 +408,7 @@ void BasicCMParser::setInitSegment (Node *root, SegmentInfoCommon *info
" other InitialisationSegmentURL will be dropped." );
if ( initSeg.size() == 1 )
{
Segment *seg = parseSegment( initSeg.at(0) );
Segment *seg = parseSegment( initSeg.at(0), true );
if ( seg != NULL )
info->setInitialisationSegment( seg );
}
......
......@@ -66,7 +66,7 @@ namespace dash
bool parseCommonAttributesElements( dash::xml::Node *node,
CommonAttributesElements *common,
CommonAttributesElements *parent ) const;
Segment* parseSegment( xml::Node* node );
Segment* parseSegment( xml::Node* node, bool init = false );
ProgramInformation* parseProgramInformation();
private:
......
......@@ -137,7 +137,7 @@ void IsoffMainParser::setInitSegment (dash::xml::Node *segBaseNode, Segme
if(initSeg.size() > 0)
{
Segment *seg = new Segment( this->currentRepresentation );
Segment *seg = new Segment( currentRepresentation, true );
seg->setSourceUrl(initSeg.at(0)->getAttributeValue("sourceURL"));
if(initSeg.at(0)->hasAttribute("range"))
......
......@@ -192,17 +192,16 @@ std::vector<std::string> Representation::toString() const
{
std::vector<std::string> ret;
ret.push_back(std::string(" Representation"));
ret.push_back(std::string(" InitSeg url=")
.append(segmentBase->getInitSegment()->getSourceUrl()));
if (segmentList)
{
std::vector<Segment *> list = getSegments();
std::vector<Segment *>::const_iterator l;
for(l = segmentList->getSegments().begin();
l < segmentList->getSegments().end(); l++)
for(l = list.begin(); l < list.end(); l++)
{
if ((*l)->isInit())
ret.push_back(std::string(" InitSeg url=")
.append((*l)->getUrlSegment()));
else
ret.push_back(std::string(" Segment url=")
.append((*l)->getSourceUrl()));
}
.append((*l)->getUrlSegment()));
}
return ret;
}
......
......@@ -33,11 +33,12 @@
using namespace dash::mpd;
using namespace dash::http;
Segment::Segment(const Representation *parent) :
Segment::Segment(const Representation *parent, bool isinit) :
ICanonicalUrl( parent ),
startByte (-1),
endByte (-1),
parentRepresentation( parent )
parentRepresentation( parent ),
init( isinit )
{
assert( parent != NULL );
if ( parent->getSegmentInfo() != NULL && parent->getSegmentInfo()->getDuration() >= 0 )
......@@ -96,3 +97,8 @@ std::string Segment::getUrlSegment() const
ret.append(sourceUrl);
return ret;
}
bool Segment::isInit() const
{
return init;
}
......@@ -40,7 +40,7 @@ namespace dash
class Segment : public ICanonicalUrl
{
public:
Segment( const Representation *parent );
Segment( const Representation *parent, bool isinit = false );
virtual ~Segment(){}
virtual void setSourceUrl( const std::string &url );
/**
......@@ -49,6 +49,7 @@ namespace dash
* when using an UrlTemplate
*/
virtual bool isSingleShot () const;
virtual bool isInit () const;
virtual void done ();
virtual void setByteRange (int start, int end);
virtual dash::http::Chunk* toChunk ();
......@@ -61,6 +62,7 @@ namespace dash
int endByte;
const Representation* parentRepresentation;
int size;
bool init;
};
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment