[vlc-devel] [PATCH 1/6] input: change ITEM_TYPE_NET handling

Thomas Guillem thomas at gllm.fr
Tue Mar 24 15:45:12 CET 2015


When an item was a NET type, there was no way to distinguish if the item was a
file, a playlist or directory.

Replace ITEM_TYPE_NET by ITEM_TYPE_STREAM that is set for streams (rtsp,
httplive, mms...).

Add a new variable, b_net in addition to i_type. This variable is automatically
set when creating a new Item (set to true for ITEM_TYPE_STREAM). It can be
overridden via the new input_item_NewWithTypeExt function. This new function
will allow accesses to create FILE, or DIRECTORY items with b_net set to true.

Unless forced, the preparser won't parse items with b_net == true.
---
 include/vlc_input_item.h                          |  14 ++-
 modules/demux/playlist/sgimb.c                    |   2 +-
 modules/gui/qt4/components/playlist/vlc_model.cpp |   2 +-
 modules/gui/qt4/pixmaps/types/type_net.png        | Bin 783 -> 0 bytes
 modules/gui/qt4/pixmaps/types/type_net.svgz       | Bin 7603 -> 0 bytes
 modules/gui/qt4/pixmaps/types/type_stream.png     | Bin 0 -> 783 bytes
 modules/gui/qt4/pixmaps/types/type_stream.svgz    | Bin 0 -> 7603 bytes
 modules/gui/qt4/vlc.qrc                           |   2 +-
 modules/services_discovery/sap.c                  |   5 +-
 src/input/item.c                                  | 140 +++++++++++++---------
 src/libvlccore.sym                                |   1 +
 src/playlist/preparser.c                          |   6 +-
 12 files changed, 104 insertions(+), 68 deletions(-)
 delete mode 100644 modules/gui/qt4/pixmaps/types/type_net.png
 delete mode 100644 modules/gui/qt4/pixmaps/types/type_net.svgz
 create mode 100644 modules/gui/qt4/pixmaps/types/type_stream.png
 create mode 100644 modules/gui/qt4/pixmaps/types/type_stream.svgz

diff --git a/include/vlc_input_item.h b/include/vlc_input_item.h
index 8502dd3..d0a6854 100644
--- a/include/vlc_input_item.h
+++ b/include/vlc_input_item.h
@@ -85,6 +85,8 @@ struct input_item_t
     vlc_mutex_t lock;                 /**< Lock for the item */
 
     uint8_t     i_type;              /**< Type (file, disc, ... see input_item_type_e) */
+    bool        b_net;               /**< Net: always true for TYPE_STREAM, it
+                                          depends for others types */
     bool        b_error_when_reading;/**< Error When Reading */
 };
 
@@ -98,7 +100,7 @@ enum input_item_type_e
     ITEM_TYPE_DISC,
     ITEM_TYPE_CDDA,
     ITEM_TYPE_CARD,
-    ITEM_TYPE_NET,
+    ITEM_TYPE_STREAM,
     ITEM_TYPE_PLAYLIST,
     ITEM_TYPE_NODE,
 
@@ -258,6 +260,16 @@ VLC_API input_item_t * input_item_NewWithType( const char *psz_uri, const char *
 /**
  * This function creates a new input_item_t with the provided information.
  *
+ * \param i_net 1/0: force b_net to true/false, -1: default (guess it)
+ *
+ * XXX You may also use input_item_New, input_item_NewExt, or
+ * input_item_NewWithType as they need less arguments.
+ */
+VLC_API input_item_t * input_item_NewWithTypeExt( const char *psz_uri, const char *psz_name, int i_options, const char *const *ppsz_options, unsigned i_option_flags, mtime_t i_duration, int i_type, int i_net ) VLC_USED;
+
+/**
+ * This function creates a new input_item_t with the provided information.
+ *
  * Provided for convenience.
  */
 VLC_API input_item_t * input_item_NewExt( const char *psz_uri, const char *psz_name, int i_options, const char *const *ppsz_options, unsigned i_option_flags, mtime_t i_duration ) VLC_USED;
diff --git a/modules/demux/playlist/sgimb.c b/modules/demux/playlist/sgimb.c
index 7aaa886..fd2e064 100644
--- a/modules/demux/playlist/sgimb.c
+++ b/modules/demux/playlist/sgimb.c
@@ -374,7 +374,7 @@ static int Demux ( demux_t *p_demux )
 
     p_child = input_item_NewWithType( p_sys->psz_uri,
                       p_sys->psz_name ? p_sys->psz_name : p_sys->psz_uri,
-                      0, NULL, 0, p_sys->i_duration, ITEM_TYPE_NET );
+                      0, NULL, 0, p_sys->i_duration, ITEM_TYPE_STREAM );
 
     if( !p_child )
     {
diff --git a/modules/gui/qt4/components/playlist/vlc_model.cpp b/modules/gui/qt4/components/playlist/vlc_model.cpp
index 9df4bfb..40465a2 100644
--- a/modules/gui/qt4/components/playlist/vlc_model.cpp
+++ b/modules/gui/qt4/components/playlist/vlc_model.cpp
@@ -57,7 +57,7 @@ VLCModel::VLCModel( intf_thread_t *_p_intf, QObject *parent )
     ADD_ICON( DISC, ":/type/disc" );
     ADD_ICON( CDDA, ":/type/cdda" );
     ADD_ICON( CARD, ":/type/capture-card" );
-    ADD_ICON( NET, ":/type/net" );
+    ADD_ICON( STREAM, ":/type/stream" );
     ADD_ICON( PLAYLIST, ":/type/playlist" );
     ADD_ICON( NODE, ":/type/node" );
 #undef ADD_ICON
diff --git a/modules/gui/qt4/pixmaps/types/type_net.png b/modules/gui/qt4/pixmaps/types/type_net.png
deleted file mode 100644
index faf7ba992a8971a07e7b627b3c701676952de0b2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 783
zcmV+q1MvKbP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ at H10*pySK~y-)jgwzUQ*ji>O){gP*T9HyYunZBPSd&@ZqDVpcdn3a
zX&YwJum at 8z($>sB)0z`q!w|zi`4DZ=7L|@7%pMdXv|!T1wt}A2wFoLo3nC=^c6UKh
zrq&O>{P=Nx=X1{QobyWpkhE6p+Qu+UwOlTrqA1y{T%H%DC~7h%C#R0JB`4fpd!T7L
zO(v5?XzlR at SO3_TTlZ&S at 0r9|OXafL?S?|33W`Lc^bG;*N?{o72WQX2ug_k6$2hCo
z{vd2k9q<m{!}Rntyk0K~)S4K3H#GrJT57smeW8A7aP$*~$3DaJWEKrq?TE!<oI;@x
z0)YS=4hJM;)`N9`c=U$GmLFZNn`m at DhoR&QGQ}iDMn)3=-QC?#t2Mt at vfu!0!7_%1
zhL-2&=V8Bo1C=%HFq*5--#>sBdpmqSKlcQm&j+W|37t*{9*?J71*lZ2D!<>4Xf(=2
zi$o%*z0?TvIR`3Q!zjNpj^dJPbar;aYPCYI*CRdsVACo<C=?QPb at iB-m_RTXL^vFV
z$K%0?ssM^EhM=ttK~wVvl-3Hl@)!yW3&H2}6>Dp-ozdxk_4V~}j`3`IdwZcOaUrXG
z2HC8nr)MD6KY~J8fWwqxDPFgAT at Xm}pIR&y*lad5H#c)KnJbW`?Sj}Gg!t4;5V-~}
zeIc3uVxu`oCM2?NCX)$eWo4@(^3HPrBKIVWMk6vw`OlT;36m%~M5hTQ`ExYQaLxvU
z0V3sPkVlHy)~Vx>KW1dpf=x$xMLcOyn?Q2(EkP<5_Z^V_5lS`h`6TU%|C25M!baM=
zpBR)%ncbV&{|TsReLPir?e(550UdYd7E*TX^tKJWTm0`mb=P3r_b>h1SO$G3HtYZZ
N002ovPDHLkV1lxzT+aXi

diff --git a/modules/gui/qt4/pixmaps/types/type_net.svgz b/modules/gui/qt4/pixmaps/types/type_net.svgz
deleted file mode 100644
index 873e9453e6e15611109b02656989b8a1714885fb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7603
zcmV;k9ZcdMiwFP!000000PS5{b6dHQe)q57YF^@6k;46=*pnJxW-CuywMl9pw`hvC
zwUJ0IMcdMB?SJ2|yMc3X4k;bY#GXv5B2~sZKp&vd=>GZwka_WkyX&jj=k at OPa=UqX
zq8I99w%)9^7nhq4FHipR=O5?kWOln>ZZ4Kr+s*pr$!2@<hwq=g_?P*7_IkHo?$;Ny
zFPHm|vp;VBdb?WQtY^RbxZmHLpPhaA@?~*Z8W-E$hqLFi`TYB5&tBYq{_t!zn_=F~
z?fJ#(<w<$r=F{$q2`^S>>#Ozkdb7Vh(+hoe(vz=x@)gZ~`FXwCUSDrFxBTYj_Pd67
zck#ZXCT_l1Cek_QGiA<<nS)|}d%xK)@8-i-!Q-)4jZ*3ieLdyVsLt=MAc_Z>;of$3
zi2nxv>t3i0i`(s|-D>?FZ>|@c_5SS5pWk$ybG5kGUo^v1=?~@|Y{_PMy}rF!uGY6_
zwVmJpa(S`;2yF=b^l^Rp;p4u0yu5gMg4G#*Xf#JlZyD#j>ro4r7G}1~NoOXh44+?Y
zSH!`~ll}e8`oFNA1;+hpIL!L)X1m+Z-(Oy>h4$>@_IiExezn}~*B>@#pRZOT6#DDz
zdVBHd3ak0>>GJG<_U`QF^6q+hb9+V;$bWg7o6U!#v)o<WK<HT=?Yys at -=p`%#rpj%
zQHeb0$#Dm|cFT*)<<-B at KhR+zn$13x=Rfb3n_KMQ^~;m%<$ia0_dC4^S%vJ~DMS^t
ziBY9f?56QLqJx^VF)4cIPwgTo7i`X_W?@5e`uWLtg1>Ao_t48vx9i=XXm9_0^OxIo
zN40x-;=70U_q;tO1{;I!o9|wp%>6<IlY{B0SI4PW$EisyLrJ)3Y}d^?fBtc|hK+uQ
zzt_uML)Q#bcVV@?x>~QGhRdrj%lq4t+1ZoC{kSw9+Y}Q`3f`Y8`dz?IbMP4(qw~V~
zXccXNQ8{Jr*K_y0m2g;?<dxNFAZg2kXg?IRQ3C-V60L?r$K<N~ljIt5{26k+Uf%w-
zo%HfT%^lpq_oea0aP&$#o824en1Q0?n0pC;HMCp5uqpYRoA!H+1%^e?-VECB&~6>t
zwNtujf7;eoruAISW5+buzTIzcdZL17Xwz!0=j}W|s{Q at dT6*VOOmVrtKi9vX at iXMM
z-JO5=c)4E>-r2r?f4hb_RVT^EXEpOM&y%yNC(f#ySznwDcc^RMVZVoBq89Duez5+E
z`!+37PHC_=#X~r~urT|<_S}=YE)-eFU^l^>TUhH&(^!@YbiX=>`~Tf{Wxt;HYIsI^
z_?Sxm11jWG)$#A4jK39C{4FTr)79`FP6?l;g1^23{x;O_ at 2`9hs2-EHy2lL&2z$Gw
zC>J61`fh)=y1kWs=Dr0c&}#O-JkNKpUcHL1-uz$JlT7W&o_>E%5Az+u>GREY^V52_
zZD at 5jil^VlXmzf%Z(hF*KN_L!c5|Wlr>A$e(!ULF-~Je<=tHdZKhn<+Q}jkn at e`A?
z4L@#*pCNrWyyc$*a;;<V4Lf>*9Sy}w4Lg2<oe_OV1M$2%pf}LP+-%nb`y+B=CfGO8
zdEKxdCfFa*n+bM^8`qHA33hBYIyCIW33f*G#!ZY*v3MgMmnOy^(c6jTj>tnEZ0_qR
zdgCY9_bHi1oGwqWKcd$?F1&fIULPvkc>Iawj>t`zU_am|_Viv&us^1sV24z*L6WE@
zq(7oJae{pUl1BHvo?w4OA12sO!NeAM(gZsrdT%D!8IL~&{Ml*UAeEm2{t<ngSZ+?R
z-iBNccI(X)y`AtAnzgfGf5K0U>C at xvYvQNTeLLYNw6@W-yEWk_#`L<|-B<awelt0K
zo?zc-A6n^~$E81}w-bIv8}D*sTYkc?jOp!!qtLvnX8Z|9F{ZZ at jzT++4Q|Gta1>+u
zXb19qJ4J6Nke{*)*J95E@{j551T^bFXw_iV1T>H7qnlW7qz!KPnZVjHeVD-7F}?2O
z|H{8MZ_*?`6JV<ed>V8J6JR^0w-aEi5y$w()rASL9n;6EKb&wKQqy)detiNv%{Ydi
zz|Jwfn*c*I3bMll7>?=P1p1h9kUfDuWBM2#ljfLOchY&KU)wi79?)B0bAvs)TkQ{T
zU%R*dfId at _&~Ve)$`5bocT8_b*sQzN{_w+V|Mnp6u_Nr!{rKVa5otP7<wlovXDdIL
z*YU at EKp!YcX!y^MNz;!kB~{%lnYMZ^Zye8FV;WNH=i~8nFP&$UtaCzMvi0M&AWGYh
zROY*)#IQJ0OCz9Z3kiK;<)Dtxlt;c>d;0zTsAkiaMuxK;8^Y1=!4OASS@@G9d`A@@
zp0A<OM~2jouZ{~9`N7p4FZ(=wSLht->2iAaes%F)KSfSQrDPtF(vjKBJ0Dl?o-ms}
zK3krW((z-p2ak;^!IRJR4v(>H?vDrm_T#&+a;Eyg+2#W$p%0v!K5)v)C$ST!n17SF
z2giNK#O=SLxPR$s>FOy*prdor<A<q(bJuSv*9kRtI{Z_Oe?2vJ%_;jo)%YvQ)#|S+
z*BG7d<(iN_29YcDSDRC<Y=GXHUrVSj&gjw(|J7Ycq8mmRpD)*6o^?`rx9nDUv;44T
z?+aPJ=bzH?Zo9i!?`l`zpFvk~&~m at -*>LM<)UID0 at 4x-Hyx4xhI>((qZMTrJOH|(&
z_mT9{K_e!K3zvgV;b63j?dlU<yPJQKeZILnc>U9EM+8^P`!&|e|5Pd8e%yZfup^o6
zcc0edH@{qNu!MPcvn(F4Rw(LuTaE|(6^gq)gc^6zsat%Y?|ON6d42iQ`hsGjVpbgu
zF<zBL4$$uIscm2()ZlFFm2G`}L)Yi{u4E6CpD%AO-%-5Q$N{vQB^obAt+$)yO`)gJ
z$wY6ro2&amR#o*-L%IEWy<c7|_sd>gYfJ1dqg}i||Bp96c7f$;b^f2*U3Yv9(*VKp
z-S!hi-ku3xtj@`Vm;3K8uc3i-pYdPsuCHJ<UB`f!gw_u#!|v8{HSg#Z&x_UdCB1a^
zr#%v?Khh+_Gh!O_a*te!=afI|D$dF>Y6RP?^2J$|0Y7~hDZ|zB-TLa~$?N6S|9o1{
z^jKFu?6#k7uD2KKqTDCFXa~x^?=g=5yjt$pzf-`of at 0=*-GH0r{$sb>%|Y*X$>;T2
z4bw^8<f7}(>&^D!0wMlx``2|xFOOnK=b8 at WjEgSGF{d)R5|AokN$2lA?e}fle{U~0
z=MepRS6lhv3bwI7ceSl&s5D$G0Ybao^1h!_)gOC0JJQ&`DapurZ#kr at v$XIwX`d{>
z9~kE0BW4N?Hs<68hDS1l`!)04)i<thgN5$5yE(w=^K$=bw{EW+4CFuc(vdmcJRWEI
zF`fte{La$v)Aw1#_s~9n-R)J2Ku3frnMd}y+1(?1+Vve5`PWzZZ?51H_i>C;e*Ed|
zNaM7ELpEN;jNn`=uNQE+cBU=eBXL?I$ULg#zrKq9LZ-jImj8On-EC)Xwl*Kz(XR6W
z{jQ!_qK4&ebyPlFK0HhmpFde(o9$+OxOpM=xn{=+XM1*GGbM0Gx)EHs!{*&x8^iR?
z_ib}gkf0C+xl=b=&itvLshP$veBY^Rp84^o{#w$JtbjiKpl#x;pnuY4p_NW4QcjQ-
z*5~#<=tJOgRKj*#uRS8+1F34A$B?f~fEh$dQhbbQwwl=mm1Hx#mzq&>;cSQ&o*-$P
zn+E>N!AF1|+BlmNg|pt&p7{aooJpPc5kpIN%of>F8N6-khM$-5%kVaLeTURP&8}y2
zIz;kG$AE+^Dq0cUcZtE!tbBVRCV!fd=FaH&S7(fYo+~^#4>|yZS{Q%>p9aR{s4xM<
z;E}U(Dp+dKE^8j!SYReLl`i=h8YKFdVxniCXT(GBQJGUZ`%V$_ at NgkzVo+fawZJr*
zv&e<<GEqp%8LfHh<f+BLI~$#87 at df9lQOt6@=`#9jm~DC$O8Q6otO*~RC>ook}sV}
zB+Ch^VqKic_|{Ry1p_h(kVRXX$NDs*v=%S%a3JuC^rG@)RZxajYMtT+Wo>rUK-`i5
zkpgEbJ1i^&N<&1WBA0zCkHkh$kvQ^N1?C_I!Z&783sWjYtoF2Th*n!j8XLDF9)<CY
z;ZM0Q6 at HaB)RHyrgvK`LOzdIGIBN;8l7nZ`h`K^n2808w49>B3SXgy%BweMM??Qov
z<iNU>se~m=r>Yq#)lC&~`A%GO5xI&iVbAizizd(zWlm at D7<tY_%BBq><dm8%fmmTD
zG$zXlni*~6IbDpxW)TBRNXxdkkeuRqjSOQf9Y>wYs%$T09kf at 5#bAtKrj0hvl<`Uv
zxVI_D8x~fim?Ql6uz~FXi_pQcS~|~rg;g0=e;u{qS&WZXlp;BkMBXq at uTP6=4i%6Z
zT784l at B$8^l0>XySu4VN9yz$cVh=fbS&=hdBm at Z2vTlrE3Q>@<CE4$c^%rtw8f-MR
zs2s?a`28eM6ahdOfQh_;)A2}htl at F8)4(|wJZ}#?2XL7b4R)b at 6da<du at +YqDU!6Z
z2dD*C8ww6OXjOm$dYFG?eJ2bd1eNtri*gWf;m`#cTUl8a<eNG at b`_mOCPsS!5m8HO
zQI1tTGs{qHNWOoES<XxWQn59!wd at oT81Di@AYRS<>{ZUqqyYM==hCRO06OSwKQph<
zbr!@XMkeVTD?b6D<!Qm*tgOILL(ro7P+{$ebJ(}*ke4gfB-=TUrP-`)u$|QsZ-hX-
zsn9+r#^YomZ0skgSxmI3Yz60K)$z1Ql2kB*L!TRj9JO4 at dnBDGZM-gkHe|wBY@*m8
z?4{VCPH at a(JSM0PoJ3=IR9=k<qL`31Z4qn|nplw8R0w1XOs++|BG-QD44bjBF+e&n
zCU)jCFGiMlc>Ku*&3 at 1@3o&PVtch1oDv}h#1%Ysnq%t+{J2?!~Suk%Nu#`C{zKEOv
zNr+|%I at FhJr}}-6x4K&1-f}=@{>D^&kX)2x;pazkMh_#o2uyUq_Y%ov#16d22CmzS
z_X5HjL3qms<Q!B_i`}GIfo#DyTcRfIwAIDIvB|<Mn{3!iBn~*Dc5Jf<>eyWZ#%&az
zjA0VtAycz~2Ut2IfTF+-ZzKBD90Y|V;a8+2lx?}jTiRNanajjbs0qLrR|rozBGWO^
zoQvSa;}KA^rtyYqM*=9Jm<<TQ$R_A62dkya0ro<00Glr%6O at 7jlvu1E{*tX5ZcpN+
z7_3BQh80=SD1nhp0E2kdhMDv-27uf%lL#I;q|)r=7~Mh^4-7?S&jtT43xmc+0Wtxq
z2x$a{3W$j(1_Ml>BZmSJ(Ii8g>?mN2po3n>WlT#~WH^RISkcF0zCj!837F&-1n)Eq
zfLE6&*g64R#rtL{GAOpkP;c4G0OS;hJxDItst_N0(IWQjc#w6m>rfG{jcra0cj%GC
z(OTfAph>PCs<@xxO8`DvtX*+n2c3?tx~wpBq#OwNyQm)<r38AEtT7s>e_%^F at MWTe
zyb%&4I;D!v7#fY%;|0U5%uX>9n?<gUuJ?2B^&Ij+O6;v*hqOgj#?m2?74jc!B;FLa
zC&IzxNy1S?_L{<U7NMjU!Lj%uE}oo$5&ETcRYiexW<8h^fQoYzU#TU0H7c8;$1zIc
zBKiYf47)EVl7w5)i)Zv!atTL)l!&bO(!gQ6_|gpIrfpE2TeXs2SQ*T4P6RH*w4n&G
zA{P58gh{?PeRyL|MobV_p+aC}z^DMAVjnVBG5~t&%ix$iF at 4C)gIbeLbEtnx2cPmD
zv>kTBGmA}7#%LLspyEctYN$LbwaGaYpA5LO63%CFkBHV{5co-*lXj9Ym3#=I7K}`x
zbK1T*ZB90M?{q;!{E@|D`rvxU9^~vii{H;#6(VE;Y;cH6#H)ppRR}Q5*~SGs98AoV
z_*)dk*9bUBt^!LD)MG6pRX1Xk at T;-lpjRce1S=v+z?zoWT8WBSi|9h43PME at FXSw)
z*}yB66d8FTqxh<Z`muOskuBX6NQs+}E=m&uAaKtCN{tkdA4!H_qoi0Wr(nzUu0%OC
z*+jrLjwM(Y^ywW5W+X~TR%!r%3N~5*9byXRUo%EfOe&F*l5NUB>Y7f;&PihCOJXJh
zjLG?u^XF0~a8`!N;(IJu>0&y~MFeivebQE>WW{OF+FVhYD1IIeRMMZ~0+10X#yf&{
zUPFZJg?ZCuXW4hz*}Rlkk|by)(AKKpxX~P8)(xzqz==k at zz{6jok9={ZVC}baz52(
zW-gS>Ol%xsYl%|CnLq~O3MlO5v{;)io#9m?G>Xl7#hrvw!zp2(bH(FiQwjy9N$fCd
zlrUEt6J{lxO+vyN5)sK16JwvK6?ROCd}xdn2Rs?pCh2OH(hxj at 5j_DcSR{kM7vvVA
z)sDk*7^c>uIh at gAxs2#+yf9TwVHiL_Y}G1P0x?!33B)K-6#;P6hRhscoa_v7;i2$#
zs{%8RFxZp~*~uH)6_w#U7s#swEvP}}a};_==1I%&K4Az4GZjzJ<?~7kQ9v>Y;~WP8
zFpxki=t_9lHAxpjN%j at pp^#lmQf`qU=1O`?%mF7L+65EliXY<w;$Vtfi(AM^bA3*`
zlJFVWIahtGM05sByQnKpUr8kf`^S-}5j>PAh_#3lXLzwJ2x%m6Lg)bu^<DVP^&<AZ
zC1B$ygq^#tf`e8E%Ir0;Mc0IiNU>EaRa<8~$i;Z9E`aF(Lo!?OJ(gWBsXdKupv at UE
zNIvz at EyR@Y#yXNah6t}kh;T1-d4+OLqf6yf1UoCv-t?7I<c}PSl**~h24VVHDb2`s
zwWZSnvxCa1gw|c<RPqa|JWAzMN}gnwedUyw)l^PHEfdU3<y7j4edQEjmHRpzM`Wt0
zElA~5OB9?-8bDWjPREr~*A+c at d<0{rhIaE(fs~n`t+jSqYmsHnLG4s at tgBqH1l!Un
zb(<rhx&%mEI`xvEONhXwQ-M1!6VE$z>l-4C$VJVjbc)D?W8A)Wny?ryRrIyfB-uw0
zAyxw9V+YTrcAA~5#nVn7z)WWiMPFlAOQ0Bh0i)@QpScgj8`SOVr?UCBls35%(^r3_
zbVXa#)=#sPu%&()fxPXuQ1RaIn6-XtVvfa4clA?oF>UpfGq2)e#1Wg$5f7`U0^V#W
z^IARiZBt3bo9d}4NO{oES5F)NtlH|Scv7yOiib*05E<hj6%k%axPfFuj5u-Pa=dmL
zOjFm9+NrG`y4RC=iH?dVrX;=$&=G~=VQC+z^zUOWol4e7St!4rY*RTEb*E+4(ka7W
zQ#vIVJFJ}+r0i;^xdcG9cFK80Y3ORFF;ZP|SUYus?``eWHJPf^PV2s#P62ffH8r~w
z^Ud7il1~MmxJu!$vnllN(6C0*_NI2)0Z*wSp0=gacE*Fk>9}kvi71#5=xy^tDT*{j
z(~^l0@{nR^9lAU(NS>Fv<Zf6qwL#oxS2U$^<LS|&Dd%2o(KNAI4vMA>*Mp*|3r!hg
z)KZJ4S|Z)HXj=2JzG&*(qN(Io2)QaEN$BNScNCRx#4S_ccsh60Il_aL@}rXI7z`bh
zQpF!8fJX~}EO6%r)l`=xaO}#d<SDC3nSx3oN<!9 at Q<0ajW;f;3K~q;wjk%Uno$S98
z(369)LCVutQ{@$73pj*WQbZrrxSR^iIa*H5-?*Hr<O9lx2cJ||wWBKmq at DnCx)c=<
z_i|dx;Yz7CX|@))K3_APQZFj`Q#i6_tG at l3`BTm6X|-fOt|dFTF)EK?(Pn|v)>rtG
zRXq-WgTmZbgFmYuI67+4&&?h<HZqg&#|gR|Ns3brTqc%$N1;ogF;-G3dP~+FvYelD
znF>L*DKYh&a|J%75>?Tz{wdicTXMD~11tdu!oqUyuS-#-I4kEWhMms)aF;xNLrrPU
zToMirOc2dUoyU~dU9i$ZK?@^7^i+{4DRqehQqH~^wd4h=mcZpeQjpP>+5 at J_QnrQX
z7N-$H^16iTUBJN+pDoFJP~!8Eyql7=P{C}@>4nsW;968F2V at fUhRBQNze*k`0j_Y1
zWKOX!(sA5h0%?t{kn+41k*m4|dQiI|I at yC1Y^l18Xj_CcHFmIY3XqOo<l<DQ{-3M-
zNM=U+Qc;(p1>91siQ>E*K}u|FB_g4zJbV=cH>+V&l#&WW%0+KNNltV*%@gAs(H{YD
zI*utR8#_0u#YtX_)F9QOf~vP2KxEmprD%Yiw0w0!NnvI{3k>!W!IWArR8Gs80dG=Q
zpcku&xdJL&R1s=fKj6TYQfVVq{|lsg44L(}M`r%Q24$Xv%m-I=fn^C%5S{WxvcgAh
zAaStO<k4ah59QH{;=iWU48ezTzODl~1KrmLCth_{QMtV|NX3O5q;7yoM?j1!kYc--
zPJD-|X^jiYRowBV4vfhnheDDPhaehSM!^_BJi%%@kt8_Qp;s)rEmICKIX#y_9kRwK
zM|@Hv2Db=!_$WkE)}_H7TSpV&5=LfzNk at q$qYvyNiN^CO0|dlHQ9hh3a*s%<1iXSD
zp;LM0Qkbfzi!NDh`2@$i=o)FtvDZvBg&zsM=^#<OSMWnT^W~r=Q>}`pko~0?m|TGl
zeJ*CFb1|t?wz-%ZUt^(UvCGAfZNed>>dh#&f)grdseIfOEFF2sGuIH3rz_Z|h)0kR
z*;|lw#5t*G7I(yTG7+NFrf81%gg|b#9E$jIQIJ0IhV(!11sOgUQqAFHsU9PpEU}!_
z{v+SzW0lOMtOlu3PJKG}U`TG_QDu^gIgc=eG$$Ql2vC~_4Dk_w;v at E6Jsx7{7^wY{
zo7dZ``w!dA&%rhRq8MeTa7_l*P27L8z1+~JvP?wY02$H!g%HyW&mpNu&xrQ&%mip1
z5CYF!=EgH0QQ<iSDDJVP+efbHa{7n;qBBVT^j`M}cjR0!3IK?p1MEcGesAG77f$1b
zI^hJWBtke5CIK77v!SX!o&z0A8|Yp_#)fAPbf9PYvI?e$GyN5X^E2HceWwQ8{Zrhb
z9VKUUV;Mfu5+jaIB|-`BEZ+=e<FRc$tsbjsKyFGUE)R%|9n~$H_>(B(FhT|TOCGPY
zE1rx`aQGT(Ifn0pLCIv`zXIZI&N3VaP;}19z$-yBo!Eoh8etI#xJ9Dx-B4VmF9#hQ
z1B?6il4>Jkmlc*Xf3Kr2=Tivb5lu;5zm)2!hA+2XbE$99edz?x!rN)HoPr^#mFqa#
zb_Wk8&>g~Z?kn{)Z at SYXa@3eCc=50-aATy1ZL9B>VduSrL%3i|N+U8yRMS4gg_}}>
z=_ at _Tn!|?TQ31YkpTyOSNKz!K8XrYO_wB<x{vN3(X|+FoDL<7 at 4kN|pOZf<GB at Kn%
zBZ9P`IW_QwK{pNZ7hlQ;eI%Dc6hKYx;Vbq7+Dw=7d1w(iHzvAaC9j%6Q+b6i<<m<u
zrtz_M+1Z#_!gs#$L`R<d>4NBU(6SJ|6zUCsx&SEEH}GHe(*<;3&J@{|9{H?5OPl4>
z1&AS2E}t%-ZX4y(1(aJiP34vH>4Lx?E+BjGrOVC6#O}Bz9sNT8U;8$oJ;)OVD&#}7
zk4xVD#wE|Vh;$wa9dXRZcq<ODfgFU-{8u1e>8=akLeaox#i?a|v1`&4X9mrmZ~+^L
z)pF(vP6(8q&>Io4Ed0tM8ZMG{X+$oUgv!+9d&<;2IMDKxcxa!6ff;=gC|Hi!0)5Ff
zvJ{#+QS6KmGa<gKq~#`MlADxusyb6$BQ@}P_$@elUmJLRnlD4mczNEI>+Qkljy!b&
z>1L>M?07E%Z5q1OuoR_!BI`M2QPL4(U64 at w&|T=sgHKL1W)!|XAoCa3J(_pZ*HOPb
zsb8PfehWr#X`@e2S;HUdIW at FUMVgT*8|Pzj9Vj}8r}VW1$Vt2B at -IXPTE`!GDJ0TG
z=Z*tfYUqdU`s!OvOC`tdlow`o=t?vj5~HC4v{!To3`<CezvXHnNDNht;)3y{doKUt
zHKH}-nhS|^k<AZisi7aX>#J`yEtMQgC@;+F(3NO5B#sY2^U?oLkVii|`nAH~7iS;7
VfA)gDTHyO<{||2Ai1vwU004Fj;1&P?

diff --git a/modules/gui/qt4/pixmaps/types/type_stream.png b/modules/gui/qt4/pixmaps/types/type_stream.png
new file mode 100644
index 0000000000000000000000000000000000000000..faf7ba992a8971a07e7b627b3c701676952de0b2
GIT binary patch
literal 783
zcmV+q1MvKbP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ at H10*pySK~y-)jgwzUQ*ji>O){gP*T9HyYunZBPSd&@ZqDVpcdn3a
zX&YwJum at 8z($>sB)0z`q!w|zi`4DZ=7L|@7%pMdXv|!T1wt}A2wFoLo3nC=^c6UKh
zrq&O>{P=Nx=X1{QobyWpkhE6p+Qu+UwOlTrqA1y{T%H%DC~7h%C#R0JB`4fpd!T7L
zO(v5?XzlR at SO3_TTlZ&S at 0r9|OXafL?S?|33W`Lc^bG;*N?{o72WQX2ug_k6$2hCo
z{vd2k9q<m{!}Rntyk0K~)S4K3H#GrJT57smeW8A7aP$*~$3DaJWEKrq?TE!<oI;@x
z0)YS=4hJM;)`N9`c=U$GmLFZNn`m at DhoR&QGQ}iDMn)3=-QC?#t2Mt at vfu!0!7_%1
zhL-2&=V8Bo1C=%HFq*5--#>sBdpmqSKlcQm&j+W|37t*{9*?J71*lZ2D!<>4Xf(=2
zi$o%*z0?TvIR`3Q!zjNpj^dJPbar;aYPCYI*CRdsVACo<C=?QPb at iB-m_RTXL^vFV
z$K%0?ssM^EhM=ttK~wVvl-3Hl@)!yW3&H2}6>Dp-ozdxk_4V~}j`3`IdwZcOaUrXG
z2HC8nr)MD6KY~J8fWwqxDPFgAT at Xm}pIR&y*lad5H#c)KnJbW`?Sj}Gg!t4;5V-~}
zeIc3uVxu`oCM2?NCX)$eWo4@(^3HPrBKIVWMk6vw`OlT;36m%~M5hTQ`ExYQaLxvU
z0V3sPkVlHy)~Vx>KW1dpf=x$xMLcOyn?Q2(EkP<5_Z^V_5lS`h`6TU%|C25M!baM=
zpBR)%ncbV&{|TsReLPir?e(550UdYd7E*TX^tKJWTm0`mb=P3r_b>h1SO$G3HtYZZ
N002ovPDHLkV1lxzT+aXi

literal 0
HcmV?d00001

diff --git a/modules/gui/qt4/pixmaps/types/type_stream.svgz b/modules/gui/qt4/pixmaps/types/type_stream.svgz
new file mode 100644
index 0000000000000000000000000000000000000000..873e9453e6e15611109b02656989b8a1714885fb
GIT binary patch
literal 7603
zcmV;k9ZcdMiwFP!000000PS5{b6dHQe)q57YF^@6k;46=*pnJxW-CuywMl9pw`hvC
zwUJ0IMcdMB?SJ2|yMc3X4k;bY#GXv5B2~sZKp&vd=>GZwka_WkyX&jj=k at OPa=UqX
zq8I99w%)9^7nhq4FHipR=O5?kWOln>ZZ4Kr+s*pr$!2@<hwq=g_?P*7_IkHo?$;Ny
zFPHm|vp;VBdb?WQtY^RbxZmHLpPhaA@?~*Z8W-E$hqLFi`TYB5&tBYq{_t!zn_=F~
z?fJ#(<w<$r=F{$q2`^S>>#Ozkdb7Vh(+hoe(vz=x@)gZ~`FXwCUSDrFxBTYj_Pd67
zck#ZXCT_l1Cek_QGiA<<nS)|}d%xK)@8-i-!Q-)4jZ*3ieLdyVsLt=MAc_Z>;of$3
zi2nxv>t3i0i`(s|-D>?FZ>|@c_5SS5pWk$ybG5kGUo^v1=?~@|Y{_PMy}rF!uGY6_
zwVmJpa(S`;2yF=b^l^Rp;p4u0yu5gMg4G#*Xf#JlZyD#j>ro4r7G}1~NoOXh44+?Y
zSH!`~ll}e8`oFNA1;+hpIL!L)X1m+Z-(Oy>h4$>@_IiExezn}~*B>@#pRZOT6#DDz
zdVBHd3ak0>>GJG<_U`QF^6q+hb9+V;$bWg7o6U!#v)o<WK<HT=?Yys at -=p`%#rpj%
zQHeb0$#Dm|cFT*)<<-B at KhR+zn$13x=Rfb3n_KMQ^~;m%<$ia0_dC4^S%vJ~DMS^t
ziBY9f?56QLqJx^VF)4cIPwgTo7i`X_W?@5e`uWLtg1>Ao_t48vx9i=XXm9_0^OxIo
zN40x-;=70U_q;tO1{;I!o9|wp%>6<IlY{B0SI4PW$EisyLrJ)3Y}d^?fBtc|hK+uQ
zzt_uML)Q#bcVV@?x>~QGhRdrj%lq4t+1ZoC{kSw9+Y}Q`3f`Y8`dz?IbMP4(qw~V~
zXccXNQ8{Jr*K_y0m2g;?<dxNFAZg2kXg?IRQ3C-V60L?r$K<N~ljIt5{26k+Uf%w-
zo%HfT%^lpq_oea0aP&$#o824en1Q0?n0pC;HMCp5uqpYRoA!H+1%^e?-VECB&~6>t
zwNtujf7;eoruAISW5+buzTIzcdZL17Xwz!0=j}W|s{Q at dT6*VOOmVrtKi9vX at iXMM
z-JO5=c)4E>-r2r?f4hb_RVT^EXEpOM&y%yNC(f#ySznwDcc^RMVZVoBq89Duez5+E
z`!+37PHC_=#X~r~urT|<_S}=YE)-eFU^l^>TUhH&(^!@YbiX=>`~Tf{Wxt;HYIsI^
z_?Sxm11jWG)$#A4jK39C{4FTr)79`FP6?l;g1^23{x;O_ at 2`9hs2-EHy2lL&2z$Gw
zC>J61`fh)=y1kWs=Dr0c&}#O-JkNKpUcHL1-uz$JlT7W&o_>E%5Az+u>GREY^V52_
zZD at 5jil^VlXmzf%Z(hF*KN_L!c5|Wlr>A$e(!ULF-~Je<=tHdZKhn<+Q}jkn at e`A?
z4L@#*pCNrWyyc$*a;;<V4Lf>*9Sy}w4Lg2<oe_OV1M$2%pf}LP+-%nb`y+B=CfGO8
zdEKxdCfFa*n+bM^8`qHA33hBYIyCIW33f*G#!ZY*v3MgMmnOy^(c6jTj>tnEZ0_qR
zdgCY9_bHi1oGwqWKcd$?F1&fIULPvkc>Iawj>t`zU_am|_Viv&us^1sV24z*L6WE@
zq(7oJae{pUl1BHvo?w4OA12sO!NeAM(gZsrdT%D!8IL~&{Ml*UAeEm2{t<ngSZ+?R
z-iBNccI(X)y`AtAnzgfGf5K0U>C at xvYvQNTeLLYNw6@W-yEWk_#`L<|-B<awelt0K
zo?zc-A6n^~$E81}w-bIv8}D*sTYkc?jOp!!qtLvnX8Z|9F{ZZ at jzT++4Q|Gta1>+u
zXb19qJ4J6Nke{*)*J95E@{j551T^bFXw_iV1T>H7qnlW7qz!KPnZVjHeVD-7F}?2O
z|H{8MZ_*?`6JV<ed>V8J6JR^0w-aEi5y$w()rASL9n;6EKb&wKQqy)detiNv%{Ydi
zz|Jwfn*c*I3bMll7>?=P1p1h9kUfDuWBM2#ljfLOchY&KU)wi79?)B0bAvs)TkQ{T
zU%R*dfId at _&~Ve)$`5bocT8_b*sQzN{_w+V|Mnp6u_Nr!{rKVa5otP7<wlovXDdIL
z*YU at EKp!YcX!y^MNz;!kB~{%lnYMZ^Zye8FV;WNH=i~8nFP&$UtaCzMvi0M&AWGYh
zROY*)#IQJ0OCz9Z3kiK;<)Dtxlt;c>d;0zTsAkiaMuxK;8^Y1=!4OASS@@G9d`A@@
zp0A<OM~2jouZ{~9`N7p4FZ(=wSLht->2iAaes%F)KSfSQrDPtF(vjKBJ0Dl?o-ms}
zK3krW((z-p2ak;^!IRJR4v(>H?vDrm_T#&+a;Eyg+2#W$p%0v!K5)v)C$ST!n17SF
z2giNK#O=SLxPR$s>FOy*prdor<A<q(bJuSv*9kRtI{Z_Oe?2vJ%_;jo)%YvQ)#|S+
z*BG7d<(iN_29YcDSDRC<Y=GXHUrVSj&gjw(|J7Ycq8mmRpD)*6o^?`rx9nDUv;44T
z?+aPJ=bzH?Zo9i!?`l`zpFvk~&~m at -*>LM<)UID0 at 4x-Hyx4xhI>((qZMTrJOH|(&
z_mT9{K_e!K3zvgV;b63j?dlU<yPJQKeZILnc>U9EM+8^P`!&|e|5Pd8e%yZfup^o6
zcc0edH@{qNu!MPcvn(F4Rw(LuTaE|(6^gq)gc^6zsat%Y?|ON6d42iQ`hsGjVpbgu
zF<zBL4$$uIscm2()ZlFFm2G`}L)Yi{u4E6CpD%AO-%-5Q$N{vQB^obAt+$)yO`)gJ
z$wY6ro2&amR#o*-L%IEWy<c7|_sd>gYfJ1dqg}i||Bp96c7f$;b^f2*U3Yv9(*VKp
z-S!hi-ku3xtj@`Vm;3K8uc3i-pYdPsuCHJ<UB`f!gw_u#!|v8{HSg#Z&x_UdCB1a^
zr#%v?Khh+_Gh!O_a*te!=afI|D$dF>Y6RP?^2J$|0Y7~hDZ|zB-TLa~$?N6S|9o1{
z^jKFu?6#k7uD2KKqTDCFXa~x^?=g=5yjt$pzf-`of at 0=*-GH0r{$sb>%|Y*X$>;T2
z4bw^8<f7}(>&^D!0wMlx``2|xFOOnK=b8 at WjEgSGF{d)R5|AokN$2lA?e}fle{U~0
z=MepRS6lhv3bwI7ceSl&s5D$G0Ybao^1h!_)gOC0JJQ&`DapurZ#kr at v$XIwX`d{>
z9~kE0BW4N?Hs<68hDS1l`!)04)i<thgN5$5yE(w=^K$=bw{EW+4CFuc(vdmcJRWEI
zF`fte{La$v)Aw1#_s~9n-R)J2Ku3frnMd}y+1(?1+Vve5`PWzZZ?51H_i>C;e*Ed|
zNaM7ELpEN;jNn`=uNQE+cBU=eBXL?I$ULg#zrKq9LZ-jImj8On-EC)Xwl*Kz(XR6W
z{jQ!_qK4&ebyPlFK0HhmpFde(o9$+OxOpM=xn{=+XM1*GGbM0Gx)EHs!{*&x8^iR?
z_ib}gkf0C+xl=b=&itvLshP$veBY^Rp84^o{#w$JtbjiKpl#x;pnuY4p_NW4QcjQ-
z*5~#<=tJOgRKj*#uRS8+1F34A$B?f~fEh$dQhbbQwwl=mm1Hx#mzq&>;cSQ&o*-$P
zn+E>N!AF1|+BlmNg|pt&p7{aooJpPc5kpIN%of>F8N6-khM$-5%kVaLeTURP&8}y2
zIz;kG$AE+^Dq0cUcZtE!tbBVRCV!fd=FaH&S7(fYo+~^#4>|yZS{Q%>p9aR{s4xM<
z;E}U(Dp+dKE^8j!SYReLl`i=h8YKFdVxniCXT(GBQJGUZ`%V$_ at NgkzVo+fawZJr*
zv&e<<GEqp%8LfHh<f+BLI~$#87 at df9lQOt6@=`#9jm~DC$O8Q6otO*~RC>ook}sV}
zB+Ch^VqKic_|{Ry1p_h(kVRXX$NDs*v=%S%a3JuC^rG@)RZxajYMtT+Wo>rUK-`i5
zkpgEbJ1i^&N<&1WBA0zCkHkh$kvQ^N1?C_I!Z&783sWjYtoF2Th*n!j8XLDF9)<CY
z;ZM0Q6 at HaB)RHyrgvK`LOzdIGIBN;8l7nZ`h`K^n2808w49>B3SXgy%BweMM??Qov
z<iNU>se~m=r>Yq#)lC&~`A%GO5xI&iVbAizizd(zWlm at D7<tY_%BBq><dm8%fmmTD
zG$zXlni*~6IbDpxW)TBRNXxdkkeuRqjSOQf9Y>wYs%$T09kf at 5#bAtKrj0hvl<`Uv
zxVI_D8x~fim?Ql6uz~FXi_pQcS~|~rg;g0=e;u{qS&WZXlp;BkMBXq at uTP6=4i%6Z
zT784l at B$8^l0>XySu4VN9yz$cVh=fbS&=hdBm at Z2vTlrE3Q>@<CE4$c^%rtw8f-MR
zs2s?a`28eM6ahdOfQh_;)A2}htl at F8)4(|wJZ}#?2XL7b4R)b at 6da<du at +YqDU!6Z
z2dD*C8ww6OXjOm$dYFG?eJ2bd1eNtri*gWf;m`#cTUl8a<eNG at b`_mOCPsS!5m8HO
zQI1tTGs{qHNWOoES<XxWQn59!wd at oT81Di@AYRS<>{ZUqqyYM==hCRO06OSwKQph<
zbr!@XMkeVTD?b6D<!Qm*tgOILL(ro7P+{$ebJ(}*ke4gfB-=TUrP-`)u$|QsZ-hX-
zsn9+r#^YomZ0skgSxmI3Yz60K)$z1Ql2kB*L!TRj9JO4 at dnBDGZM-gkHe|wBY@*m8
z?4{VCPH at a(JSM0PoJ3=IR9=k<qL`31Z4qn|nplw8R0w1XOs++|BG-QD44bjBF+e&n
zCU)jCFGiMlc>Ku*&3 at 1@3o&PVtch1oDv}h#1%Ysnq%t+{J2?!~Suk%Nu#`C{zKEOv
zNr+|%I at FhJr}}-6x4K&1-f}=@{>D^&kX)2x;pazkMh_#o2uyUq_Y%ov#16d22CmzS
z_X5HjL3qms<Q!B_i`}GIfo#DyTcRfIwAIDIvB|<Mn{3!iBn~*Dc5Jf<>eyWZ#%&az
zjA0VtAycz~2Ut2IfTF+-ZzKBD90Y|V;a8+2lx?}jTiRNanajjbs0qLrR|rozBGWO^
zoQvSa;}KA^rtyYqM*=9Jm<<TQ$R_A62dkya0ro<00Glr%6O at 7jlvu1E{*tX5ZcpN+
z7_3BQh80=SD1nhp0E2kdhMDv-27uf%lL#I;q|)r=7~Mh^4-7?S&jtT43xmc+0Wtxq
z2x$a{3W$j(1_Ml>BZmSJ(Ii8g>?mN2po3n>WlT#~WH^RISkcF0zCj!837F&-1n)Eq
zfLE6&*g64R#rtL{GAOpkP;c4G0OS;hJxDItst_N0(IWQjc#w6m>rfG{jcra0cj%GC
z(OTfAph>PCs<@xxO8`DvtX*+n2c3?tx~wpBq#OwNyQm)<r38AEtT7s>e_%^F at MWTe
zyb%&4I;D!v7#fY%;|0U5%uX>9n?<gUuJ?2B^&Ij+O6;v*hqOgj#?m2?74jc!B;FLa
zC&IzxNy1S?_L{<U7NMjU!Lj%uE}oo$5&ETcRYiexW<8h^fQoYzU#TU0H7c8;$1zIc
zBKiYf47)EVl7w5)i)Zv!atTL)l!&bO(!gQ6_|gpIrfpE2TeXs2SQ*T4P6RH*w4n&G
zA{P58gh{?PeRyL|MobV_p+aC}z^DMAVjnVBG5~t&%ix$iF at 4C)gIbeLbEtnx2cPmD
zv>kTBGmA}7#%LLspyEctYN$LbwaGaYpA5LO63%CFkBHV{5co-*lXj9Ym3#=I7K}`x
zbK1T*ZB90M?{q;!{E@|D`rvxU9^~vii{H;#6(VE;Y;cH6#H)ppRR}Q5*~SGs98AoV
z_*)dk*9bUBt^!LD)MG6pRX1Xk at T;-lpjRce1S=v+z?zoWT8WBSi|9h43PME at FXSw)
z*}yB66d8FTqxh<Z`muOskuBX6NQs+}E=m&uAaKtCN{tkdA4!H_qoi0Wr(nzUu0%OC
z*+jrLjwM(Y^ywW5W+X~TR%!r%3N~5*9byXRUo%EfOe&F*l5NUB>Y7f;&PihCOJXJh
zjLG?u^XF0~a8`!N;(IJu>0&y~MFeivebQE>WW{OF+FVhYD1IIeRMMZ~0+10X#yf&{
zUPFZJg?ZCuXW4hz*}Rlkk|by)(AKKpxX~P8)(xzqz==k at zz{6jok9={ZVC}baz52(
zW-gS>Ol%xsYl%|CnLq~O3MlO5v{;)io#9m?G>Xl7#hrvw!zp2(bH(FiQwjy9N$fCd
zlrUEt6J{lxO+vyN5)sK16JwvK6?ROCd}xdn2Rs?pCh2OH(hxj at 5j_DcSR{kM7vvVA
z)sDk*7^c>uIh at gAxs2#+yf9TwVHiL_Y}G1P0x?!33B)K-6#;P6hRhscoa_v7;i2$#
zs{%8RFxZp~*~uH)6_w#U7s#swEvP}}a};_==1I%&K4Az4GZjzJ<?~7kQ9v>Y;~WP8
zFpxki=t_9lHAxpjN%j at pp^#lmQf`qU=1O`?%mF7L+65EliXY<w;$Vtfi(AM^bA3*`
zlJFVWIahtGM05sByQnKpUr8kf`^S-}5j>PAh_#3lXLzwJ2x%m6Lg)bu^<DVP^&<AZ
zC1B$ygq^#tf`e8E%Ir0;Mc0IiNU>EaRa<8~$i;Z9E`aF(Lo!?OJ(gWBsXdKupv at UE
zNIvz at EyR@Y#yXNah6t}kh;T1-d4+OLqf6yf1UoCv-t?7I<c}PSl**~h24VVHDb2`s
zwWZSnvxCa1gw|c<RPqa|JWAzMN}gnwedUyw)l^PHEfdU3<y7j4edQEjmHRpzM`Wt0
zElA~5OB9?-8bDWjPREr~*A+c at d<0{rhIaE(fs~n`t+jSqYmsHnLG4s at tgBqH1l!Un
zb(<rhx&%mEI`xvEONhXwQ-M1!6VE$z>l-4C$VJVjbc)D?W8A)Wny?ryRrIyfB-uw0
zAyxw9V+YTrcAA~5#nVn7z)WWiMPFlAOQ0Bh0i)@QpScgj8`SOVr?UCBls35%(^r3_
zbVXa#)=#sPu%&()fxPXuQ1RaIn6-XtVvfa4clA?oF>UpfGq2)e#1Wg$5f7`U0^V#W
z^IARiZBt3bo9d}4NO{oES5F)NtlH|Scv7yOiib*05E<hj6%k%axPfFuj5u-Pa=dmL
zOjFm9+NrG`y4RC=iH?dVrX;=$&=G~=VQC+z^zUOWol4e7St!4rY*RTEb*E+4(ka7W
zQ#vIVJFJ}+r0i;^xdcG9cFK80Y3ORFF;ZP|SUYus?``eWHJPf^PV2s#P62ffH8r~w
z^Ud7il1~MmxJu!$vnllN(6C0*_NI2)0Z*wSp0=gacE*Fk>9}kvi71#5=xy^tDT*{j
z(~^l0@{nR^9lAU(NS>Fv<Zf6qwL#oxS2U$^<LS|&Dd%2o(KNAI4vMA>*Mp*|3r!hg
z)KZJ4S|Z)HXj=2JzG&*(qN(Io2)QaEN$BNScNCRx#4S_ccsh60Il_aL@}rXI7z`bh
zQpF!8fJX~}EO6%r)l`=xaO}#d<SDC3nSx3oN<!9 at Q<0ajW;f;3K~q;wjk%Uno$S98
z(369)LCVutQ{@$73pj*WQbZrrxSR^iIa*H5-?*Hr<O9lx2cJ||wWBKmq at DnCx)c=<
z_i|dx;Yz7CX|@))K3_APQZFj`Q#i6_tG at l3`BTm6X|-fOt|dFTF)EK?(Pn|v)>rtG
zRXq-WgTmZbgFmYuI67+4&&?h<HZqg&#|gR|Ns3brTqc%$N1;ogF;-G3dP~+FvYelD
znF>L*DKYh&a|J%75>?Tz{wdicTXMD~11tdu!oqUyuS-#-I4kEWhMms)aF;xNLrrPU
zToMirOc2dUoyU~dU9i$ZK?@^7^i+{4DRqehQqH~^wd4h=mcZpeQjpP>+5 at J_QnrQX
z7N-$H^16iTUBJN+pDoFJP~!8Eyql7=P{C}@>4nsW;968F2V at fUhRBQNze*k`0j_Y1
zWKOX!(sA5h0%?t{kn+41k*m4|dQiI|I at yC1Y^l18Xj_CcHFmIY3XqOo<l<DQ{-3M-
zNM=U+Qc;(p1>91siQ>E*K}u|FB_g4zJbV=cH>+V&l#&WW%0+KNNltV*%@gAs(H{YD
zI*utR8#_0u#YtX_)F9QOf~vP2KxEmprD%Yiw0w0!NnvI{3k>!W!IWArR8Gs80dG=Q
zpcku&xdJL&R1s=fKj6TYQfVVq{|lsg44L(}M`r%Q24$Xv%m-I=fn^C%5S{WxvcgAh
zAaStO<k4ah59QH{;=iWU48ezTzODl~1KrmLCth_{QMtV|NX3O5q;7yoM?j1!kYc--
zPJD-|X^jiYRowBV4vfhnheDDPhaehSM!^_BJi%%@kt8_Qp;s)rEmICKIX#y_9kRwK
zM|@Hv2Db=!_$WkE)}_H7TSpV&5=LfzNk at q$qYvyNiN^CO0|dlHQ9hh3a*s%<1iXSD
zp;LM0Qkbfzi!NDh`2@$i=o)FtvDZvBg&zsM=^#<OSMWnT^W~r=Q>}`pko~0?m|TGl
zeJ*CFb1|t?wz-%ZUt^(UvCGAfZNed>>dh#&f)grdseIfOEFF2sGuIH3rz_Z|h)0kR
z*;|lw#5t*G7I(yTG7+NFrf81%gg|b#9E$jIQIJ0IhV(!11sOgUQqAFHsU9PpEU}!_
z{v+SzW0lOMtOlu3PJKG}U`TG_QDu^gIgc=eG$$Ql2vC~_4Dk_w;v at E6Jsx7{7^wY{
zo7dZ``w!dA&%rhRq8MeTa7_l*P27L8z1+~JvP?wY02$H!g%HyW&mpNu&xrQ&%mip1
z5CYF!=EgH0QQ<iSDDJVP+efbHa{7n;qBBVT^j`M}cjR0!3IK?p1MEcGesAG77f$1b
zI^hJWBtke5CIK77v!SX!o&z0A8|Yp_#)fAPbf9PYvI?e$GyN5X^E2HceWwQ8{Zrhb
z9VKUUV;Mfu5+jaIB|-`BEZ+=e<FRc$tsbjsKyFGUE)R%|9n~$H_>(B(FhT|TOCGPY
zE1rx`aQGT(Ifn0pLCIv`zXIZI&N3VaP;}19z$-yBo!Eoh8etI#xJ9Dx-B4VmF9#hQ
z1B?6il4>Jkmlc*Xf3Kr2=Tivb5lu;5zm)2!hA+2XbE$99edz?x!rN)HoPr^#mFqa#
zb_Wk8&>g~Z?kn{)Z at SYXa@3eCc=50-aATy1ZL9B>VduSrL%3i|N+U8yRMS4gg_}}>
z=_ at _Tn!|?TQ31YkpTyOSNKz!K8XrYO_wB<x{vN3(X|+FoDL<7 at 4kN|pOZf<GB at Kn%
zBZ9P`IW_QwK{pNZ7hlQ;eI%Dc6hKYx;Vbq7+Dw=7d1w(iHzvAaC9j%6Q+b6i<<m<u
zrtz_M+1Z#_!gs#$L`R<d>4NBU(6SJ|6zUCsx&SEEH}GHe(*<;3&J@{|9{H?5OPl4>
z1&AS2E}t%-ZX4y(1(aJiP34vH>4Lx?E+BjGrOVC6#O}Bz9sNT8U;8$oJ;)OVD&#}7
zk4xVD#wE|Vh;$wa9dXRZcq<ODfgFU-{8u1e>8=akLeaox#i?a|v1`&4X9mrmZ~+^L
z)pF(vP6(8q&>Io4Ed0tM8ZMG{X+$oUgv!+9d&<;2IMDKxcxa!6ff;=gC|Hi!0)5Ff
zvJ{#+QS6KmGa<gKq~#`MlADxusyb6$BQ@}P_$@elUmJLRnlD4mczNEI>+Qkljy!b&
z>1L>M?07E%Z5q1OuoR_!BI`M2QPL4(U64 at w&|T=sgHKL1W)!|XAoCa3J(_pZ*HOPb
zsb8PfehWr#X`@e2S;HUdIW at FUMVgT*8|Pzj9Vj}8r}VW1$Vt2B at -IXPTE`!GDJ0TG
z=Z*tfYUqdU`s!OvOC`tdlow`o=t?vj5~HC4v{!To3`<CezvXHnNDNht;)3y{doKUt
zHKH}-nhS|^k<AZisi7aX>#J`yEtMQgC@;+F(3NO5B#sY2^U?oLkVii|`nAH~7iS;7
VfA)gDTHyO<{||2Ai1vwU004Fj;1&P?

literal 0
HcmV?d00001

diff --git a/modules/gui/qt4/vlc.qrc b/modules/gui/qt4/vlc.qrc
index cbf7a9d..e5972a9 100644
--- a/modules/gui/qt4/vlc.qrc
+++ b/modules/gui/qt4/vlc.qrc
@@ -87,7 +87,7 @@
         <file alias="network">pixmaps/types/network_16px.png</file>
         <file alias="directory">pixmaps/types/type_directory.png</file>
         <file alias="file">pixmaps/types/type_file.png</file>
-        <file alias="net">pixmaps/types/type_net.png</file>
+        <file alias="stream">pixmaps/types/type_stream.png</file>
         <file alias="node">pixmaps/types/type_node.png</file>
         <file alias="playlist">pixmaps/types/type_playlist.png</file>
     </qresource>
diff --git a/modules/services_discovery/sap.c b/modules/services_discovery/sap.c
index 392d213..4b06b1f 100644
--- a/modules/services_discovery/sap.c
+++ b/modules/services_discovery/sap.c
@@ -643,7 +643,8 @@ static int Demux( demux_t *p_demux )
 
     vlc_mutex_lock( &p_parent_input->lock );
 
-    p_parent_input->i_type = ITEM_TYPE_NET;
+    p_parent_input->i_type = ITEM_TYPE_STREAM;
+    p_parent_input->b_net = true;
 
     vlc_mutex_unlock( &p_parent_input->lock );
     vlc_object_release( p_input );
@@ -856,7 +857,7 @@ sap_announce_t *CreateAnnounce( services_discovery_t *p_sd, uint32_t *i_source,
     /* Released in RemoveAnnounce */
     p_input = input_item_NewWithType( p_sap->p_sdp->psz_uri,
                                       p_sdp->psz_sessionname,
-                                      0, NULL, 0, -1, ITEM_TYPE_NET );
+                                      0, NULL, 0, -1, ITEM_TYPE_STREAM );
     if( unlikely(p_input == NULL) )
     {
         free( p_sap );
diff --git a/src/input/item.c b/src/input/item.c
index 76fc818..ef2466b 100644
--- a/src/input/item.c
+++ b/src/input/item.c
@@ -35,7 +35,7 @@
 #include "item.h"
 #include "info.h"
 
-static int GuessType( const input_item_t *p_item );
+static int GuessType( const input_item_t *p_item, bool *p_net );
 
 void input_item_SetErrorWhenReading( input_item_t *p_i, bool b_error )
 {
@@ -306,7 +306,7 @@ void input_item_SetURI( input_item_t *p_i, const char *psz_uri )
     free( p_i->psz_uri );
     p_i->psz_uri = strdup( psz_uri );
 
-    p_i->i_type = GuessType( p_i );
+    p_i->i_type = GuessType( p_i, &p_i->b_net );
 
     if( p_i->psz_name )
         ;
@@ -831,9 +831,10 @@ input_item_t *input_item_NewExt( const char *psz_uri,
 
 
 input_item_t *
-input_item_NewWithType( const char *psz_uri, const char *psz_name,
-                        int i_options, const char *const *ppsz_options,
-                        unsigned flags, mtime_t duration, int type )
+input_item_NewWithTypeExt( const char *psz_uri, const char *psz_name,
+                           int i_options, const char *const *ppsz_options,
+                           unsigned flags, mtime_t duration, int type,
+                           int i_net )
 {
     static atomic_uint last_input_id = ATOMIC_VAR_INIT(0);
 
@@ -885,10 +886,24 @@ input_item_NewWithType( const char *psz_uri, const char *psz_name,
 
     if( type != ITEM_TYPE_UNKNOWN )
         p_input->i_type = type;
-    p_input->b_error_when_reading = false;
+
+    if( i_net != -1 )
+        p_input->b_net = !!i_net;
+    else if( p_input->i_type == ITEM_TYPE_STREAM )
+        p_input->b_net = true;
     return p_input;
 }
 
+input_item_t *
+input_item_NewWithType( const char *psz_uri, const char *psz_name,
+                        int i_options, const char *const *ppsz_options,
+                        unsigned flags, mtime_t duration, int type )
+{
+    return input_item_NewWithTypeExt( psz_uri, psz_name, i_options,
+                                      ppsz_options, flags, duration, type,
+                                      -1 );
+}
+
 input_item_t *input_item_Copy( input_item_t *p_input )
 {
     vlc_mutex_lock( &p_input->lock );
@@ -923,6 +938,7 @@ struct item_type_entry
 {
     const char psz_scheme[7];
     uint8_t    i_type;
+    bool       b_net;
 };
 
 static int typecmp( const void *key, const void *entry )
@@ -934,61 +950,61 @@ static int typecmp( const void *key, const void *entry )
 }
 
 /* Guess the type of the item using the beginning of the mrl */
-static int GuessType( const input_item_t *p_item )
+static int GuessType( const input_item_t *p_item, bool *p_net )
 {
     static const struct item_type_entry tab[] =
     {   /* /!\ Alphabetical order /!\ */
         /* Short match work, not just exact match */
-        { "alsa",   ITEM_TYPE_CARD },
-        { "atsc",   ITEM_TYPE_CARD },
-        { "bd",     ITEM_TYPE_DISC },
-        { "cable",  ITEM_TYPE_CARD },
-        { "cdda",   ITEM_TYPE_CDDA },
-        { "cqam",   ITEM_TYPE_CARD },
-        { "dc1394", ITEM_TYPE_CARD },
-        { "dccp",   ITEM_TYPE_NET },
-        { "deckli", ITEM_TYPE_CARD }, /* decklink */
-        { "dir",    ITEM_TYPE_DIRECTORY },
-        { "dshow",  ITEM_TYPE_CARD },
-        { "dv",     ITEM_TYPE_CARD },
-        { "dvb",    ITEM_TYPE_CARD },
-        { "dvd",    ITEM_TYPE_DISC },
-        { "dtv",    ITEM_TYPE_CARD },
-        { "eyetv",  ITEM_TYPE_CARD },
-        { "fd",     ITEM_TYPE_UNKNOWN },
-        { "ftp",    ITEM_TYPE_NET },
-        { "http",   ITEM_TYPE_NET },
-        { "icyx",   ITEM_TYPE_NET },
-        { "imem",   ITEM_TYPE_UNKNOWN },
-        { "itpc",   ITEM_TYPE_NET },
-        { "jack",   ITEM_TYPE_CARD },
-        { "linsys", ITEM_TYPE_CARD },
-        { "live",   ITEM_TYPE_NET }, /* livedotcom */
-        { "mms",    ITEM_TYPE_NET },
-        { "mtp",    ITEM_TYPE_DISC },
-        { "ofdm",   ITEM_TYPE_CARD },
-        { "oss",    ITEM_TYPE_CARD },
-        { "pnm",    ITEM_TYPE_NET },
-        { "qam",    ITEM_TYPE_CARD },
-        { "qpsk",   ITEM_TYPE_CARD },
-        { "qtcapt", ITEM_TYPE_CARD }, /* qtcapture */
-        { "raw139", ITEM_TYPE_CARD }, /* raw1394 */
-        { "rt",     ITEM_TYPE_NET }, /* rtp, rtsp, rtmp */
-        { "satell", ITEM_TYPE_CARD }, /* sattelite */
-        { "screen", ITEM_TYPE_CARD },
-        { "sdp",    ITEM_TYPE_NET },
-        { "sftp",   ITEM_TYPE_NET },
-        { "shm",    ITEM_TYPE_CARD },
-        { "smb",    ITEM_TYPE_NET },
-        { "svcd",   ITEM_TYPE_DISC },
-        { "tcp",    ITEM_TYPE_NET },
-        { "terres", ITEM_TYPE_CARD }, /* terrestrial */
-        { "udp",    ITEM_TYPE_NET },  /* udplite too */
-        { "unsv",   ITEM_TYPE_NET },
-        { "usdigi", ITEM_TYPE_CARD }, /* usdigital */
-        { "v4l",    ITEM_TYPE_CARD },
-        { "vcd",    ITEM_TYPE_DISC },
-        { "window", ITEM_TYPE_CARD },
+        { "alsa",   ITEM_TYPE_CARD, false },
+        { "atsc",   ITEM_TYPE_CARD, false },
+        { "bd",     ITEM_TYPE_DISC, false },
+        { "cable",  ITEM_TYPE_CARD, false },
+        { "cdda",   ITEM_TYPE_CDDA, false },
+        { "cqam",   ITEM_TYPE_CARD, false },
+        { "dc1394", ITEM_TYPE_CARD, false },
+        { "dccp",   ITEM_TYPE_STREAM, true },
+        { "deckli", ITEM_TYPE_CARD, false }, /* decklink */
+        { "dir",    ITEM_TYPE_DIRECTORY, false },
+        { "dshow",  ITEM_TYPE_CARD, false },
+        { "dv",     ITEM_TYPE_CARD, false },
+        { "dvb",    ITEM_TYPE_CARD, false },
+        { "dvd",    ITEM_TYPE_DISC, false },
+        { "dtv",    ITEM_TYPE_CARD, false },
+        { "eyetv",  ITEM_TYPE_CARD, false },
+        { "fd",     ITEM_TYPE_UNKNOWN, false },
+        { "ftp",    ITEM_TYPE_FILE, true },
+        { "http",   ITEM_TYPE_FILE, true },
+        { "icyx",   ITEM_TYPE_STREAM, true },
+        { "imem",   ITEM_TYPE_UNKNOWN, false },
+        { "itpc",   ITEM_TYPE_PLAYLIST, true },
+        { "jack",   ITEM_TYPE_CARD, false },
+        { "linsys", ITEM_TYPE_CARD, false },
+        { "live",   ITEM_TYPE_STREAM, true }, /* livedotcom */
+        { "mms",    ITEM_TYPE_STREAM, true },
+        { "mtp",    ITEM_TYPE_DISC, false },
+        { "ofdm",   ITEM_TYPE_CARD, false },
+        { "oss",    ITEM_TYPE_CARD, false },
+        { "pnm",    ITEM_TYPE_STREAM, true },
+        { "qam",    ITEM_TYPE_CARD, false },
+        { "qpsk",   ITEM_TYPE_CARD, false },
+        { "qtcapt", ITEM_TYPE_CARD, false }, /* qtcapture */
+        { "raw139", ITEM_TYPE_CARD, false }, /* raw1394 */
+        { "rt",     ITEM_TYPE_STREAM, true }, /* rtp, rtsp, rtmp */
+        { "satell", ITEM_TYPE_CARD, false }, /* sattelite */
+        { "screen", ITEM_TYPE_CARD, false },
+        { "sdp",    ITEM_TYPE_FILE, true },
+        { "sftp",   ITEM_TYPE_FILE, true },
+        { "shm",    ITEM_TYPE_CARD, false },
+        { "smb",    ITEM_TYPE_FILE, true },
+        { "svcd",   ITEM_TYPE_DISC, false },
+        { "tcp",    ITEM_TYPE_STREAM, true },
+        { "terres", ITEM_TYPE_CARD, false }, /* terrestrial */
+        { "udp",    ITEM_TYPE_STREAM, true },  /* udplite too */
+        { "unsv",   ITEM_TYPE_STREAM, true },
+        { "usdigi", ITEM_TYPE_CARD, false }, /* usdigital */
+        { "v4l",    ITEM_TYPE_CARD, false },
+        { "vcd",    ITEM_TYPE_DISC, false },
+        { "window", ITEM_TYPE_CARD, false },
     };
     const struct item_type_entry *e;
 
@@ -997,7 +1013,15 @@ static int GuessType( const input_item_t *p_item )
 
     e = bsearch( p_item->psz_uri, tab, sizeof( tab ) / sizeof( tab[0] ),
                  sizeof( tab[0] ), typecmp );
-    return e ? e->i_type : ITEM_TYPE_FILE;
+    if( e )
+    {
+        *p_net = e->b_net;
+        return e->i_type;
+    } else
+    {
+        *p_net = false;
+        return ITEM_TYPE_FILE;
+    }
 }
 
 input_item_node_t *input_item_node_Create( input_item_t *p_input )
diff --git a/src/libvlccore.sym b/src/libvlccore.sym
index 1b39c0e..2d88c8d 100644
--- a/src/libvlccore.sym
+++ b/src/libvlccore.sym
@@ -199,6 +199,7 @@ input_item_MetaMatch
 input_item_MergeInfos
 input_item_NewExt
 input_item_NewWithType
+input_item_NewWithTypeExt
 input_item_Hold
 input_item_Release
 input_item_node_AppendItem
diff --git a/src/playlist/preparser.c b/src/playlist/preparser.c
index e13862c..f1c1d1f 100644
--- a/src/playlist/preparser.c
+++ b/src/playlist/preparser.c
@@ -147,6 +147,7 @@ static void Preparse( vlc_object_t *obj, input_item_t *p_item,
 {
     vlc_mutex_lock( &p_item->lock );
     int i_type = p_item->i_type;
+    bool b_net = p_item->b_net;
     vlc_mutex_unlock( &p_item->lock );
 
     bool b_preparse = false;
@@ -155,10 +156,7 @@ static void Preparse( vlc_object_t *obj, input_item_t *p_item,
     case ITEM_TYPE_DIRECTORY:
     case ITEM_TYPE_PLAYLIST:
     case ITEM_TYPE_NODE:
-        b_preparse = true;
-        break;
-    case ITEM_TYPE_NET:
-        if (i_options & META_REQUEST_OPTION_SCOPE_NETWORK)
+        if (!b_net || i_options & META_REQUEST_OPTION_SCOPE_NETWORK)
             b_preparse = true;
         break;
     }
-- 
2.1.3





More information about the vlc-devel mailing list