[vlc-commits] macosx: fix crash in str_format_meta

2015-05-07 Thread David Fuhrmann
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

2015-05-07 Thread David Fuhrmann
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

2015-05-07 Thread Rémi Denis-Courmont
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

2015-05-07 Thread Francois Cartegnie
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

2015-05-07 Thread Francois Cartegnie
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

2015-05-07 Thread Francois Cartegnie
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

2015-05-07 Thread Francois Cartegnie
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

2015-05-07 Thread Rémi Denis-Courmont
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

2015-05-07 Thread Rémi Denis-Courmont
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

2015-05-07 Thread Rémi Denis-Courmont
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

2015-05-07 Thread Thomas Guillem
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