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 AmplifierBase; 00024 class Amplifier; 00025 #define BSE_TYPE_AMPLIFIER BSE_CXX_DECLARED_CLASS_TYPE (Bse, Amplifier) 00026 #define BSE_IS_AMPLIFIER(o) (::Bse::CxxBase::instance_is_a (o, BSE_TYPE_AMPLIFIER)) 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 (Amplifier); 00052 class AmplifierBase : 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", ("/Routing/Amplifier")); } 00060 static inline const char* i18n_category () { static const char *c = NULL; 00061 return c ? c : c = sfi_category_concat ("/Modules", _("/Routing/Amplifier")); } 00062 static inline const char* blurb () { return _("BseAmplifier provides input signal controlled amplification or attenuation. It supports two control inputs and two audio inputs which are mixed together after balance and level adjustments. The gain setting controls preamplification of the mixed audio signal. The mixed control signal, weighted by a strength setting, determines additional amplification, allowing for external sources to modulate the overall volume (tremolo). The mixed control signal can influence the amplification linearly (to amplify other control signals) or exponentially (to amplify audio signals). Finally, the master volume controls amplification of the resulting output signal."); } 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 "BseAmplifier"; } 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_AUDIO_OUT, 00077 N_OCHANNELS 00078 }; 00079 protected: 00080 enum AmplifierPropertyID { 00081 PROP_ALEVEL1 = 1, 00082 PROP_ALEVEL2, 00083 PROP_ABALANCE, 00084 PROP_CLEVEL1, 00085 PROP_CLEVEL2, 00086 PROP_CBALANCE, 00087 PROP_CTRL_MUL, 00088 PROP_CTRL_EXP, 00089 PROP_OSTRENGTH, 00090 PROP_BASE_LEVEL, 00091 PROP_MASTER_VOLUME, 00092 PROP_AUDIO_BALANCE, 00093 PROP_CTRL_BALANCE, 00094 PROP_CTRL_STRENGTH_F, 00095 PROP_MASTER_GAIN_F, 00096 PROP_AUDIO_GAIN_F, 00097 PROP_OLEVEL, 00098 }; 00099 public: 00100 /* "transport" structure to configure synthesis modules from properties */ 00101 struct AmplifierProperties { 00102 typedef AmplifierPropertyID IDType; 00103 Sfi::Real alevel1; 00104 Sfi::Real alevel2; 00105 Sfi::Real abalance; 00106 Sfi::Real clevel1; 00107 Sfi::Real clevel2; 00108 Sfi::Real cbalance; 00109 bool ctrl_mul; 00110 bool ctrl_exp; 00111 Sfi::Real ostrength; 00112 Sfi::Real base_level; 00113 Sfi::Real master_volume; 00114 Sfi::Real audio_balance; 00115 Sfi::Real ctrl_balance; 00116 Sfi::Real ctrl_strength_f; 00117 Sfi::Real master_gain_f; 00118 Sfi::Real audio_gain_f; 00119 Sfi::Real olevel; 00120 explicit AmplifierProperties (AmplifierBase *p) : 00121 alevel1 (p->alevel1), 00122 alevel2 (p->alevel2), 00123 abalance (p->abalance), 00124 clevel1 (p->clevel1), 00125 clevel2 (p->clevel2), 00126 cbalance (p->cbalance), 00127 ctrl_mul (p->ctrl_mul), 00128 ctrl_exp (p->ctrl_exp), 00129 ostrength (p->ostrength), 00130 base_level (p->base_level), 00131 master_volume (p->master_volume), 00132 audio_balance (p->audio_balance), 00133 ctrl_balance (p->ctrl_balance), 00134 ctrl_strength_f (p->ctrl_strength_f), 00135 master_gain_f (p->master_gain_f), 00136 audio_gain_f (p->audio_gain_f), 00137 olevel (p->olevel) 00138 { 00139 } 00140 }; 00141 protected: 00142 typedef void AutoUpdateCategory; 00143 protected: 00144 Sfi::Real alevel1; 00145 Sfi::Real alevel2; 00146 Sfi::Real abalance; 00147 Sfi::Real clevel1; 00148 Sfi::Real clevel2; 00149 Sfi::Real cbalance; 00150 bool ctrl_mul; 00151 bool ctrl_exp; 00152 Sfi::Real ostrength; 00153 Sfi::Real base_level; 00154 Sfi::Real master_volume; 00155 Sfi::Real audio_balance; 00156 Sfi::Real ctrl_balance; 00157 Sfi::Real ctrl_strength_f; 00158 Sfi::Real master_gain_f; 00159 Sfi::Real audio_gain_f; 00160 Sfi::Real olevel; 00161 public: 00162 void get_property (AmplifierPropertyID prop_id, ::Bse::Value &value, GParamSpec *pspec) 00163 { 00164 switch (prop_id) { 00165 case PROP_ALEVEL1: 00166 sfi_value_set_real (&value, alevel1); 00167 break; 00168 case PROP_ALEVEL2: 00169 sfi_value_set_real (&value, alevel2); 00170 break; 00171 case PROP_ABALANCE: 00172 sfi_value_set_real (&value, abalance); 00173 break; 00174 case PROP_CLEVEL1: 00175 sfi_value_set_real (&value, clevel1); 00176 break; 00177 case PROP_CLEVEL2: 00178 sfi_value_set_real (&value, clevel2); 00179 break; 00180 case PROP_CBALANCE: 00181 sfi_value_set_real (&value, cbalance); 00182 break; 00183 case PROP_CTRL_MUL: 00184 sfi_value_set_bool (&value, ctrl_mul); 00185 break; 00186 case PROP_CTRL_EXP: 00187 sfi_value_set_bool (&value, ctrl_exp); 00188 break; 00189 case PROP_OSTRENGTH: 00190 sfi_value_set_real (&value, ostrength); 00191 break; 00192 case PROP_BASE_LEVEL: 00193 sfi_value_set_real (&value, base_level); 00194 break; 00195 case PROP_MASTER_VOLUME: 00196 sfi_value_set_real (&value, master_volume); 00197 break; 00198 case PROP_AUDIO_BALANCE: 00199 sfi_value_set_real (&value, audio_balance); 00200 break; 00201 case PROP_CTRL_BALANCE: 00202 sfi_value_set_real (&value, ctrl_balance); 00203 break; 00204 case PROP_CTRL_STRENGTH_F: 00205 sfi_value_set_real (&value, ctrl_strength_f); 00206 break; 00207 case PROP_MASTER_GAIN_F: 00208 sfi_value_set_real (&value, master_gain_f); 00209 break; 00210 case PROP_AUDIO_GAIN_F: 00211 sfi_value_set_real (&value, audio_gain_f); 00212 break; 00213 case PROP_OLEVEL: 00214 sfi_value_set_real (&value, olevel); 00215 break; 00216 }; 00217 } 00218 void set_property (AmplifierPropertyID prop_id, const ::Bse::Value &value, GParamSpec *pspec) 00219 { 00220 switch (prop_id) { 00221 case PROP_ALEVEL1: 00222 alevel1 = sfi_value_get_real (&value); 00223 break; 00224 case PROP_ALEVEL2: 00225 alevel2 = sfi_value_get_real (&value); 00226 break; 00227 case PROP_ABALANCE: 00228 abalance = sfi_value_get_real (&value); 00229 break; 00230 case PROP_CLEVEL1: 00231 clevel1 = sfi_value_get_real (&value); 00232 break; 00233 case PROP_CLEVEL2: 00234 clevel2 = sfi_value_get_real (&value); 00235 break; 00236 case PROP_CBALANCE: 00237 cbalance = sfi_value_get_real (&value); 00238 break; 00239 case PROP_CTRL_MUL: 00240 ctrl_mul = sfi_value_get_bool (&value); 00241 break; 00242 case PROP_CTRL_EXP: 00243 ctrl_exp = sfi_value_get_bool (&value); 00244 break; 00245 case PROP_OSTRENGTH: 00246 ostrength = sfi_value_get_real (&value); 00247 break; 00248 case PROP_BASE_LEVEL: 00249 base_level = sfi_value_get_real (&value); 00250 break; 00251 case PROP_MASTER_VOLUME: 00252 master_volume = sfi_value_get_real (&value); 00253 break; 00254 case PROP_AUDIO_BALANCE: 00255 audio_balance = sfi_value_get_real (&value); 00256 break; 00257 case PROP_CTRL_BALANCE: 00258 ctrl_balance = sfi_value_get_real (&value); 00259 break; 00260 case PROP_CTRL_STRENGTH_F: 00261 ctrl_strength_f = sfi_value_get_real (&value); 00262 break; 00263 case PROP_MASTER_GAIN_F: 00264 master_gain_f = sfi_value_get_real (&value); 00265 break; 00266 case PROP_AUDIO_GAIN_F: 00267 audio_gain_f = sfi_value_get_real (&value); 00268 break; 00269 case PROP_OLEVEL: 00270 olevel = sfi_value_get_real (&value); 00271 break; 00272 }; 00273 property_changed (AmplifierPropertyID (prop_id)); 00274 update_modules(); 00275 switch (prop_id) { 00276 default: ; 00277 }; 00278 } 00279 virtual bool editable_property (AmplifierPropertyID prop_id, GParamSpec *pspec) 00280 { 00281 return true; 00282 } 00283 virtual void get_candidates (AmplifierPropertyID prop_id, ::Bse::PropertyCandidatesHandle &pch, GParamSpec *pspec) 00284 { 00285 } 00286 void property_updated (AmplifierPropertyID prop_id, guint64 tick_stamp, double prop_value, GParamSpec *pspec) 00287 { 00288 bool seen_change = false; 00289 switch (prop_id) { 00290 default: ; 00291 }; 00292 if (seen_change && 00293 property_changed (AmplifierPropertyID (prop_id))) 00294 update_modules(); 00295 } 00296 private: 00297 static struct StaticData { 00298 int dummy; 00299 } static_data; 00300 protected: 00301 virtual bool property_changed (AmplifierPropertyID) { return false; } 00302 virtual ~AmplifierBase () 00303 { 00304 } 00305 public: 00306 }; 00307 00308 00309 /* choice implementations */ 00310 00311 00312 /* record implementations */ 00313 00314 00315 /* sequence implementations */ 00316 00317 00318 /* class implementations */ 00319 void 00320 AmplifierBase::class_init (::Bse::CxxBaseClass *klass) 00321 { 00322 klass->set_accessors (::Bse::cxx_get_property_trampoline<AmplifierBase, AmplifierPropertyID>, 00323 ::Bse::cxx_set_property_trampoline<AmplifierBase, AmplifierPropertyID>, 00324 ::Bse::cxx_editable_property_trampoline<AmplifierBase, AmplifierPropertyID>, 00325 ::Bse::cxx_get_candidates_trampoline<AmplifierBase, AmplifierPropertyID>, 00326 NULL); 00327 klass->add_param (PROP_ALEVEL1, sfidl_pspec_Perc (_("Audio Input"),"/opt/src/beast/plugins/bseamplifier.idl",767,"alevel1",_ ( "Input 1 [%]" ) , _ ( "Attenuate the level of audio input 1" ) , 100LL , ":r:w:S:G:")); 00328 klass->add_param (PROP_ALEVEL2, sfidl_pspec_Perc (_("Audio Input"),"/opt/src/beast/plugins/bseamplifier.idl",768,"alevel2",_ ( "Input 2 [%]" ) , _ ( "Attenuate the level of audio input 2" ) , 100LL , ":r:w:S:G:")); 00329 klass->add_param (PROP_ABALANCE, sfidl_pspec_Balance (_("Audio Input"),"/opt/src/beast/plugins/bseamplifier.idl",769,"abalance",_ ( "Balance" ) , _ ( "Balance audio input levels" ) , 0LL , ":r:w:G:")); 00330 klass->add_param (PROP_CLEVEL1, sfidl_pspec_Perc (_("Control Input"),"/opt/src/beast/plugins/bseamplifier.idl",772,"clevel1",_ ( "Input 1 [%]" ) , _ ( "Attenuate the level of control input 1" ) , 100LL , ":r:w:S:G:")); 00331 klass->add_param (PROP_CLEVEL2, sfidl_pspec_Perc (_("Control Input"),"/opt/src/beast/plugins/bseamplifier.idl",773,"clevel2",_ ( "Input 2 [%]" ) , _ ( "Attenuate the level of control input 2" ) , 100LL , ":r:w:S:G:")); 00332 klass->add_param (PROP_CBALANCE, sfidl_pspec_Balance (_("Control Input"),"/opt/src/beast/plugins/bseamplifier.idl",774,"cbalance",_ ( "Balance" ) , _ ( "Balance control input levels" ) , 0LL , ":r:w:G:")); 00333 klass->add_param (PROP_CTRL_MUL, sfidl_pspec_Bool (_("Control Input"),"/opt/src/beast/plugins/bseamplifier.idl",775,"ctrl_mul",_ ( "Multiply Controls" ) , _ ( "Switch the two control inputs to work like a chain of gain " "controls, rather than mixing them together, weighted by balance." ) , TRUE , ":r:w:S:G:")); 00334 klass->add_param (PROP_CTRL_EXP, sfidl_pspec_Bool (_("Control Input"),"/opt/src/beast/plugins/bseamplifier.idl",779,"ctrl_exp",_ ( "Exponential Control" ) , _ ( "Toggle exponential and linear control response" ) , FALSE , ":r:w:S:G:")); 00335 klass->add_param (PROP_OSTRENGTH, sfidl_pspec_Perc (_("Output"),"/opt/src/beast/plugins/bseamplifier.idl",782,"ostrength",_ ( "Control Strength" ) , _ ( "Adjust how much the control signals affect the output volume" ) , 100LL , ":r:w:S:G:")); 00336 klass->add_param (PROP_BASE_LEVEL, sfidl_pspec_Perc (_("Output"),"/opt/src/beast/plugins/bseamplifier.idl",783,"base_level",_ ( "Base Volume" ) , _ ( "Base amplification (the control signal adds up to this)" ) , 0LL , ":r:w:S:G:")); 00337 klass->add_param (PROP_MASTER_VOLUME, sfidl_pspec_DBVolume (_("Output"),"/opt/src/beast/plugins/bseamplifier.idl",784,"master_volume",_ ( "Master Volume" ) , _ ( "Output stage amplification in decibel" ) , 0LL , -96LL , + 24LL , ":r:w:S:G:")); 00338 klass->add_param (PROP_AUDIO_BALANCE, sfidl_pspec_Balance ("compat","/opt/src/beast/plugins/bseamplifier.idl",787,"audio_balance","" , "" , 0LL , "w")); 00339 klass->add_param (PROP_CTRL_BALANCE, sfidl_pspec_Balance ("compat","/opt/src/beast/plugins/bseamplifier.idl",788,"ctrl_balance","" , "" , 0LL , "w")); 00340 klass->add_param (PROP_CTRL_STRENGTH_F, sfidl_pspec_SfiReal ("compat","/opt/src/beast/plugins/bseamplifier.idl",789,"ctrl_strength_f","" , "" , 1LL , 0LL , 1LL , 1.00000000000000006e-01 , "w")); 00341 klass->add_param (PROP_MASTER_GAIN_F, sfidl_pspec_SfiReal ("compat","/opt/src/beast/plugins/bseamplifier.idl",790,"master_gain_f","" , "" , 1LL , 0LL , 1LL , 1.00000000000000006e-01 , "w")); 00342 klass->add_param (PROP_AUDIO_GAIN_F, sfidl_pspec_SfiReal ("compat","/opt/src/beast/plugins/bseamplifier.idl",791,"audio_gain_f","" , "" , 0LL , 0LL , 1LL , 1.00000000000000006e-01 , "w")); 00343 klass->add_param (PROP_OLEVEL, sfidl_pspec_Perc ("compat","/opt/src/beast/plugins/bseamplifier.idl",792,"olevel","" , "" , 100LL , "w")); 00344 klass->add_ichannel ("audio_in1", _("Audio In1"), _("First audio input"), ICHANNEL_AUDIO_IN1); 00345 klass->add_ichannel ("audio_in2", _("Audio In2"), _("Second audio input"), ICHANNEL_AUDIO_IN2); 00346 klass->add_ichannel ("ctrl_in1", _("Ctrl In1"), _("First control input"), ICHANNEL_CTRL_IN1); 00347 klass->add_ichannel ("ctrl_in2", _("Ctrl In2"), _("Second control input"), ICHANNEL_CTRL_IN2); 00348 klass->add_ochannel ("audio_out", _("Audio Out"), _("Amplified audio output"), OCHANNEL_AUDIO_OUT); 00349 } 00350 00351 00352 /* procedure implementations */ 00353 00354 00355 /* bseamplifier.idl type registrations */ 00356 #define BSE_CXX_REGISTER_ALL_TYPES_FROM_BSEAMPLIFIER_IDL() \ 00357 BSE_CXX_REGISTER_EFFECT (Amplifier); \ 00358 /* bseamplifier.idl type registrations done */ 00359 } // Bse 00360 template<bool> const unsigned char* 00361 ::Bse::AmplifierBase::inlined_pixstream() 00362 { 00363 /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ 00364 00365 #ifdef __SUNPRO_C 00366 #pragma align 4 (local_pixstream) 00367 #endif 00368 #ifdef __GNUC__ 00369 static const guint8 local_pixstream[] __attribute__ ((__aligned__ (4))) = 00370 #else 00371 static const guint8 local_pixstream[] = 00372 #endif 00373 { "" 00374 /* Pixbuf magic (0x47646b50) */ 00375 "GdkP" 00376 /* length: header (24) + pixel_data (4687) */ 00377 "\0\0\22g" 00378 /* pixdata_type (0x2010002) */ 00379 "\2\1\0\2" 00380 /* rowstride (256) */ 00381 "\0\0\1\0" 00382 /* width (64) */ 00383 "\0\0\0@" 00384 /* height (64) */ 00385 "\0\0\0@" 00386 /* pixel_data: */ 00387 "\377\0\0\0\0\377\0\0\0\0\262\0\0\0\0\214Z\0\0\377\264\0\0\0\0\214]\0" 00388 "\0\377\264\0\0\0\0\214`\0\0\377\264\0\0\0\0\214c\0\0\377\264\0\0\0\0" 00389 "\214f\0\0\377\264\0\0\0\0\214i\0\0\377\204\0\0\0\0\1^k\353\311\257\0" 00390 "\0\0\0\214m\0\0\377\204\0\0\0\0\2Gd\367\377bp\353\311\256\0\0\0\0\214" 00391 "p\0\0\377\204\0\0\0\0\3Gd\367\377Qn\367\377ht\353\311\222\0\0\0\0\4^" 00392 "^^~]]]\177TTT\200MMM\200\202JJJ\200\3MMM\200SSS\177TTT~\222\0\0\0\0\214" 00393 "s\0\0\377\204\0\0\0\0\4Gd\367\377Qn\367\377\\w\367\377mx\353\311\216" 00394 "\0\0\0\0\17WWW\177\251\251\250\357\250\250\250\377\233\233\233\377\226" 00395 "\226\226\377\221\221\221\377\216\216\216\377\212\212\212\377\207\207" 00396 "\207\377\204\204\204\377\202\202\202\377\201\201\201\377\211\211\211" 00397 "\377\214\213\213\357LLL\177\217\0\0\0\0\214v\0\0\377\204\0\0\0\0\5Gd" 00398 "\366\377Qn\367\377\\w\367\377g\200\370\377r}\353\311\213\0\0\0\0\16}" 00399 "||\257\247\247\247\377\240\240\240\377\231\231\231\377\223\223\223\377" 00400 "\215\215\215\377\210\210\210\377\204\204\204\377\200\200\200\377|||\377" 00401 "yyy\377vvv\377ttt\377sss\377\202rrr\377\3sss\377}}}\377ccc\257\215\0" 00402 "\0\0\0\214y\0\0\377\204\0\0\0\0\6jo\345uPm\366\377\\w\367\377g\200\370" 00403 "\377r\211\370\377w\201\353\311\210\0\0\0\0\20UUU\177\251\251\251\377" 00404 "\242\242\242\377\232\232\232\377\223\223\223\377\215\215\215\377\206" 00405 "\206\206\377\200\200\200\377{{{\377vvv\377rrr\377nnn\377kkk\377hhh\377" 00406 "fff\377eee\377\203ddd\377\4eee\377ggg\377sss\377@@@\177\213\0\0\0\0\214" 00407 "|\0\0\377\205\0\0\0\0\6nr\345uZu\366\377g\200\370\377r\211\370\377}\222" 00408 "\371\377|\205\353\311\206\0\0\0\0\21\200\200\200\277\247\247\247\377" 00409 "\236\236\236\377\226\226\226\377\216\216\216\377\207\207\207\377\200" 00410 "\200\200\377yyy\377sss\377nnn\377iii\377ddd\377```\377]]]\377ZZZ\377" 00411 "XXX\377WWW\377\203VVV\377\5WWW\377YYY\377[[[\377___\377VVV\277\212\0" 00412 "\0\0\0\214\177\0\0\377\206\0\0\0\0\6rv\345uc}\367\377r\211\370\377}\222" 00413 "\371\377\207\233\371\377\202\211\354\311\203\0\0\0\0\22***\77\253\253" 00414 "\253\376\245\245\245\377\234\234\234\377\223\223\223\377\212\212\212" 00415 "\377\202\202\202\377{{{\377sss\377mmm\377fff\377aaa\377[[[\377WWW\377" 00416 "SSS\377OOO\377LLL\377JJJ\377\204HHH\377\7III\377KKK\377NNN\377QQQ\377" 00417 "UUU\377fff\376\36\36\36\77\210\0\0\0\0\214\202\0\0\377\207\0\0\0\0\33" 00418 "vy\345um\205\367\377}\222\371\377\207\233\371\377\222\244\372\377\207" 00419 "\216\354\311\0\0\0\0***\77\254\254\254\377\244\244\244\377\232\232\232" 00420 "\377\221\221\221\377\210\210\210\377\177\177\177\377vvv\377ooo\377gg" 00421 "g\377```\377ZZZ\377TTT\377NNN\377III\377EEE\377AAA\377>>>\377<<<\377" 00422 ":::\377\202999\377\11:::\377;;;\377===\377@@@\377CCC\377GGG\377KKK\377" 00423 "[[[\377\34\34\34\77\207\0\0\0\0\214\205\0\0\377\210\0\0\0\0\32z}\345" 00424 "uw\215\370\377\207\233\371\377\222\244\372\377\235\255\372\377\214\223" 00425 "\354\311\253\253\253\376\244\244\244\377\231\231\231\377\220\220\220" 00426 "\377\206\206\206\377|||\377sss\377kkk\377ccc\377[[[\377TTT\377MMM\377" 00427 "GGG\377AAA\377<<<\377777\377333\377000\377...\377,,,\377\203+++\377\10" 00428 "---\377///\377222\377555\377999\377>>>\377DDD\377WWW\376\207\0\0\0\0" 00429 "\214\210\0\0\377\211\0\0\0\0\31~\200\345u\200\224\370\377\222\244\372" 00430 "\377\235\255\372\377\211\214\236\377\245\245\245\377\232\232\232\377" 00431 "\220\220\220\377\205\205\205\377{{{\377rrr\377hhh\377___\377WWW\377O" 00432 "OO\377GGG\377@@@\377:::\377444\377...\377***\377&&&\377\"\"\"\377\37" 00433 "\37\37\377\36\36\36\377\203\35\35\35\377\11\36\36\36\377!!!\377$$$\377" 00434 "(((\377,,,\377111\377777\377===\377===\277\206\0\0\0\0\214\213\0\0\377" 00435 "\212\0\0\0\0\30\202\204\345u\211\234\371\377z\202\250\377\247\247\247" 00436 "\377\234\234\234\377\221\221\221\377\206\206\206\377{{{\377qqq\377gg" 00437 "g\377^^^\377TTT\377KKK\377CCC\377;;;\377444\377---\377'''\377!!!\377" 00438 "\34\34\34\377\30\30\30\377\24\24\24\377\21\21\21\377\20\20\20\377\203" 00439 "\17\17\17\377\12\20\20\20\377\23\23\23\377\26\26\26\377\32\32\32\377" 00440 "\36\36\36\377$$$\377***\377000\377888\377,,,\177\205\0\0\0\0\214\216" 00441 "\0\0\377\213\0\0\0\0\27\206\206\345u\255\255\255\377\236\236\236\377" 00442 "\223\223\223\377\210\210\210\377|||\377rrr\377ggg\377]]]\377SSS\377I" 00443 "II\377@@@\377777\377///\377(((\377\40\40\40\377\32\32\32\377\24\24\24" 00444 "\377\17\17\17\377\12\12\12\377\6\6\6\377\4\4\4\377\3\3\3\377\203\2\2" 00445 "\2\377\12\3\3\3\377\5\5\5\377\10\10\10\377\14\14\14\377\21\21\21\377" 00446 "\27\27\27\377\35\35\35\377$$$\377+++\377;;;\377\205\0\0\0\0\214\221\0" 00447 "\0\377\213\0\0\0\0\24\205\205\205\257\242\242\242\377\226\226\226\377" 00448 "\212\212\212\377\177\177\177\377sss\377hhh\377^^^\377SSS\377III\377\77" 00449 "\77\77\377555\377,,,\377$$$\377\33\33\33\377\24\24\24\377\15\15\15\377" 00450 "\7\7\7\377\3\3\3\377\1\1\1\377\211\0\0\0\377\10\1\1\1\377\4\4\4\377\12" 00451 "\12\12\377\20\20\20\377\30\30\30\377\37\37\37\377(((\377888\257\204\0" 00452 "\0\0\0\214\224\0\0\377\213\0\0\0\0\21\256\256\256\377\232\232\232\377" 00453 "\216\216\216\377\202\202\202\377vvv\377kkk\377___\377TTT\377III\377\77" 00454 "\77\77\377555\377+++\377!!!\377\30\30\30\377\20\20\20\377\10\10\10\377" 00455 "\2\2\2\377\216\0\0\0\377\6\1\1\1\377\5\5\5\377\14\14\14\377\24\24\24" 00456 "\377\35\35\35\377...\377\204\0\0\0\0\214\227\0\0\377\212\0\0\0\0\21^" 00457 "^^\177\240\240\240\377\223\223\223\377\207\207\207\377{{{\377ooo\377" 00458 "ccc\377WWW\377KKK\377@@@\377555\377+++\377\40\40\40\377\27\27\27\377" 00459 "\15\15\15\377\5\5\5\377\1\1\1\377\221\0\0\0\377\5\2\2\2\377\11\11\11" 00460 "\377\22\22\22\377\33\33\33\377\34\34\34\177\203\0\0\0\0\214\232\0\0\377" 00461 "\212\0\0\0\0\17\252\252\252\357\231\231\231\377\215\215\215\377\200\200" 00462 "\200\377sss\377ggg\377[[[\377OOO\377CCC\377777\377,,,\377!!!\377\27\27" 00463 "\27\377\14\14\14\377\3\3\3\377\224\0\0\0\377\4\1\1\1\377\7\7\7\377\21" 00464 "\21\21\377322\357\203\0\0\0\0\214\236\0\0\377\212\0\0\0\0\16\245\245" 00465 "\245\377\223\223\223\377\206\206\206\377yyy\377mmm\377```\377TTT\377" 00466 "GGG\377;;;\377///\377$$$\377\30\30\30\377\15\15\15\377\3\3\3\377\226" 00467 "\0\0\0\377\3\1\1\1\377\10\10\10\377\31\31\31\377\203\0\0\0\0\214\241" 00468 "\0\0\377\211\0\0\0\0\16YYY~\233\233\233\377\215\215\215\377\200\200\200" 00469 "\377sss\377fff\377ZZZ\377MMM\377@@@\377444\377(((\377\33\33\33\377\20" 00470 "\20\20\377\5\5\5\377\205\0\0\0\377\5<\323U\3776\277M\3770\250D\377)\220" 00471 ":\377\"w0\377\216\0\0\0\377\3\1\1\1\377\12\12\12\377\34\34\34~\202\0" 00472 "\0\0\0\214\244\0\0\377\211\0\0\0\0\16XXX\177\226\226\226\377\210\210" 00473 "\210\377{{{\377nnn\377aaa\377TTT\377GGG\377:::\377---\377\40\40\40\377" 00474 "\24\24\24\377\10\10\10\377\1\1\1\377\204\0\0\0\377\7G\367c\377\77\336" 00475 "Y\3778\305O\3771\254E\377*\223;\377#z1\377\33a'\377\216\0\0\0\377\2\3" 00476 "\3\3\377\16\16\16\177\202\0\0\0\0\214\247\0\0\377\211\0\0\0\0\15QQQ\200" 00477 "\221\221\221\377\204\204\204\377vvv\377iii\377[[[\377NNN\377AAA\3774" 00478 "44\377'''\377\32\32\32\377\15\15\15\377\2\2\2\377\204\0\0\0\377\11<\323" 00479 "U\377\77\336Y\377<\323U\3776\277M\3770\250D\377)\220:\377\"w0\377\33" 00480 "_&\377\24F\34\377\216\0\0\0\377\23""8D~\377s\211\370\377z\220\371\377" 00481 "\201\226\371\377\211\234\371\377\220\242\372\377\227\250\372\377\237" 00482 "\256\372\377\246\265\373\377\256\273\373\377\265\301\373\377\274\307" 00483 "\374\377\304\315\374\377\313\323\374\377\322\332\375\377\332\340\375" 00484 "\377\341\346\375\377\350\354\376\377\360\362\376\377\205\0\0\0\0\14L" 00485 "LL\200\216\216\216\377\200\200\200\377rrr\377ddd\377WWW\377III\377<<" 00486 "<\377...\377!!!\377\24\24\24\377\7\7\7\377\205\0\0\0\377\11""6\277M\377" 00487 "8\305O\3776\277M\3772\260G\377-\235\77\377&\2076\377\40p-\377\31Y$\377" 00488 "\22A\32\377\216\0\0\0\377\23""6B|\377s\211\370\377z\220\371\377\201\226" 00489 "\371\377\211\234\371\377\220\242\372\377\227\250\372\377\237\256\372" 00490 "\377\246\265\373\377\256\273\373\377\265\301\373\377\274\307\374\377" 00491 "\304\315\374\377\313\323\374\377\322\332\375\377\332\340\375\377\341" 00492 "\346\375\377\350\354\376\377\360\362\376\377\205\0\0\0\0\14JJJ\200\212" 00493 "\212\212\377|||\377nnn\377```\377SSS\377EEE\377777\377***\377\34\34\34" 00494 "\377\17\17\17\377\3\3\3\377\204\0\0\0\377\12F\206Q\3770\250D\3771\254" 00495 "E\3770\250D\377-\235\77\377(\2159\377#z1\377\35e)\377\26O\40\377\20""8" 00496 "\27\377\216\0\0\0\377\23""5A{\377s\211\370\377z\220\371\377\201\226\371" 00497 "\377\211\234\371\377\220\242\372\377\227\250\372\377\237\256\372\377" 00498 "\246\265\373\377\256\273\373\377\265\301\373\377\274\307\374\377\304" 00499 "\315\374\377\313\323\374\377\322\332\375\377\332\340\375\377\341\346" 00500 "\375\377\350\354\376\377\360\362\376\377\205\0\0\0\0\14III\200\207\207" 00501 "\207\377yyy\377kkk\377]]]\377OOO\377AAA\377333\377&&&\377\30\30\30\377" 00502 "\12\12\12\377\1\1\1\377\202\0\0\0\377\14\23&\27\377_\271n\377\203\370" 00503 "\226\377)\220:\377*\223;\377)\220:\377&\2076\377#z1\377\36i*\377\31W" 00504 "#\377\23C\33\377\15-\22\377\216\0\0\0\377\1\1\1\1\200\202\0\0\0\0\214" 00505 "\263\0\0\377\211\0\0\0\0\13JJJ\200\204\204\204\377vvv\377hhh\377ZZZ\377" 00506 "LLL\377>>>\377000\377\"\"\"\377\24\24\24\377\6\6\6\377\202\0\0\0\377" 00507 "\15-Z4\377w\354\212\377\200\370\223\377\201\370\225\377\"w0\377#z1\377" 00508 "\"w0\377\40p-\377\35e)\377\31W#\377\24F\34\377\16""4\25\377\11\40\15" 00509 "\377\216\0\0\0\377\1\3\3\3\200\202\0\0\0\0\214\266\0\0\377\211\0\0\0" 00510 "\0\31MMM\177\202\202\202\377ttt\377fff\377XXX\377JJJ\377<<<\377...\377" 00511 "\37\37\37\377\21\21\21\377\4\4\4\377\0\0\0\377E\215P\377{\370\217\377" 00512 "}\370\221\377~\370\222\377\200\370\223\3779oB\377\33a'\377\33_&\377\31" 00513 "Y$\377\26O\40\377\23C\33\377\16""4\25\377\12#\16\377\217\0\0\0\377\1" 00514 "\4\4\4\177\202\0\0\0\0\214\271\0\0\377\211\0\0\0\0\21OOO~\201\201\201" 00515 "\377sss\377eee\377WWW\377HHH\377:::\377,,,\377\36\36\36\377\20\20\20" 00516 "\377\27""0\33\377\\\300l\377x\370\215\377z\370\216\377{\370\220\377h" 00517 "\317x\377\36<#\377\202\0\0\0\377\5\24F\34\377\22A\32\377\20""8\27\377" 00518 "\15-\22\377\11\40\15\377\220\0\0\0\377\1\15\15\15~\202\0\0\0\0\214\274" 00519 "\0\0\377\212\0\0\0\0\17\204\204\204\377rrr\377ddd\377VVV\377HHH\3779" 00520 "99\377+++\377\35\35\35\3775j>\377q\364\206\377u\370\212\377w\370\214" 00521 "\377x\370\215\377L\234Y\377\4\10\5\377\227\0\0\0\377\1\2\2\2\377\203" 00522 "\0\0\0\0\214\277\0\0\377\212\0\0\0\0\15\207\207\207\357rrr\377ddd\377" 00523 "VVV\377HHH\377999\377+,+\377M\237[\377p\370\206\377r\370\210\377s\370" 00524 "\211\377u\370\212\3772i;\377\231\0\0\0\377\1\21\21\21\357\203\0\0\0\0" 00525 "\214\302\0\0\377\212\0\0\0\0\14EEE\177sss\377ddd\377VVV\377HHH\377Db" 00526 "I\377^\320q\377m\370\204\377o\370\205\377p\370\206\377\\\307m\377\31" 00527 "5\35\377\232\0\0\0\377\1\3\3\3\177\203\0\0\0\0\214\305\0\0\377\213\0" 00528 "\0\0\0\13www\377eee\377WWW\377U\222_\377h\367\200\377j\367\201\377l\370" 00529 "\202\377m\370\204\377\\\226W\377\362\12<\377\364\11<\377\231\0\0\0\377" 00530 "\1\1\1\1\377\204\0\0\0\0\214\310\0\0\377\213\0\0\0\0\10^^^\257flg\377" 00531 "_\274n\377e\367}\377g\367~\377i\367\200\377i\365\177\377XkE\377\203\364" 00532 "\11<\377\231\0\0\0\377\1\15\15\15\257\204\0\0\0\0\214\313\0\0\377\213" 00533 "\0\0\0\0\7`\367y>b\340w\377b\367z\377d\367|\377f\367}\377[\313n\377[" 00534 "E:\377\203\364\11<\377\1=\2\17\377\230\0\0\0\377\1\1\1\1\377\205\0\0" 00535 "\0\0\214\317\0\0\377\212\0\0\0\0\7]\367vs]\367v\377_\367x\377a\367y\377" 00536 "c\367{\377U\252c\377e+7\377\203\364\11<\377\1>\3\20\377\231\0\0\0\377" 00537 "\1\5\5\5\177\205\0\0\0\0\214\322\0\0\377\210\0\0\0\0\10Z\367s\21Y\367" 00538 "r\250Z\367t\377\\\367u\377^\367w\377^\361v\374Y\220b\377s8E\377\203\364" 00539 "\11<\377\2\203\16'\377\4\4\4\377\230\0\0\0\377\1\1\1\1\277\206\0\0\0" 00540 "\0\214\325\0\0\377\207\0\0\0\0\10V\367pFV\367p\336W\367q\377Y\367s\377" 00541 "[\367t\377\\\367v\277`\367x(\201P[\376\203\364\11<\377\4W\35)\377\27" 00542 "\27\27\377\12\12\12\377\1\1\1\377\226\0\0\0\377\1\7\7\7\376\207\0\0\0" 00543 "\0\214\330\0\0\377\206\0\0\0\0\6R\367m{S\367m\377T\367o\377V\367p\377" 00544 "X\367r\377Z\367s\212\202\0\0\0\0\10!\27\31\77\316\37E\377\364\11<\377" 00545 "\224\36""8\377***\377\35\35\35\377\20\20\20\377\5\5\5\377\225\0\0\0\377" 00546 "\2\4\4\4\377\4\4\4\77\207\0\0\0\0\214\333\0\0\377\204\0\0\0\0\7O\367" 00547 "j\30N\367i\260P\367k\377Q\367l\377S\367n\377U\367o\355X\367rU\204\0\0" 00548 "\0\0\10\37\25\27\77uCN\376===\377000\377$$$\377\30\30\30\377\14\14\14" 00549 "\377\2\2\2\377\223\0\0\0\377\2\7\7\7\376\4\4\4\77\210\0\0\0\0\214\336" 00550 "\0\0\377\204\0\0\0\0\6K\367g\345M\367h\377N\367j\377P\367k\377R\367l" 00551 "\270V\367p\40\207\0\0\0\0\7""333\277777\377+++\377\37\37\37\377\24\24" 00552 "\24\377\11\11\11\377\1\1\1\377\221\0\0\0\377\1\1\1\1\277\212\0\0\0\0" 00553 "\214\341\0\0\377\204\0\0\0\0\4J\367f\377K\367g\377M\367h\377P\367k\203" 00554 "\212\0\0\0\0\7$$$\177444\377(((\377\35\35\35\377\22\22\22\377\7\7\7\377" 00555 "\1\1\1\377\216\0\0\0\377\2\1\1\1\377\5\5\5\177\213\0\0\0\0\214\344\0" 00556 "\0\377\204\0\0\0\0\3J\367f\377J\367f\345N\367iN\215\0\0\0\0\6""111\257" 00557 "&&&\377\33\33\33\377\21\21\21\377\10\10\10\377\1\1\1\377\214\0\0\0\377" 00558 "\1\14\14\14\257\215\0\0\0\0\214\347\0\0\377\204\0\0\0\0\2K\367gkM\367" 00559 "h\30\220\0\0\0\0\5\22\22\22\177+++\357\22\22\22\377\12\12\12\377\3\3" 00560 "\3\377\210\0\0\0\377\2\16\16\16\357\2\2\2\177\217\0\0\0\0\214\352\0\0" 00561 "\377\231\0\0\0\0\3\26\26\26~\6\6\6\177\2\2\2\200\204\0\0\0\200\2\0\0" 00562 "\0\177\12\12\12~\222\0\0\0\0\214\355\0\0\377\264\0\0\0\0\214\360\0\0" 00563 "\377\264\0\0\0\0\214\363\0\0\377\264\0\0\0\0\214\366\0\0\377\264\0\0" 00564 "\0\0\214\371\0\0\377\264\0\0\0\0\214\374\0\0\377\377\0\0\0\0\377\0\0" 00565 "\0\0\377\0\0\0\0\207\0\0\0\0"}; 00566 00567 00568 00569 return local_pixstream; 00570 } 00571 00572 /*-------- end ../sfi/sfidl generated code --------*/ 00573 00574