[vlc-commits] macosx: fix crash in str_format_meta
vlc/vlc-2.2 | branch: master | David Fuhrmann dfuhrm...@videolan.org | Thu May 7 19:29:51 2015 +0200| [ca28163fb0ed72a5aa2fa73c0b80475796985a23] | committer: David Fuhrmann macosx: fix crash in str_format_meta (cherry picked from commit e823a595a8aa041de17e23d8f84bcb90d5d48702) Signed-off-by: David Fuhrmann dfuhrm...@videolan.org http://git.videolan.org/gitweb.cgi/vlc/vlc-2.2.git/?a=commit;h=ca28163fb0ed72a5aa2fa73c0b80475796985a23 --- modules/gui/macosx/CoreInteraction.m | 12 +++- modules/gui/macosx/MainWindow.m | 12 +++- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/modules/gui/macosx/CoreInteraction.m b/modules/gui/macosx/CoreInteraction.m index 1fc4d6e..b749512 100644 --- a/modules/gui/macosx/CoreInteraction.m +++ b/modules/gui/macosx/CoreInteraction.m @@ -258,12 +258,14 @@ static VLCCoreInteraction *_o_sharedInstance = nil; return nil; } -NSString *o_name; +NSString *o_name = @; char *format = var_InheritString(VLCIntf, input-title-format); -char *formated = str_format_meta(p_input, format); -free(format); -o_name = [NSString stringWithUTF8String:formated]; -free(formated); +if (format) { +char *formated = str_format_meta(p_input, format); +free(format); +o_name = toNSStr(formated); +free(formated); +} NSURL * o_url = [NSURL URLWithString:[NSString stringWithUTF8String:psz_uri]]; free(psz_uri); diff --git a/modules/gui/macosx/MainWindow.m b/modules/gui/macosx/MainWindow.m index 875c71f..b712413 100644 --- a/modules/gui/macosx/MainWindow.m +++ b/modules/gui/macosx/MainWindow.m @@ -695,14 +695,16 @@ static VLCMainWindow *_o_sharedInstance = nil; input_thread_t * p_input; p_input = pl_CurrentInput(VLCIntf); if (p_input) { -NSString *aString; +NSString *aString = @; if (!config_GetPsz(VLCIntf, video-title)) { char *format = var_InheritString(VLCIntf, input-title-format); -char *formated = str_format_meta(p_input, format); -free(format); -aString = [NSString stringWithUTF8String:formated]; -free(formated); +if (format) { +char *formated = str_format_meta(p_input, format); +free(format); +aString = toNSStr(formated); +free(formated); +} } else aString = [NSString stringWithUTF8String:config_GetPsz(VLCIntf, video-title)]; ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] macosx: fix crash in str_format_meta
vlc | branch: master | David Fuhrmann dfuhrm...@videolan.org | Thu May 7 19:29:51 2015 +0200| [e823a595a8aa041de17e23d8f84bcb90d5d48702] | committer: David Fuhrmann macosx: fix crash in str_format_meta http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e823a595a8aa041de17e23d8f84bcb90d5d48702 --- modules/gui/macosx/CoreInteraction.m | 12 +++- modules/gui/macosx/MainWindow.m | 12 +++- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/modules/gui/macosx/CoreInteraction.m b/modules/gui/macosx/CoreInteraction.m index 5d13a5f..a9a7c76 100644 --- a/modules/gui/macosx/CoreInteraction.m +++ b/modules/gui/macosx/CoreInteraction.m @@ -248,12 +248,14 @@ static VLCCoreInteraction *_o_sharedInstance = nil; return nil; } -NSString *o_name; +NSString *o_name = @; char *format = var_InheritString(VLCIntf, input-title-format); -char *formated = str_format_meta(p_input, format); -free(format); -o_name = [NSString stringWithUTF8String:formated]; -free(formated); +if (format) { +char *formated = str_format_meta(p_input, format); +free(format); +o_name = toNSStr(formated); +free(formated); +} NSURL * o_url = [NSURL URLWithString:[NSString stringWithUTF8String:psz_uri]]; free(psz_uri); diff --git a/modules/gui/macosx/MainWindow.m b/modules/gui/macosx/MainWindow.m index 94a2301..6655857 100644 --- a/modules/gui/macosx/MainWindow.m +++ b/modules/gui/macosx/MainWindow.m @@ -695,14 +695,16 @@ static VLCMainWindow *_o_sharedInstance = nil; input_thread_t * p_input; p_input = pl_CurrentInput(VLCIntf); if (p_input) { -NSString *aString; +NSString *aString = @; if (!config_GetPsz(VLCIntf, video-title)) { char *format = var_InheritString(VLCIntf, input-title-format); -char *formated = str_format_meta(p_input, format); -free(format); -aString = [NSString stringWithUTF8String:formated]; -free(formated); +if (format) { +char *formated = str_format_meta(p_input, format); +free(format); +aString = toNSStr(formated); +free(formated); +} } else aString = [NSString stringWithUTF8String:config_GetPsz(VLCIntf, video-title)]; ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] httpd: remove stray vlc_object_waitpipe() call
vlc | branch: master | Rémi Denis-Courmont r...@remlab.net | Fri May 8 00:14:30 2015 +0300| [65940085a785a953ae9ab21471e45c4b7295afb5] | committer: Rémi Denis-Courmont httpd: remove stray vlc_object_waitpipe() call There is no actual usage of the waitpipe left in the HTTP server. http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=65940085a785a953ae9ab21471e45c4b7295afb5 --- src/network/httpd.c |5 - 1 file changed, 5 deletions(-) diff --git a/src/network/httpd.c b/src/network/httpd.c index 94dec90..3d31da5 100644 --- a/src/network/httpd.c +++ b/src/network/httpd.c @@ -967,11 +967,6 @@ static httpd_host_t *httpd_HostCreate(vlc_object_t *p_this, } for (host-nfd = 0; host-fds[host-nfd] != -1; host-nfd++); -if (vlc_object_waitpipe(VLC_OBJECT(host)) == -1) { -msg_Err(host, signaling pipe error: %s, vlc_strerror_c(errno)); -goto error; -} - host-port = port; host-i_url= 0; host-url = NULL; ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] demux: ts: really fix #14257
vlc | branch: master | Francois Cartegnie fcvlc...@free.fr | Wed May 6 18:56:50 2015 +0200| [9acc77358826a222405f75e1a75b80139ecd9d06] | committer: Francois Cartegnie demux: ts: really fix #14257 We need to unselect missing PID on PMT update as some providers add overlapping delay to the last packet of prev pid. reverts commit 50accb82e6e8b10a3f3493091dfcd832405ba234 http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9acc77358826a222405f75e1a75b80139ecd9d06 --- modules/demux/mpeg/ts.c | 18 ++ 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/modules/demux/mpeg/ts.c b/modules/demux/mpeg/ts.c index 99fb4a6..7d8df00 100644 --- a/modules/demux/mpeg/ts.c +++ b/modules/demux/mpeg/ts.c @@ -5392,22 +5392,6 @@ static void PMTCallBack( void *data, dvbpsi_pmt_t *p_dvbpsipmt ) } else dvbpsi_pmt_delete( p_dvbpsipmt ); } -/* see es_out.c:2045 */ -for( int i = 0; i old_es_rm.i_size; i++ ) -{ -bool b_reset = false; -if( old_es_rm.p_elems[i]-u.p_pes-es.id ) -{ -es_out_Control( p_demux-out, ES_OUT_GET_ES_STATE, -old_es_rm.p_elems[i]-u.p_pes-es.id, b_reset ); -} -if( b_reset ) -{ -es_out_Control( p_demux-out, ES_OUT_RESET_PCR ); -break; -} -} - /* Decref or clean now unused es */ for( int i = 0; i old_es_rm.i_size; i++ ) PIDRelease( p_demux, old_es_rm.p_elems[i] ); @@ -5667,6 +5651,8 @@ static void ts_pes_Del( demux_t *p_demux, ts_pes_t *pes ) { if( pes-es.id ) { +/* Ensure we don't wait for overlap hacks #14257 */ +es_out_Control( p_demux-out, ES_OUT_SET_ES_STATE, pes-es.id, false ); es_out_Del( p_demux-out, pes-es.id ); p_demux-p_sys-i_pmt_es--; } ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] demux: adaptative: don't append over filenames
vlc | branch: master | Francois Cartegnie fcvlc...@free.fr | Thu May 7 18:52:38 2015 +0200| [0335f63454e202bf285fa8b99db94fa08531d800] | committer: Francois Cartegnie demux: adaptative: don't append over filenames http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=0335f63454e202bf285fa8b99db94fa08531d800 --- modules/demux/adaptative/playlist/Url.cpp | 16 ++-- modules/demux/adaptative/playlist/Url.hpp |4 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/modules/demux/adaptative/playlist/Url.cpp b/modules/demux/adaptative/playlist/Url.cpp index cec9f81..e84937e 100644 --- a/modules/demux/adaptative/playlist/Url.cpp +++ b/modules/demux/adaptative/playlist/Url.cpp @@ -42,12 +42,7 @@ bool Url::hasScheme() const if(components.empty()) return false; -const Component *comp = components[0]; -if(comp-component.compare(0, 7, http://;) - comp-component.compare(0, 8, https://;)) -return false; - -return true; +return components[0].b_scheme; } Url Url::prepend(const Component comp) @@ -58,6 +53,8 @@ Url Url::prepend(const Component comp) Url Url::append(const Component comp) { +if(!components.empty() !components.back().b_dir) +components.pop_back(); components.push_back(comp); return *this; } @@ -70,6 +67,8 @@ Url Url::prepend(const Url url) Url Url::append(const Url url) { +if(!components.empty() !components.back().b_dir) +components.pop_back(); components.insert(components.end(), url.components.begin(), url.components.end()); return *this; } @@ -98,5 +97,10 @@ Url::Component::Component(const std::string str, const MediaSegmentTemplate *t { component = str; templ = templ_; +if(!component.empty()) +{ +b_dir = (component.back()=='/'); +b_scheme = !component.compare(0, 7, http://;) || !component.compare(0, 8, https://;); +} } diff --git a/modules/demux/adaptative/playlist/Url.hpp b/modules/demux/adaptative/playlist/Url.hpp index d2b36b7..e40ccf9 100644 --- a/modules/demux/adaptative/playlist/Url.hpp +++ b/modules/demux/adaptative/playlist/Url.hpp @@ -47,6 +47,10 @@ namespace adaptative protected: std::string component; const MediaSegmentTemplate *templ; + +private: +bool b_scheme; +bool b_dir; }; Url(); ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] demux: adaptative: add queue between stream_demux and real es_out_send
vlc | branch: master | Francois Cartegnie fcvlc...@free.fr | Sat May 2 15:37:36 2015 +0200| [21edb9b4a0f78c743309b2297ad6e13d67f1fa0e] | committer: Francois Cartegnie demux: adaptative: add queue between stream_demux and real es_out_send http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=21edb9b4a0f78c743309b2297ad6e13d67f1fa0e --- modules/demux/adaptative/Streams.cpp | 94 +++--- modules/demux/adaptative/Streams.hpp | 16 +- 2 files changed, 103 insertions(+), 7 deletions(-) diff --git a/modules/demux/adaptative/Streams.cpp b/modules/demux/adaptative/Streams.cpp index 3e53724..848eee6 100644 --- a/modules/demux/adaptative/Streams.cpp +++ b/modules/demux/adaptative/Streams.cpp @@ -216,6 +216,7 @@ size_t Stream::read(HTTPConnectionManager *connManager) readsize = block-i_buffer; output-pushBlock(block); +output-sendToDecoder(INT64_MAX - VLC_TS_0); return readsize; } @@ -239,7 +240,6 @@ AbstractStreamOutput::AbstractStreamOutput(demux_t *demux) demuxstream = NULL; pcr = VLC_TS_0; group = -1; -escount = 0; seekable = true; fakeesout = new es_out_t; @@ -273,7 +273,7 @@ int AbstractStreamOutput::getGroup() const int AbstractStreamOutput::esCount() const { -return escount; +return queues.size(); } void AbstractStreamOutput::pushBlock(block_t *block) @@ -288,28 +288,110 @@ bool AbstractStreamOutput::seekAble() const void AbstractStreamOutput::setPosition(mtime_t nztime) { +std::listDemuxed *::const_iterator it; +for(it=queues.begin(); it!=queues.end();++it) +{ +Demuxed *pair = *it; +if(pair-p_queue pair-p_queue-i_dts VLC_TS_0 + nztime) +pair-drop(); +} +pcr = VLC_TS_0; es_out_Control(realdemux-out, ES_OUT_SET_NEXT_DISPLAY_TIME, VLC_TS_0 + nztime); } +void AbstractStreamOutput::sendToDecoder(mtime_t nzdeadline) +{ +std::listDemuxed *::const_iterator it; +for(it=queues.begin(); it!=queues.end();++it) +{ +Demuxed *pair = *it; +while(pair-p_queue pair-p_queue-i_dts = VLC_TS_0 + nzdeadline) +{ +block_t *p_block = pair-p_queue; +pair-p_queue = pair-p_queue-p_next; +p_block-p_next = NULL; + +if(pair-pp_queue_last == p_block-p_next) +pair-pp_queue_last = pair-p_queue; + +realdemux-out-pf_send(realdemux-out, pair-es_id, p_block); +} +} +} + +void AbstractStreamOutput::dropQueues() +{ +std::listDemuxed *::const_iterator it; +for(it=queues.begin(); it!=queues.end();++it) +(*it)-drop(); +} + +AbstractStreamOutput::Demuxed::Demuxed() +{ +p_queue = NULL; +pp_queue_last = p_queue; +es_id = NULL; +} + +AbstractStreamOutput::Demuxed::~Demuxed() +{ +drop(); +} + +void AbstractStreamOutput::Demuxed::drop() +{ +block_ChainRelease(p_queue); +p_queue = NULL; +pp_queue_last = p_queue; +} + /* Static callbacks */ es_out_id_t * AbstractStreamOutput::esOutAdd(es_out_t *fakees, const es_format_t *p_fmt) { AbstractStreamOutput *me = (AbstractStreamOutput *) fakees-p_sys; -me-escount++; -return me-realdemux-out-pf_add(me-realdemux-out, p_fmt); +es_out_id_t *p_es = me-realdemux-out-pf_add(me-realdemux-out, p_fmt); +if(p_es) +{ +Demuxed *pair = new (std::nothrow) Demuxed(); +if(pair) +{ +pair-es_id = p_es; +me-queues.push_back(pair); +} +} +return p_es; } int AbstractStreamOutput::esOutSend(es_out_t *fakees, es_out_id_t *p_es, block_t *p_block) { AbstractStreamOutput *me = (AbstractStreamOutput *) fakees-p_sys; -return me-realdemux-out-pf_send(me-realdemux-out, p_es, p_block); +std::listDemuxed *::const_iterator it; +for(it=me-queues.begin(); it!=me-queues.end();++it) +{ +Demuxed *pair = *it; +if(pair-es_id == p_es) +{ +block_ChainLastAppend(pair-pp_queue_last, p_block); +break; +} +} +return VLC_SUCCESS; } void AbstractStreamOutput::esOutDel(es_out_t *fakees, es_out_id_t *p_es) { AbstractStreamOutput *me = (AbstractStreamOutput *) fakees-p_sys; -me-escount--; +std::listDemuxed *::iterator it; +for(it=me-queues.begin(); it!=me-queues.end();++it) +{ +if((*it)-es_id == p_es) +{ +delete *it; +me-queues.erase(it); +break; +} +} me-realdemux-out-pf_del(me-realdemux-out, p_es); } diff --git a/modules/demux/adaptative/Streams.hpp b/modules/demux/adaptative/Streams.hpp index 92fbeef..fc4d876 100644 --- a/modules/demux/adaptative/Streams.hpp +++ b/modules/demux/adaptative/Streams.hpp @@ -25,6 +25,7 @@ #endif #include string +#include list #include vlc_common.h #include StreamsType.hpp @@ -93,11 +94,12 @@ namespace adaptative int esCount() const; bool seekAble() const;
[vlc-commits] demux: dash: set SegmentBase as segment itself
vlc | branch: master | Francois Cartegnie fcvlc...@free.fr | Thu May 7 17:17:27 2015 +0200| [d8a926a2b8fb6b0a94c0be8b19b4fcfcd8cc08aa] | committer: Francois Cartegnie demux: dash: set SegmentBase as segment itself Fixes playback with single file, simple profile http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=d8a926a2b8fb6b0a94c0be8b19b4fcfcd8cc08aa --- modules/demux/adaptative/playlist/SegmentBase.cpp |3 +- modules/demux/adaptative/playlist/SegmentBase.h|7 ++- .../adaptative/playlist/SegmentInformation.cpp |4 ++ modules/demux/dash/mpd/IsoffMainParser.cpp | 49 ++-- 4 files changed, 26 insertions(+), 37 deletions(-) diff --git a/modules/demux/adaptative/playlist/SegmentBase.cpp b/modules/demux/adaptative/playlist/SegmentBase.cpp index 1900f54..573751c 100644 --- a/modules/demux/adaptative/playlist/SegmentBase.cpp +++ b/modules/demux/adaptative/playlist/SegmentBase.cpp @@ -26,7 +26,8 @@ using namespace adaptative::playlist; -SegmentBase::SegmentBase() : +SegmentBase::SegmentBase(ICanonicalUrl *parent) : + Segment(parent), Initializable(), Indexable() { diff --git a/modules/demux/adaptative/playlist/SegmentBase.h b/modules/demux/adaptative/playlist/SegmentBase.h index be6f41b..f9c55ad 100644 --- a/modules/demux/adaptative/playlist/SegmentBase.h +++ b/modules/demux/adaptative/playlist/SegmentBase.h @@ -27,16 +27,19 @@ #include Segment.h #include SegmentInfoCommon.h +#include ../tools/Properties.hpp namespace adaptative { namespace playlist { -class SegmentBase : public InitializableSegment, +/* SegmentBase can contain only one segment */ +class SegmentBase : public Segment, +public InitializableSegment, public IndexableSegment { public: -SegmentBase (); +SegmentBase (ICanonicalUrl *); virtual ~SegmentBase(); }; } diff --git a/modules/demux/adaptative/playlist/SegmentInformation.cpp b/modules/demux/adaptative/playlist/SegmentInformation.cpp index ec4b49a..350d460 100644 --- a/modules/demux/adaptative/playlist/SegmentInformation.cpp +++ b/modules/demux/adaptative/playlist/SegmentInformation.cpp @@ -101,6 +101,10 @@ vectorISegment * SegmentInformation::getSegments(SegmentInfoType type) const retSegments.insert( retSegments.end(), list.begin(), list.end() ); } } +else if( segmentBase ) +{ +retSegments.push_back( segmentBase ); +} } break; diff --git a/modules/demux/dash/mpd/IsoffMainParser.cpp b/modules/demux/dash/mpd/IsoffMainParser.cpp index d024bad..1ba08be 100644 --- a/modules/demux/dash/mpd/IsoffMainParser.cpp +++ b/modules/demux/dash/mpd/IsoffMainParser.cpp @@ -257,51 +257,32 @@ voidIsoffMainParser::setRepresentations (Node *adaptationSetNode, Adaptation } size_t IsoffMainParser::parseSegmentBase(Node * segmentBaseNode, SegmentInformation *info) { -size_t list_count = 0; +SegmentBase *base; -if(!segmentBaseNode) +if(!segmentBaseNode || !(base = new (std::nothrow) SegmentBase(info))) return 0; -else if(segmentBaseNode-hasAttribute(indexRange)) +if(segmentBaseNode-hasAttribute(indexRange)) { -SegmentList *list = new SegmentList(); -Segment *seg; - size_t start = 0, end = 0; if (std::sscanf(segmentBaseNode-getAttributeValue(indexRange).c_str(), %zu-%zu, start, end) == 2) { -IndexSegment *index = new DashIndexSegment(info); -index-setByteRange(start, end); -list-indexSegment.Set(index); -/* index must be before data, so data starts at index end */ -seg = new Segment(info); -seg-setByteRange(end + 1, 0); -} -else -{ -seg = new Segment(info); +IndexSegment *index = new (std::nothrow) DashIndexSegment(info); +if(index) +{ +index-setByteRange(start, end); +base-indexSegment.Set(index); +/* index must be before data, so data starts at index end */ +base-setByteRange(end + 1, 0); +} } +} -list_count++; -list-addSegment(seg); -info-setSegmentList(list); +parseInitSegment(DOMHelper::getFirstChildElementByName(segmentBaseNode, Initialization), base, info); -Node *initSeg = DOMHelper::getFirstChildElementByName(segmentBaseNode, Initialization); -if(initSeg) -{ -SegmentBase *base = new SegmentBase(); -parseInitSegment(initSeg, base, info); -info-setSegmentBase(base); -} -} -else -{ -SegmentBase *base = new SegmentBase(); -
[vlc-commits] block_FifoShow: assume the FIFO is not empty
vlc | branch: master | Rémi Denis-Courmont r...@remlab.net | Thu May 7 20:04:08 2015 +0300| [fec56da812ff920f39f628568a9a3d1c3a718bf3] | committer: Rémi Denis-Courmont block_FifoShow: assume the FIFO is not empty All existing call sites are in muxers and they all check that the FIFO is not empty, and assume that it cannot be emptied asynchronously. So simplify accordingly. http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=fec56da812ff920f39f628568a9a3d1c3a718bf3 --- src/misc/fifo.c | 14 -- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/misc/fifo.c b/src/misc/fifo.c index b6cc0ca..d50d794 100644 --- a/src/misc/fifo.c +++ b/src/misc/fifo.c @@ -317,30 +317,24 @@ block_t *block_FifoGet(block_fifo_t *fifo) /** * Peeks the first block in the FIFO. - * If necessary, wait until there is one block. - * This function is (always) a cancellation point. * * @warning This function leaves the block in the FIFO. * You need to protect against concurrent threads who could dequeue the block. * Preferrably, there should be only one thread reading from the FIFO. * + * @warning This function is undefined if the FIFO is empty. + * * @return a valid block. */ block_t *block_FifoShow( block_fifo_t *p_fifo ) { block_t *b; -vlc_testcancel( ); - vlc_mutex_lock( p_fifo-lock ); -mutex_cleanup_push( p_fifo-lock ); - -while( p_fifo-p_first == NULL ) -vlc_cond_wait( p_fifo-wait, p_fifo-lock ); - +assert(p_fifo-p_first != NULL); b = p_fifo-p_first; +vlc_mutex_unlock( p_fifo-lock ); -vlc_cleanup_run (); return b; } ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] fifo: cosmetic change
vlc | branch: master | Rémi Denis-Courmont r...@remlab.net | Thu May 7 20:06:29 2015 +0300| [8d57da7a2e0822da4a2559c91a97aab7e30a437e] | committer: Rémi Denis-Courmont fifo: cosmetic change http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=8d57da7a2e0822da4a2559c91a97aab7e30a437e --- src/misc/fifo.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/misc/fifo.c b/src/misc/fifo.c index d50d794..a9250f9 100644 --- a/src/misc/fifo.c +++ b/src/misc/fifo.c @@ -171,7 +171,7 @@ void vlc_fifo_QueueUnlocked(block_fifo_t *fifo, block_t *block) block = block-p_next; } -vlc_cond_signal(fifo-wait); +vlc_fifo_Signal(fifo); } /** ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] sout: add an assertion
vlc | branch: master | Rémi Denis-Courmont r...@remlab.net | Thu May 7 20:05:54 2015 +0300| [053ab8650c37456224562efc630b70b8652948f2] | committer: Rémi Denis-Courmont sout: add an assertion http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=053ab8650c37456224562efc630b70b8652948f2 --- src/stream_output/stream_output.c |2 ++ 1 file changed, 2 insertions(+) diff --git a/src/stream_output/stream_output.c b/src/stream_output/stream_output.c index bfdda15..b03bb84 100644 --- a/src/stream_output/stream_output.c +++ b/src/stream_output/stream_output.c @@ -548,6 +548,8 @@ int sout_MuxGetStream( sout_mux_t *p_mux, unsigned i_blocks, mtime_t *pi_dts ) mtime_t i_dts = 0; int i_stream = -1; +assert( i_blocks 0 ); + for( int i = 0; i p_mux-i_nb_inputs; i++ ) { sout_input_t *p_input = p_mux-pp_inputs[i]; ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] demux/playlist: ensure that a playlist is a file
vlc | branch: master | Thomas Guillem tho...@gllm.fr | Thu May 7 16:55:01 2015 +0200| [dc39e0ea3066898e67c67d3b4004f0fe869ac3d4] | committer: Thomas Guillem demux/playlist: ensure that a playlist is a file A lot of playlist probe only check the file extension that returns true for a directory too. http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=dc39e0ea3066898e67c67d3b4004f0fe869ac3d4 --- modules/demux/playlist/asx.c |1 + modules/demux/playlist/b4s.c |1 + modules/demux/playlist/dvb.c |5 +++-- modules/demux/playlist/gvp.c |1 + modules/demux/playlist/ifo.c |1 + modules/demux/playlist/m3u.c |1 + modules/demux/playlist/playlist.h | 10 ++ modules/demux/playlist/pls.c |1 + modules/demux/playlist/podcast.c |1 + modules/demux/playlist/qtl.c |1 + modules/demux/playlist/ram.c |1 + modules/demux/playlist/sgimb.c |1 + modules/demux/playlist/shoutcast.c |1 + modules/demux/playlist/wpl.c |2 ++ 14 files changed, 26 insertions(+), 2 deletions(-) diff --git a/modules/demux/playlist/asx.c b/modules/demux/playlist/asx.c index 6f6e666..cd93692 100644 --- a/modules/demux/playlist/asx.c +++ b/modules/demux/playlist/asx.c @@ -145,6 +145,7 @@ int Import_ASX( vlc_object_t *p_this ) { demux_t *p_demux = (demux_t *)p_this; +CHECK_FILE(); if( demux_IsPathExtension( p_demux, .asx ) || demux_IsPathExtension( p_demux, .wax ) || demux_IsPathExtension( p_demux, .wvx ) || diff --git a/modules/demux/playlist/b4s.c b/modules/demux/playlist/b4s.c index d9c0465..cea6d85 100644 --- a/modules/demux/playlist/b4s.c +++ b/modules/demux/playlist/b4s.c @@ -49,6 +49,7 @@ int Import_B4S( vlc_object_t *p_this ) { demux_t *demux = (demux_t *)p_this; +CHECK_FILE(); if( !demux_IsPathExtension( demux, .b4s ) !demux_IsForced( demux, b4s-open ) ) return VLC_EGENERIC; diff --git a/modules/demux/playlist/dvb.c b/modules/demux/playlist/dvb.c index 0b5e796..94289a4 100644 --- a/modules/demux/playlist/dvb.c +++ b/modules/demux/playlist/dvb.c @@ -42,10 +42,11 @@ static int Demux(demux_t *); static input_item_t *ParseLine(char *line); /** Detect dvb-utils zap channels.conf format */ -int Import_DVB(vlc_object_t *obj) +int Import_DVB(vlc_object_t *p_this) { -demux_t *demux = (demux_t *)obj; +demux_t *demux = (demux_t *)p_this; +CHECK_FILE(); if (!demux_IsPathExtension(demux, .conf ) !demux-b_force ) return VLC_EGENERIC; diff --git a/modules/demux/playlist/gvp.c b/modules/demux/playlist/gvp.c index e28e09b..2eca158 100644 --- a/modules/demux/playlist/gvp.c +++ b/modules/demux/playlist/gvp.c @@ -73,6 +73,7 @@ int Import_GVP( vlc_object_t *p_this ) int i_peek, i, b_found = false; const uint8_t *p_peek; +CHECK_FILE(); i_peek = stream_Peek( p_demux-s, p_peek, MAX_LINE ); for( i = 0; i i_peek - (int)sizeof(gvp_version:); i++ ) diff --git a/modules/demux/playlist/ifo.c b/modules/demux/playlist/ifo.c index e031f8b..7d3bf4f 100644 --- a/modules/demux/playlist/ifo.c +++ b/modules/demux/playlist/ifo.c @@ -47,6 +47,7 @@ int Import_IFO( vlc_object_t *p_this ) { demux_t *p_demux = (demux_t *)p_this; +CHECK_FILE(); if( !p_demux-psz_file ) return VLC_EGENERIC; diff --git a/modules/demux/playlist/m3u.c b/modules/demux/playlist/m3u.c index 02a9598..a0572ff 100644 --- a/modules/demux/playlist/m3u.c +++ b/modules/demux/playlist/m3u.c @@ -69,6 +69,7 @@ int Import_M3U( vlc_object_t *p_this ) char *(*pf_dup) (const char *) = GuessEncoding; int offset = 0; +CHECK_FILE(); if( stream_Peek( p_demux-s, p_peek, 3 ) == 3 !memcmp( p_peek, \xef\xbb\xbf, 3) ) { diff --git a/modules/demux/playlist/playlist.h b/modules/demux/playlist/playlist.h index 64245f2..ea6ef4b 100644 --- a/modules/demux/playlist/playlist.h +++ b/modules/demux/playlist/playlist.h @@ -82,24 +82,34 @@ extern input_item_t * GetCurrentItem(demux_t *p_demux); bool CheckContentType( stream_t * p_stream, const char * psz_ctype ); +#define CHECK_FILE() do { \ +bool b_is_dir = false; \ +stream_Control( ((demux_t *)p_this)-s, STREAM_IS_DIRECTORY, b_is_dir ); \ +if( b_is_dir ) \ +return VLC_EGENERIC; \ +} while(0) + #define STANDARD_DEMUX_INIT_MSG( msg ) do { \ DEMUX_INIT_COMMON();\ msg_Dbg( p_demux, %s, msg ); } while(0) #define DEMUX_BY_EXTENSION_MSG( ext, msg ) \ demux_t *p_demux = (demux_t *)p_this; \ +CHECK_FILE(); \ if( !demux_IsPathExtension( p_demux, ext ) ) \ return VLC_EGENERIC; \ STANDARD_DEMUX_INIT_MSG( msg ); #define DEMUX_BY_EXTENSION_OR_FORCED_MSG( ext, module, msg ) \ demux_t *p_demux = (demux_t *)p_this; \ +CHECK_FILE(); \ if( !demux_IsPathExtension( p_demux, ext ) !demux_IsForced( p_demux, module ) ) \ return VLC_EGENERIC; \ STANDARD_DEMUX_INIT_MSG( msg