vlc | branch: master | Francois Cartegnie <[email protected]> | Fri May 22 15:10:38 2015 +0200| [be6bf7796f0753fa497179e38f518bfb0b69ddf7] | committer: Francois Cartegnie
demux: adaptative: allow altering block after download > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=be6bf7796f0753fa497179e38f518bfb0b69ddf7 --- modules/demux/adaptative/Streams.cpp | 2 +- modules/demux/adaptative/http/Chunk.h | 4 +++- modules/demux/adaptative/playlist/Segment.cpp | 6 +++--- modules/demux/adaptative/playlist/Segment.h | 4 ++-- modules/demux/dash/mp4/AtomsReader.cpp | 6 +++--- modules/demux/dash/mp4/AtomsReader.hpp | 2 +- modules/demux/dash/mpd/DASHSegment.cpp | 4 ++-- modules/demux/dash/mpd/DASHSegment.h | 2 +- 8 files changed, 16 insertions(+), 14 deletions(-) diff --git a/modules/demux/adaptative/Streams.cpp b/modules/demux/adaptative/Streams.cpp index 633cc3b..1c7ff1d 100644 --- a/modules/demux/adaptative/Streams.cpp +++ b/modules/demux/adaptative/Streams.cpp @@ -221,7 +221,7 @@ size_t Stream::read(HTTPConnectionManager *connManager) if (chunk->getBytesToRead() == 0) { - chunk->onDownload(block->p_buffer, block->i_buffer); + chunk->onDownload(&block); chunk->getConnection()->releaseChunk(); currentChunk = NULL; delete chunk; diff --git a/modules/demux/adaptative/http/Chunk.h b/modules/demux/adaptative/http/Chunk.h index 4f4b120..22d5315 100644 --- a/modules/demux/adaptative/http/Chunk.h +++ b/modules/demux/adaptative/http/Chunk.h @@ -29,6 +29,8 @@ #include <string> #include <stdint.h> +typedef struct block_t block_t; + namespace adaptative { namespace http @@ -65,7 +67,7 @@ namespace adaptative void setBitrate (uint64_t bitrate); int getBitrate (); - virtual void onDownload (void *, size_t) {} + virtual void onDownload (block_t **) {} private: std::string url; diff --git a/modules/demux/adaptative/playlist/Segment.cpp b/modules/demux/adaptative/playlist/Segment.cpp index 4dcb1c5..3ac04f0 100644 --- a/modules/demux/adaptative/playlist/Segment.cpp +++ b/modules/demux/adaptative/playlist/Segment.cpp @@ -49,7 +49,7 @@ Chunk * ISegment::getChunk(const std::string &url) return new (std::nothrow) SegmentChunk(this, url); } -void ISegment::onChunkDownload(void *, size_t, Chunk *, BaseRepresentation *) +void ISegment::onChunkDownload(block_t **, Chunk *, BaseRepresentation *) { } @@ -121,9 +121,9 @@ void ISegment::SegmentChunk::setRepresentation(BaseRepresentation *rep_) rep = rep_; } -void ISegment::SegmentChunk::onDownload(void *data, size_t size) +void ISegment::SegmentChunk::onDownload(block_t **pp_block) { - segment->onChunkDownload(data, size, this, rep); + segment->onChunkDownload(pp_block, this, rep); } Segment::Segment(ICanonicalUrl *parent) : diff --git a/modules/demux/adaptative/playlist/Segment.h b/modules/demux/adaptative/playlist/Segment.h index 57426f9..9a672be 100644 --- a/modules/demux/adaptative/playlist/Segment.h +++ b/modules/demux/adaptative/playlist/Segment.h @@ -75,7 +75,7 @@ namespace adaptative public: SegmentChunk(ISegment *segment, const std::string &url); void setRepresentation(BaseRepresentation *); - virtual void onDownload(void *, size_t); // reimpl + virtual void onDownload(block_t **); // reimpl protected: ISegment *segment; @@ -83,7 +83,7 @@ namespace adaptative }; virtual Chunk * getChunk(const std::string &); - virtual void onChunkDownload(void *, size_t, Chunk *, BaseRepresentation *); + virtual void onChunkDownload(block_t **, Chunk *, BaseRepresentation *); }; class Segment : public ISegment diff --git a/modules/demux/dash/mp4/AtomsReader.cpp b/modules/demux/dash/mp4/AtomsReader.cpp index c7e42d3..173d85f 100644 --- a/modules/demux/dash/mp4/AtomsReader.cpp +++ b/modules/demux/dash/mp4/AtomsReader.cpp @@ -41,12 +41,12 @@ AtomsReader::~AtomsReader() delete rootbox; } -bool AtomsReader::parseBlock(void *buffer, size_t size, BaseRepresentation *rep) +bool AtomsReader::parseBlock(block_t *p_block, BaseRepresentation *rep) { if(!rep) return false; - stream_t *stream = stream_MemoryNew( object, (uint8_t *)buffer, size, true); + stream_t *stream = stream_MemoryNew( object, p_block->p_buffer, p_block->i_buffer, true); if (stream) { rootbox = new MP4_Box_t; @@ -57,7 +57,7 @@ bool AtomsReader::parseBlock(void *buffer, size_t size, BaseRepresentation *rep) } memset(rootbox, 0, sizeof(*rootbox)); rootbox->i_type = ATOM_root; - rootbox->i_size = size; + rootbox->i_size = p_block->i_buffer; if ( MP4_ReadBoxContainerChildren( stream, rootbox, 0 ) == 1 ) { #ifndef NDEBUG diff --git a/modules/demux/dash/mp4/AtomsReader.hpp b/modules/demux/dash/mp4/AtomsReader.hpp index 285aadf..ed04ffb 100644 --- a/modules/demux/dash/mp4/AtomsReader.hpp +++ b/modules/demux/dash/mp4/AtomsReader.hpp @@ -49,7 +49,7 @@ namespace dash public: AtomsReader(vlc_object_t *); ~AtomsReader(); - bool parseBlock(void *, size_t, adaptative::playlist::BaseRepresentation *); + bool parseBlock(block_t *, adaptative::playlist::BaseRepresentation *); protected: vlc_object_t *object; diff --git a/modules/demux/dash/mpd/DASHSegment.cpp b/modules/demux/dash/mpd/DASHSegment.cpp index 6422fb4..71f517b 100644 --- a/modules/demux/dash/mpd/DASHSegment.cpp +++ b/modules/demux/dash/mpd/DASHSegment.cpp @@ -49,11 +49,11 @@ Chunk* DashIndexSegment::toChunk(size_t index, BaseRepresentation *ctxrep) return chunk; } -void DashIndexSegment::onChunkDownload(void *data, size_t size, Chunk *, BaseRepresentation *rep) +void DashIndexSegment::onChunkDownload(block_t **pp_block, Chunk *, BaseRepresentation *rep) { if(!rep) return; AtomsReader br(rep->getPlaylist()->getVLCObject()); - br.parseBlock(data, size, rep); + br.parseBlock(*pp_block, rep); } diff --git a/modules/demux/dash/mpd/DASHSegment.h b/modules/demux/dash/mpd/DASHSegment.h index 4d106e1..4edeb36 100644 --- a/modules/demux/dash/mpd/DASHSegment.h +++ b/modules/demux/dash/mpd/DASHSegment.h @@ -41,7 +41,7 @@ namespace dash virtual Chunk* toChunk(size_t, BaseRepresentation * = NULL); //reimpl protected: - virtual void onChunkDownload(void *, size_t, Chunk *, BaseRepresentation *); //reimpl + virtual void onChunkDownload(block_t **, Chunk *, BaseRepresentation *); //reimpl }; } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
