BEAST/BSE - Better Audio System and Sound Engine
0.8.2
|
00001 00002 /*-------- begin ../sfi/sfidl generated code --------*/ 00003 00004 00005 00006 #include <bse/bsecxxplugin.hh> 00007 00008 00009 /* enum prototypes */ 00010 00011 00012 /* choice prototypes */ 00013 00014 00015 /* record prototypes */ 00016 00017 00018 /* sequence prototypes */ 00019 00020 00021 /* class prototypes */ 00022 namespace Bse { 00023 class BalanceBase; 00024 class Balance; 00025 #define BSE_TYPE_BALANCE BSE_CXX_DECLARED_CLASS_TYPE (Bse, Balance) 00026 #define BSE_IS_BALANCE(o) (::Bse::CxxBase::instance_is_a (o, BSE_TYPE_BALANCE)) 00027 00028 00029 /* enum definitions */ 00030 00031 00032 /* sequence definitions */ 00033 00034 00035 /* record definitions */ 00036 00037 00038 /* enum declarations */ 00039 00040 00041 /* sequence type declarations */ 00042 00043 00044 /* record type declarations */ 00045 00046 00047 /* procedure prototypes */ 00048 00049 00050 /* class definitions */ 00051 BSE_CXX_DECLARE_CLASS (Balance); 00052 class BalanceBase : public ::Bse::Effect { 00053 template<bool> static inline const unsigned char* inlined_pixstream(); 00054 public: 00055 static inline const unsigned char* pixstream () { return inlined_pixstream<true>(); } 00056 static void class_init (::Bse::CxxBaseClass *klass); 00057 static inline const char* options () { return ""; } 00058 static inline const char* category () { static const char *c = NULL; 00059 return c ? c : c = sfi_category_concat ("/Modules", ("/Spatial/Balance")); } 00060 static inline const char* i18n_category () { static const char *c = NULL; 00061 return c ? c : c = sfi_category_concat ("/Modules", _("/Spatial/Balance")); } 00062 static inline const char* blurb () { return _("BseBalance is a stereo panning module with two audio and two control inputs, each of which can be seperately level adjusted. The resulting output balance is controlled by a balance adjustment and the sum of the control inputs. To avoid aliasing artefacts for rapid balance changes, the control signal is preprocessed by a simple lowpass filter with adjustable cutoff frequency."); } 00063 static inline const char* authors () { return "Tim Janik"; } 00064 static inline const char* license () { return _("GNU Lesser General Public License"); } 00065 static inline const char* type_name () { return "BseBalance"; } 00066 public: 00067 enum { 00068 ICHANNEL_AUDIO_IN1, 00069 ICHANNEL_AUDIO_IN2, 00070 ICHANNEL_CTRL_IN1, 00071 ICHANNEL_CTRL_IN2, 00072 N_ICHANNELS 00073 }; 00074 public: 00075 enum { 00076 OCHANNEL_LEFT_OUT, 00077 OCHANNEL_MIX_OUT, 00078 OCHANNEL_RIGHT_OUT, 00079 N_OCHANNELS 00080 }; 00081 protected: 00082 enum BalancePropertyID { 00083 PROP_ALEVEL1 = 1, 00084 PROP_ALEVEL2, 00085 PROP_ABALANCE, 00086 PROP_CLEVEL1, 00087 PROP_CLEVEL2, 00088 PROP_CBALANCE, 00089 PROP_OSTRENGTH, 00090 PROP_LOWPASS, 00091 PROP_OBALANCE, 00092 }; 00093 public: 00094 /* "transport" structure to configure synthesis modules from properties */ 00095 struct BalanceProperties { 00096 typedef BalancePropertyID IDType; 00097 Sfi::Real alevel1; 00098 Sfi::Real alevel2; 00099 Sfi::Real abalance; 00100 Sfi::Real clevel1; 00101 Sfi::Real clevel2; 00102 Sfi::Real cbalance; 00103 Sfi::Real ostrength; 00104 Sfi::Real lowpass; 00105 Sfi::Real obalance; 00106 explicit BalanceProperties (BalanceBase *p) : 00107 alevel1 (p->alevel1), 00108 alevel2 (p->alevel2), 00109 abalance (p->abalance), 00110 clevel1 (p->clevel1), 00111 clevel2 (p->clevel2), 00112 cbalance (p->cbalance), 00113 ostrength (p->ostrength), 00114 lowpass (p->lowpass), 00115 obalance (p->obalance) 00116 { 00117 } 00118 }; 00119 protected: 00120 typedef void AutoUpdateCategory; 00121 protected: 00122 Sfi::Real alevel1; 00123 Sfi::Real alevel2; 00124 Sfi::Real abalance; 00125 Sfi::Real clevel1; 00126 Sfi::Real clevel2; 00127 Sfi::Real cbalance; 00128 Sfi::Real ostrength; 00129 Sfi::Real lowpass; 00130 Sfi::Real obalance; 00131 public: 00132 void get_property (BalancePropertyID prop_id, ::Bse::Value &value, GParamSpec *pspec) 00133 { 00134 switch (prop_id) { 00135 case PROP_ALEVEL1: 00136 sfi_value_set_real (&value, alevel1); 00137 break; 00138 case PROP_ALEVEL2: 00139 sfi_value_set_real (&value, alevel2); 00140 break; 00141 case PROP_ABALANCE: 00142 sfi_value_set_real (&value, abalance); 00143 break; 00144 case PROP_CLEVEL1: 00145 sfi_value_set_real (&value, clevel1); 00146 break; 00147 case PROP_CLEVEL2: 00148 sfi_value_set_real (&value, clevel2); 00149 break; 00150 case PROP_CBALANCE: 00151 sfi_value_set_real (&value, cbalance); 00152 break; 00153 case PROP_OSTRENGTH: 00154 sfi_value_set_real (&value, ostrength); 00155 break; 00156 case PROP_LOWPASS: 00157 sfi_value_set_real (&value, lowpass); 00158 break; 00159 case PROP_OBALANCE: 00160 sfi_value_set_real (&value, obalance); 00161 break; 00162 }; 00163 } 00164 void set_property (BalancePropertyID prop_id, const ::Bse::Value &value, GParamSpec *pspec) 00165 { 00166 switch (prop_id) { 00167 case PROP_ALEVEL1: 00168 alevel1 = sfi_value_get_real (&value); 00169 break; 00170 case PROP_ALEVEL2: 00171 alevel2 = sfi_value_get_real (&value); 00172 break; 00173 case PROP_ABALANCE: 00174 abalance = sfi_value_get_real (&value); 00175 break; 00176 case PROP_CLEVEL1: 00177 clevel1 = sfi_value_get_real (&value); 00178 break; 00179 case PROP_CLEVEL2: 00180 clevel2 = sfi_value_get_real (&value); 00181 break; 00182 case PROP_CBALANCE: 00183 cbalance = sfi_value_get_real (&value); 00184 break; 00185 case PROP_OSTRENGTH: 00186 ostrength = sfi_value_get_real (&value); 00187 break; 00188 case PROP_LOWPASS: 00189 lowpass = sfi_value_get_real (&value); 00190 break; 00191 case PROP_OBALANCE: 00192 obalance = sfi_value_get_real (&value); 00193 break; 00194 }; 00195 property_changed (BalancePropertyID (prop_id)); 00196 update_modules(); 00197 switch (prop_id) { 00198 default: ; 00199 }; 00200 } 00201 virtual bool editable_property (BalancePropertyID prop_id, GParamSpec *pspec) 00202 { 00203 return true; 00204 } 00205 virtual void get_candidates (BalancePropertyID prop_id, ::Bse::PropertyCandidatesHandle &pch, GParamSpec *pspec) 00206 { 00207 } 00208 void property_updated (BalancePropertyID prop_id, guint64 tick_stamp, double prop_value, GParamSpec *pspec) 00209 { 00210 bool seen_change = false; 00211 switch (prop_id) { 00212 default: ; 00213 }; 00214 if (seen_change && 00215 property_changed (BalancePropertyID (prop_id))) 00216 update_modules(); 00217 } 00218 private: 00219 static struct StaticData { 00220 int dummy; 00221 } static_data; 00222 protected: 00223 virtual bool property_changed (BalancePropertyID) { return false; } 00224 virtual ~BalanceBase () 00225 { 00226 } 00227 public: 00228 }; 00229 00230 00231 /* choice implementations */ 00232 00233 00234 /* record implementations */ 00235 00236 00237 /* sequence implementations */ 00238 00239 00240 /* class implementations */ 00241 void 00242 BalanceBase::class_init (::Bse::CxxBaseClass *klass) 00243 { 00244 klass->set_accessors (::Bse::cxx_get_property_trampoline<BalanceBase, BalancePropertyID>, 00245 ::Bse::cxx_set_property_trampoline<BalanceBase, BalancePropertyID>, 00246 ::Bse::cxx_editable_property_trampoline<BalanceBase, BalancePropertyID>, 00247 ::Bse::cxx_get_candidates_trampoline<BalanceBase, BalancePropertyID>, 00248 NULL); 00249 klass->add_param (PROP_ALEVEL1, sfidl_pspec_Perc (_("Audio Input"),"/opt/src/beast/plugins/bsebalance.idl",758,"alevel1",_ ( "Input 1 [%]" ) , _ ( "Attenuate the level of audio input 1" ) , 100LL , ":r:w:S:G:")); 00250 klass->add_param (PROP_ALEVEL2, sfidl_pspec_Perc (_("Audio Input"),"/opt/src/beast/plugins/bsebalance.idl",759,"alevel2",_ ( "Input 2 [%]" ) , _ ( "Attenuate the level of audio input 2" ) , 100LL , ":r:w:S:G:")); 00251 klass->add_param (PROP_ABALANCE, sfidl_pspec_Balance (_("Audio Input"),"/opt/src/beast/plugins/bsebalance.idl",760,"abalance",_ ( "Balance" ) , _ ( "Balance audio input levels" ) , 0LL , ":r:w:G:")); 00252 klass->add_param (PROP_CLEVEL1, sfidl_pspec_Perc (_("Control Input"),"/opt/src/beast/plugins/bsebalance.idl",763,"clevel1",_ ( "Input 1 [%]" ) , _ ( "Attenuate the level of control input 1" ) , 100LL , ":r:w:S:G:")); 00253 klass->add_param (PROP_CLEVEL2, sfidl_pspec_Perc (_("Control Input"),"/opt/src/beast/plugins/bsebalance.idl",764,"clevel2",_ ( "Input 2 [%]" ) , _ ( "Attenuate the level of control input 2" ) , 100LL , ":r:w:S:G:")); 00254 klass->add_param (PROP_CBALANCE, sfidl_pspec_Balance (_("Control Input"),"/opt/src/beast/plugins/bsebalance.idl",765,"cbalance",_ ( "Balance" ) , _ ( "Balance control input levels" ) , 0LL , ":r:w:G:")); 00255 klass->add_param (PROP_OSTRENGTH, sfidl_pspec_Perc (_("Output Panning"),"/opt/src/beast/plugins/bsebalance.idl",768,"ostrength",_ ( "Control Strength" ) , _ ( "Adjust how much the control signals affect the output balance" ) , 100LL , ":r:w:S:G:")); 00256 klass->add_param (PROP_LOWPASS, sfidl_pspec_SfiReal (_("Output Panning"),"/opt/src/beast/plugins/bsebalance.idl",769,"lowpass",_ ( "Lowpass [Hz]" ) , _ ( "Lowpass filter frequency for the control signal" ) , 100LL , 100LL , 1000LL , 10LL , "scale:" ":r:w:S:G:")); 00257 klass->add_param (PROP_OBALANCE, sfidl_pspec_Balance (_("Output Panning"),"/opt/src/beast/plugins/bsebalance.idl",770,"obalance",_ ( "Output Balance" ) , _ ( "Adjust output balance between left and right" ) , 0LL , ":r:w:S:G:")); 00258 klass->add_ichannel ("audio_in1", _("Audio In1"), _("First audio input"), ICHANNEL_AUDIO_IN1); 00259 klass->add_ichannel ("audio_in2", _("Audio In2"), _("Second audio input"), ICHANNEL_AUDIO_IN2); 00260 klass->add_ichannel ("ctrl_in1", _("Ctrl In1"), _("First control input"), ICHANNEL_CTRL_IN1); 00261 klass->add_ichannel ("ctrl_in2", _("Ctrl In2"), _("Second control input"), ICHANNEL_CTRL_IN2); 00262 klass->add_ochannel ("left_out", _("Left Out"), _("Left audio output"), OCHANNEL_LEFT_OUT); 00263 klass->add_ochannel ("mix_out", _("Mix Out"), _("Mixed audio output"), OCHANNEL_MIX_OUT); 00264 klass->add_ochannel ("right_out", _("Right Out"), _("Right audio output"), OCHANNEL_RIGHT_OUT); 00265 } 00266 00267 00268 /* procedure implementations */ 00269 00270 00271 /* bsebalance.idl type registrations */ 00272 #define BSE_CXX_REGISTER_ALL_TYPES_FROM_BSEBALANCE_IDL() \ 00273 BSE_CXX_REGISTER_EFFECT (Balance); \ 00274 /* bsebalance.idl type registrations done */ 00275 } // Bse 00276 template<bool> const unsigned char* 00277 ::Bse::BalanceBase::inlined_pixstream() 00278 { 00279 /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ 00280 00281 #ifdef __SUNPRO_C 00282 #pragma align 4 (local_pixstream) 00283 #endif 00284 #ifdef __GNUC__ 00285 static const guint8 local_pixstream[] __attribute__ ((__aligned__ (4))) = 00286 #else 00287 static const guint8 local_pixstream[] = 00288 #endif 00289 { "" 00290 /* Pixbuf magic (0x47646b50) */ 00291 "GdkP" 00292 /* length: header (24) + pixel_data (2323) */ 00293 "\0\0\11+" 00294 /* pixdata_type (0x2010002) */ 00295 "\2\1\0\2" 00296 /* rowstride (256) */ 00297 "\0\0\1\0" 00298 /* width (64) */ 00299 "\0\0\0@" 00300 /* height (64) */ 00301 "\0\0\0@" 00302 /* pixel_data: */ 00303 "\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\212\0\0\0\0\1\0\0\0" 00304 "\377\262\0\0\0\0\1\0\0\0\377\214\0\0\0\0\202\0\0\0\377\260\0\0\0\0\202" 00305 "\0\0\0\377\214\0\0\0\0\203\0\0\0\377\256\0\0\0\0\203\0\0\0\377\214\0" 00306 "\0\0\0\204\0\0\0\377\254\0\0\0\0\204\0\0\0\377\214\0\0\0\0\205\0\0\0" 00307 "\377\252\0\0\0\0\205\0\0\0\377\214\0\0\0\0\203\0\0\0\377\1\276\32""4" 00308 "\377\202\0\0\0\377\250\0\0\0\0\202\0\0\0\377\1l&\226\377\203\0\0\0\377" 00309 "\214\0\0\0\0\203\0\0\0\377\2\275\32""6\377\273\33""8\377\202\0\0\0\377" 00310 "\246\0\0\0\0\202\0\0\0\377\2l&\226\377j&\230\377\203\0\0\0\377\214\0" 00311 "\0\0\0\203\0\0\0\377\3\273\33""8\377\272\33:\377\270\33<\377\202\0\0" 00312 "\0\377\244\0\0\0\0\202\0\0\0\377\3l&\225\377k&\227\377i'\231\377\203" 00313 "\0\0\0\377\214\0\0\0\0\203\0\0\0\377\4\272\33""9\377\270\33<\377\266" 00314 "\33>\377\264\34@\377\202\0\0\0\377\242\0\0\0\0\202\0\0\0\377\4m&\225" 00315 "\377k&\227\377i&\231\377g'\233\377\203\0\0\0\377\214\0\0\0\0\205\0\0" 00316 "\0\377\3\265\34\77\377\263\34B\377\261\34D\377\202\0\0\0\377\240\0\0" 00317 "\0\0\202\0\0\0\377\3m&\224\377k&\226\377j&\230\377\205\0\0\0\377\214" 00318 "\0\0\0\0\207\0\0\0\377\2\260\34E\377\256\35H\377\207\0\0\0\377\224\0" 00319 "\0\0\0\207\0\0\0\377\2n&\224\377l&\226\377\207\0\0\0\377\214\0\0\0\0" 00320 "\220\0\0\0\377\224\0\0\0\0\220\0\0\0\377\214\0\0\0\0\203\0\0\0\377\2" 00321 "\264\34@\377\262\34B\377\213\0\0\0\377\224\0\0\0\0\213\0\0\0\377\2d'" 00322 "\240\377b(\242\377\203\0\0\0\377\214\0\0\0\0\203\0\0\0\377\4\263\34B" 00323 "\377\261\34D\377\257\34F\377\255\35H\377\205\0\0\0\377\202\233\222+\377" 00324 "\202\0\0\0\377\224\0\0\0\0\202\0\0\0\377\202\233\222+\377\205\0\0\0\377" 00325 "\4f'\235\377d'\237\377b'\241\377`(\243\377\203\0\0\0\377\214\0\0\0\0" 00326 "\203\0\0\0\377\6\261\34D\377\260\34F\377\256\35H\377\254\35J\377\252" 00327 "\35L\377\250\35N\377\203\0\0\0\377\202\233\222+\377\202\0\0\0\377\224" 00328 "\0\0\0\0\202\0\0\0\377\202\233\222+\377\203\0\0\0\377\6h'\232\377f'\235" 00329 "\377d'\237\377b'\241\377a(\243\377_(\245\377\203\0\0\0\377\214\0\0\0" 00330 "\0\203\0\0\0\377\6\260\34E\377\256\34G\377\254\35J\377\252\35L\377\251" 00331 "\35N\377\247\36P\377\203\0\0\0\377\202\233\222+\377\202\0\0\0\377\224" 00332 "\0\0\0\0\202\0\0\0\377\202\233\222+\377\203\0\0\0\377\6g'\234\377e'\236" 00333 "\377c'\240\377a(\243\377_(\245\377](\247\377\203\0\0\0\377\214\0\0\0" 00334 "\0\214\0\0\0\377\202\233\222+\377\202\0\0\0\377\224\0\0\0\0\202\0\0\0" 00335 "\377\202\233\222+\377\214\0\0\0\377\214\0\0\0\0\214\0\0\0\377\202\233" 00336 "\222+\377\202\0\0\0\377\224\0\0\0\0\202\0\0\0\377\202\233\222+\377\214" 00337 "\0\0\0\377\214\0\0\0\0\214\0\0\0\377\202\233\222+\377\202\0\0\0\377\224" 00338 "\0\0\0\0\202\0\0\0\377\202\233\222+\377\214\0\0\0\377\214\0\0\0\0\214" 00339 "\0\0\0\377\202\233\222+\377\202\0\0\0\377\224\0\0\0\0\202\0\0\0\377\202" 00340 "\233\222+\377\214\0\0\0\377\214\0\0\0\0\203\0\0\0\377\6\251\35N\377\247" 00341 "\36P\377\245\36R\377\243\36T\377\241\36V\377\240\37Y\377\203\0\0\0\377" 00342 "\202\233\222+\377\202\0\0\0\377\224\0\0\0\0\202\0\0\0\377\202\233\222" 00343 "+\377\203\0\0\0\377\6_(\244\377^(\247\377\\(\251\377Z)\253\377X)\255" 00344 "\377V)\257\377\203\0\0\0\377\214\0\0\0\0\203\0\0\0\377\6\247\35O\377" 00345 "\246\36R\377\244\36T\377\242\36V\377\240\37X\377\236\37Z\377\203\0\0" 00346 "\0\377\202\233\222+\377\202\0\0\0\377\224\0\0\0\0\202\0\0\0\377\202\233" 00347 "\222+\377\203\0\0\0\377\6^(\246\377\\(\250\377Z)\252\377Y)\255\377W)" 00348 "\257\377U)\261\377\203\0\0\0\377\214\0\0\0\0\203\0\0\0\377\4\246\36Q" 00349 "\377\244\36S\377\242\36U\377\240\36X\377\205\0\0\0\377\202\233\222+\377" 00350 "\202\0\0\0\377\224\0\0\0\0\202\0\0\0\377\202\233\222+\377\205\0\0\0\377" 00351 "\4Y)\254\377W)\256\377U)\261\377S*\263\377\203\0\0\0\377\214\0\0\0\0" 00352 "\203\0\0\0\377\2\245\36S\377\243\36U\377\213\0\0\0\377\224\0\0\0\0\213" 00353 "\0\0\0\377\2T*\262\377R*\264\377\203\0\0\0\377\214\0\0\0\0\220\0\0\0" 00354 "\377\224\0\0\0\0\220\0\0\0\377\214\0\0\0\0\207\0\0\0\377\2\232\37_\377" 00355 "\231\40a\377\207\0\0\0\377\224\0\0\0\0\207\0\0\0\377\2X)\255\377V)\257" 00356 "\377\207\0\0\0\377\214\0\0\0\0\205\0\0\0\377\3\235\37\\\377\233\37^\377" 00357 "\231\40`\377\202\0\0\0\377\240\0\0\0\0\202\0\0\0\377\3U)\261\377S*\263" 00358 "\377Q*\265\377\205\0\0\0\377\214\0\0\0\0\203\0\0\0\377\4\237\37Z\377" 00359 "\235\37\\\377\233\37^\377\231\37`\377\202\0\0\0\377\242\0\0\0\0\202\0" 00360 "\0\0\377\4R*\265\377P*\267\377N*\271\377L+\273\377\203\0\0\0\377\214" 00361 "\0\0\0\0\203\0\0\0\377\3\235\37[\377\234\37]\377\232\37`\377\202\0\0" 00362 "\0\377\244\0\0\0\0\202\0\0\0\377\3O*\270\377M+\273\377K+\275\377\203" 00363 "\0\0\0\377\214\0\0\0\0\203\0\0\0\377\2\234\37]\377\232\37_\377\202\0" 00364 "\0\0\377\246\0\0\0\0\202\0\0\0\377\2K+\274\377I+\276\377\203\0\0\0\377" 00365 "\214\0\0\0\0\203\0\0\0\377\1\233\37_\377\202\0\0\0\377\250\0\0\0\0\202" 00366 "\0\0\0\377\1H+\300\377\203\0\0\0\377\214\0\0\0\0\205\0\0\0\377\252\0" 00367 "\0\0\0\205\0\0\0\377\214\0\0\0\0\204\0\0\0\377\254\0\0\0\0\204\0\0\0" 00368 "\377\214\0\0\0\0\203\0\0\0\377\256\0\0\0\0\203\0\0\0\377\214\0\0\0\0" 00369 "\202\0\0\0\377\260\0\0\0\0\202\0\0\0\377\214\0\0\0\0\1\0\0\0\377\262" 00370 "\0\0\0\0\1\0\0\0\377\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\220\0\0\0\0" 00371 "\262\0\0\0\377\216\0\0\0\0\262\0\0\0\377\216\0\0\0\0\203\0\0\0\377\17" 00372 "\205\"x\377\203#{\377\201#}\377\177#\177\377}$\201\377|$\203\377z$\205" 00373 "\377x$\210\377v%\212\377t%\214\377r%\216\377q%\220\377o&\222\377m&\225" 00374 "\377k&\227\377\204\0\0\0\377\206\321\253\317\377\204\0\0\0\377\15P*\267" 00375 "\377N*\271\377L+\274\377J+\276\377H+\300\377F+\302\377E,\304\377C,\306" 00376 "\377A,\311\377\77-\313\377=-\315\377;-\317\377:-\321\377\2029-\322\377" 00377 "\203\0\0\0\377\216\0\0\0\0\203\0\0\0\377\15\203#z\377\201#|\377\200#" 00378 "~\377~#\201\377|$\203\377z$\205\377x$\207\377v%\211\377u%\213\377s%\216" 00379 "\377q%\220\377o&\222\377m&\224\377\204\0\0\0\377\212\321\253\317\377" 00380 "\204\0\0\0\377\12J+\275\377I+\277\377G+\302\377E,\304\377C,\306\377A" 00381 ",\310\377\77,\312\377>-\314\377<-\317\377:-\321\377\2039-\322\377\203" 00382 "\0\0\0\377\216\0\0\0\0\203\0\0\0\377\15\202#|\377\200#~\377~#\200\377" 00383 "|$\202\377{$\204\377y$\207\377w$\211\377u%\213\377s%\215\377q%\217\377" 00384 "p&\221\377n&\224\377l&\226\377\204\0\0\0\377\212\321\253\317\377\204" 00385 "\0\0\0\377\11I+\277\377G+\301\377E,\303\377D,\305\377B,\310\377@,\312" 00386 "\377>-\314\377<-\316\377:-\320\377\2049-\322\377\203\0\0\0\377\216\0" 00387 "\0\0\0\203\0\0\0\377\17\200#}\377\177#\200\377}$\202\377{$\204\377y$" 00388 "\206\377w$\210\377u%\212\377t%\215\377r%\217\377p%\221\377n&\223\377" 00389 "l&\225\377j&\227\377i'\232\377g'\234\377\204\0\0\0\377\206\321\253\317" 00390 "\377\204\0\0\0\377\12K+\274\377I+\276\377H+\301\377F,\303\377D,\305\377" 00391 "B,\307\377@,\311\377>-\314\377=-\316\377;-\320\377\2059-\322\377\203" 00392 "\0\0\0\377\216\0\0\0\0\262\0\0\0\377\216\0\0\0\0\262\0\0\0\377\377\0" 00393 "\0\0\0\377\0\0\0\0\377\0\0\0\0\212\0\0\0\0"}; 00394 00395 00396 00397 return local_pixstream; 00398 } 00399 00400 /*-------- end ../sfi/sfidl generated code --------*/ 00401 00402