BEAST/BSE - Better Audio System and Sound Engine  0.8.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
artscompressor.genidl.hh
Go to the documentation of this file.
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 namespace Arts {
00024 class CompressorBase;
00025 class Compressor;
00026 #define BSE_ARTS_TYPE_COMPRESSOR                BSE_CXX_DECLARED_CLASS_TYPE (Bse::Arts, Compressor)
00027 #define BSE_ARTS_IS_COMPRESSOR(o) (::Bse::CxxBase::instance_is_a (o, BSE_ARTS_TYPE_COMPRESSOR))
00028 
00029 
00030 /* enum definitions */
00031 
00032 
00033 /* sequence definitions */
00034 
00035 
00036 /* record definitions */
00037 
00038 
00039 /* enum declarations */
00040 
00041 
00042 /* sequence type declarations */
00043 
00044 
00045 /* record type declarations */
00046 
00047 
00048 /* procedure prototypes */
00049 
00050 
00051 /* class definitions */
00052 BSE_CXX_DECLARE_CLASS (Compressor);
00053 class CompressorBase : public ::Bse::Effect {
00054   template<bool> static inline const unsigned char* inlined_pixstream();
00055 public:
00056   static inline const unsigned char* pixstream () { return inlined_pixstream<true>(); }
00057   static void               class_init (::Bse::CxxBaseClass *klass);
00058   static inline const char* options   () { return ""; }
00059   static inline const char* category  () { static const char *c = NULL;
00060     return c ? c : c = sfi_category_concat ("/Modules",  ("/Enhance/ArtsCompressor")); }
00061   static inline const char* i18n_category  () { static const char *c = NULL;
00062     return c ? c : c = sfi_category_concat ("/Modules", _("/Enhance/ArtsCompressor")); }
00063   static inline const char* blurb     () { return _("ArtsCompressor compresses the sound.\n\nCompression is a dynamic operation that consists of two parts:\n(1) the current input volume of the signal is detected\n(2) if it exceeds a given theshold, the volume of the output signal will be reduced\n\nThe input volume detection has an attack and a release half-life time which can be specified - in milliseconds - with the corresponding properties. This envelope causes the compressor to adapt slowly to the actual input signal level.\n\nThe ratio specifies how the volume of a signal should be reduced, if it exceeds the threshold. A compression ratio of 2:1 means for instance that if the input volume is 2 dB over the threshold, the output volume will be 1 dB over the threshold. Example (threshold = -10, ratio 2:1):\ninput = -20 dB => output = -20 dB\ninput = -10 dB => output = -10 dB\ninput = 0 dB => output = -5 dB\ninput = 10 dB => output = 0 dB\ninput = 20 dB => output = 5 dB\n\nCompression is often thought off as an operation to make music \"sound louder\". To achieve this, the first step is to reduce the dynamic range like in the example above. As the loud parts of the music have been reduced in volume, we can now amplify everything, without risking distortion or clipping. This has the overall effect of the music sounding louder. In our example, an output amplification of 5 dB would be okay, if the input signal never exceeded 0 dB."); }
00064   static inline const char* authors   () { return "Matthias Kretz, Stefan Westerfeld"; }
00065   static inline const char* license   () { return _("GNU Lesser General Public License"); }
00066   static inline const char* type_name () { return "BseArtsCompressor"; }
00067 public:
00068   enum {
00069     ICHANNEL_AUDIO_IN1,
00070     ICHANNEL_AUDIO_IN2,
00071     N_ICHANNELS
00072   };
00073 public:
00074   enum {
00075     OCHANNEL_AUDIO_OUT1,
00076     OCHANNEL_AUDIO_OUT2,
00077     N_OCHANNELS
00078   };
00079 protected:
00080   enum CompressorPropertyID {
00081     PROP_ATTACK = 1,
00082     PROP_RELEASE,
00083     PROP_THRESHOLD_DB,
00084     PROP_RATIO_TO_ONE,
00085     PROP_OUTPUT_DB,
00086     PROP_AUTO_OUTPUT,
00087     PROP_THRESHOLD,
00088     PROP_RATIO,
00089     PROP_OUTPUT,
00090   };
00091 public:
00092   /* "transport" structure to configure synthesis modules from properties */
00093   struct CompressorProperties {
00094     typedef CompressorPropertyID IDType;
00095     Sfi::Real attack;
00096     Sfi::Real release;
00097     Sfi::Real threshold_db;
00098     Sfi::Real ratio_to_one;
00099     Sfi::Real output_db;
00100     bool auto_output;
00101     Sfi::Real threshold;
00102     Sfi::Real ratio;
00103     Sfi::Real output;
00104     explicit CompressorProperties (CompressorBase *p) :
00105       attack (p->attack),
00106       release (p->release),
00107       threshold_db (p->threshold_db),
00108       ratio_to_one (p->ratio_to_one),
00109       output_db (p->output_db),
00110       auto_output (p->auto_output),
00111       threshold (p->threshold),
00112       ratio (p->ratio),
00113       output (p->output)
00114     {
00115     }
00116   };
00117 protected:
00118   typedef void AutoUpdateCategory;
00119 protected:
00120   Sfi::Real attack;
00121   Sfi::Real release;
00122   Sfi::Real threshold_db;
00123   Sfi::Real ratio_to_one;
00124   Sfi::Real output_db;
00125   bool auto_output;
00126   Sfi::Real threshold;
00127   Sfi::Real ratio;
00128   Sfi::Real output;
00129 public:
00130   void get_property (CompressorPropertyID prop_id, ::Bse::Value &value, GParamSpec *pspec)
00131   {
00132     switch (prop_id) {
00133     case PROP_ATTACK:
00134       sfi_value_set_real (&value, attack);
00135     break;
00136     case PROP_RELEASE:
00137       sfi_value_set_real (&value, release);
00138     break;
00139     case PROP_THRESHOLD_DB:
00140       sfi_value_set_real (&value, threshold_db);
00141     break;
00142     case PROP_RATIO_TO_ONE:
00143       sfi_value_set_real (&value, ratio_to_one);
00144     break;
00145     case PROP_OUTPUT_DB:
00146       sfi_value_set_real (&value, output_db);
00147     break;
00148     case PROP_AUTO_OUTPUT:
00149       sfi_value_set_bool (&value, auto_output);
00150     break;
00151     case PROP_THRESHOLD:
00152       sfi_value_set_real (&value, threshold);
00153     break;
00154     case PROP_RATIO:
00155       sfi_value_set_real (&value, ratio);
00156     break;
00157     case PROP_OUTPUT:
00158       sfi_value_set_real (&value, output);
00159     break;
00160     };
00161   }
00162   void set_property (CompressorPropertyID prop_id, const ::Bse::Value &value, GParamSpec *pspec)
00163   {
00164     switch (prop_id) {
00165     case PROP_ATTACK:
00166       attack = sfi_value_get_real (&value);
00167     break;
00168     case PROP_RELEASE:
00169       release = sfi_value_get_real (&value);
00170     break;
00171     case PROP_THRESHOLD_DB:
00172       threshold_db = sfi_value_get_real (&value);
00173     break;
00174     case PROP_RATIO_TO_ONE:
00175       ratio_to_one = sfi_value_get_real (&value);
00176     break;
00177     case PROP_OUTPUT_DB:
00178       output_db = sfi_value_get_real (&value);
00179     break;
00180     case PROP_AUTO_OUTPUT:
00181       auto_output = sfi_value_get_bool (&value);
00182     break;
00183     case PROP_THRESHOLD:
00184       threshold = sfi_value_get_real (&value);
00185     break;
00186     case PROP_RATIO:
00187       ratio = sfi_value_get_real (&value);
00188     break;
00189     case PROP_OUTPUT:
00190       output = sfi_value_get_real (&value);
00191     break;
00192     };
00193     property_changed (CompressorPropertyID (prop_id));
00194     update_modules();
00195     switch (prop_id) {
00196     default: ;
00197     };
00198   }
00199   virtual bool editable_property (CompressorPropertyID prop_id, GParamSpec *pspec)
00200   {
00201     return true;
00202   }
00203   virtual void get_candidates (CompressorPropertyID prop_id, ::Bse::PropertyCandidatesHandle &pch, GParamSpec *pspec)
00204   {
00205   }
00206   void property_updated (CompressorPropertyID prop_id, guint64 tick_stamp, double prop_value, GParamSpec *pspec)
00207   {
00208     bool seen_change = false;
00209     switch (prop_id) {
00210     default: ;
00211     };
00212     if (seen_change &&
00213         property_changed (CompressorPropertyID (prop_id)))
00214       update_modules();
00215   }
00216 private:
00217   static struct StaticData {
00218     int dummy;
00219   } static_data;
00220 protected:
00221   virtual bool property_changed (CompressorPropertyID) { return false; }
00222   virtual ~CompressorBase ()
00223   {
00224   }
00225 public:
00226 };
00227 
00228 
00229 /* choice implementations */
00230 
00231 
00232 /* record implementations */
00233 
00234 
00235 /* sequence implementations */
00236 
00237 
00238 /* class implementations */
00239 void
00240 CompressorBase::class_init (::Bse::CxxBaseClass *klass)
00241 {
00242   klass->set_accessors (::Bse::cxx_get_property_trampoline<CompressorBase, CompressorPropertyID>,
00243                         ::Bse::cxx_set_property_trampoline<CompressorBase, CompressorPropertyID>,
00244                         ::Bse::cxx_editable_property_trampoline<CompressorBase, CompressorPropertyID>,
00245                         ::Bse::cxx_get_candidates_trampoline<CompressorBase, CompressorPropertyID>,
00246                         NULL);
00247   klass->add_param (PROP_ATTACK, sfidl_pspec_SfiReal (_("Parameters"),"/opt/src/beast/plugins/artscompressor.idl",768,"attack",_ ( "Attack [ms]" ) , _ ( "Set the attack time in milliseconds" ) , 1.00000000000000000e+01 , 1.00000000000000006e-01 , 2.50000000000000000e+02 , 1.00000000000000000e+01 , ":r:w:S:G:" ":scale"));
00248   klass->add_param (PROP_RELEASE, sfidl_pspec_SfiReal (_("Parameters"),"/opt/src/beast/plugins/artscompressor.idl",769,"release",_ ( "Release [ms]" ) , _ ( "Set the release time in milliseconds" ) , 1.00000000000000000e+01 , 1.00000000000000006e-01 , 2.50000000000000000e+02 , 1.00000000000000000e+01 , ":r:w:S:G:" ":scale"));
00249   klass->add_param (PROP_THRESHOLD_DB, sfidl_pspec_Gain (_("Parameters"),"/opt/src/beast/plugins/artscompressor.idl",770,"threshold_db",_ ( "Threshold [dB]" ) , _ ( "Only parts louder than threshold are compressed" ) , 0LL , - 100LL , 0LL , 1LL , ":r:w:S:G:" ":scale"));
00250   klass->add_param (PROP_RATIO_TO_ONE, sfidl_pspec_SfiReal (_("Parameters"),"/opt/src/beast/plugins/artscompressor.idl",771,"ratio_to_one",_ ( "Ratio [x:1]" ) , _ ( "Set the compression ratio to x:1" ) , 2LL , 1.00000000000000000e+00 , 2.00000000000000000e+01 , 1LL , ":r:w:S:G:" ":scale"));
00251   klass->add_param (PROP_OUTPUT_DB, sfidl_pspec_Gain (_("Parameters"),"/opt/src/beast/plugins/artscompressor.idl",772,"output_db",_ ( "Output [dB]" ) , _ ( "Set the output amplification" ) , 0LL , - 20LL , 20LL , 1LL , ":r:w:S:G:" ":scale"));
00252   klass->add_param (PROP_AUTO_OUTPUT, sfidl_pspec_Bool (_("Parameters"),"/opt/src/beast/plugins/artscompressor.idl",773,"auto_output",_ ( "Auto Output" ) , _ ( "Adjust the output amplification automatically according to threshold and ratio" ) , FALSE , ":r:w:G:"));
00253   klass->add_param (PROP_THRESHOLD, sfidl_pspec_SfiReal ("compat","/opt/src/beast/plugins/artscompressor.idl",776,"threshold","" , "" , 1LL , 1.00000000000000008e-05 , 1LL , 1.00000000000000002e-02 , "w"));
00254   klass->add_param (PROP_RATIO, sfidl_pspec_SfiReal ("compat","/opt/src/beast/plugins/artscompressor.idl",777,"ratio","" , "" , 8.00000000000000044e-01 , 0.00000000000000000e+00 , 1.00000000000000000e+00 , 1.00000000000000006e-01 , "w"));
00255   klass->add_param (PROP_OUTPUT, sfidl_pspec_SfiReal ("compat","/opt/src/beast/plugins/artscompressor.idl",778,"output","" , "" , 1LL , 1.00000000000000006e-01 , 1.00000000000000000e+01 , 1LL , "w"));
00256   klass->add_ichannel ("audio_in1", _("Audio In1"), _("Audio input 1"), ICHANNEL_AUDIO_IN1);
00257   klass->add_ichannel ("audio_in2", _("Audio In2"), _("Audio input 2"), ICHANNEL_AUDIO_IN2);
00258   klass->add_ochannel ("audio_out1", _("Audio Out1"), _("Compressed audio output 1"), OCHANNEL_AUDIO_OUT1);
00259   klass->add_ochannel ("audio_out2", _("Audio Out2"), _("Compressed audio output 2"), OCHANNEL_AUDIO_OUT2);
00260 }
00261 
00262 
00263 /* procedure implementations */
00264 
00265 
00266 /* artscompressor.idl type registrations */
00267 #define BSE_CXX_REGISTER_ALL_TYPES_FROM_ARTSCOMPRESSOR_IDL() \
00268   BSE_CXX_REGISTER_EFFECT (Compressor); \
00269   /* artscompressor.idl type registrations done */
00270 } // Arts
00271 } // Bse
00272 template<bool> const unsigned char*
00273 ::Bse::Arts::CompressorBase::inlined_pixstream()
00274 {
00275   /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
00276 
00277 #ifdef __SUNPRO_C
00278 #pragma align 4 (local_pixstream)
00279 #endif
00280 #ifdef __GNUC__
00281 static const guint8 local_pixstream[] __attribute__ ((__aligned__ (4))) = 
00282 #else
00283 static const guint8 local_pixstream[] = 
00284 #endif
00285 { ""
00286   /* Pixbuf magic (0x47646b50) */
00287   "GdkP"
00288   /* length: header (24) + pixel_data (5128) */
00289   "\0\0\24\40"
00290   /* pixdata_type (0x2010002) */
00291   "\2\1\0\2"
00292   /* rowstride (256) */
00293   "\0\0\1\0"
00294   /* width (64) */
00295   "\0\0\0@"
00296   /* height (64) */
00297   "\0\0\0@"
00298   /* pixel_data: */
00299   "\206\0\0\0\0\230\0\0\0\1\243\0\0\0\0\3\0\0\0\1\0\0\0\4\0\0\0\10\202\0"
00300   "\0\0\13\230\0\0\0\14\5\0\0\0\13\0\0\0\12\0\0\0\10\0\0\0\3\0\0\0\1\236"
00301   "\0\0\0\0\5\0\0\0\4\0\0\0\17\0\0\0\36\0\0\0(\0\0\0*\230\0\0\0,\5\0\0\0"
00302   "*\0\0\0&\0\0\0\32\0\0\0\12\0\0\0\2\235\0\0\0\0\7\0\0\0\1\0\0\0\10\0\0"
00303   "\0\37\0\0\0;\0\0\0I\0\0\0J\0\0\0K\226\0\0\0L\6\0\0\0K\0\0\0I\0\0\0D\0"
00304   "\0\0.\0\0\0\20\0\0\0\2\235\0\0\0\0\6\0\0\0\1\0\0\0\13\0\0\0(\0\0\0I\0"
00305   "\0\0\270\0\0\0\343\230\0\0\0\377\5\12\27\12\377\33\77\33\377\0\0\0""8"
00306   "\0\0\0\23\0\0\0\2\235\0\0\0\0\7\0\0\0\1\0\0\0\14\0\0\0+\0\0\0J\0\0\0"
00307   "\343nnn\262\276\276\276\222\221\377\377\377\177\202&w&\377\11S\241R\377"
00308   "P\241P\377N\241M\377@\210\77\377+`,\377\12\27\12\377\0\0\0;\0\0\0\25"
00309   "\0\0\0\2\235\0\0\0\0\6\0\0\0\1\0\0\0\14\0\0\0,\0\0\0K\0\0\0\377\276\276"
00310   "\276\222\221\377\377\377\177\202&w&\377\12V\242U\377T\242R\377Q\241P"
00311   "\377N\241M\377K\240K\377>\211=\377\0\0\0\377\0\0\0<\0\0\0\26\0\0\0\2"
00312   "\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\221\377\377\377"
00313   "\177\202&w&\377\13X\242W\377V\242U\377T\242R\377Q\241P\377N\241M\377"
00314   "L\241K\377I\240I\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5"
00315   "\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\220\377\377\377\177\202&w&"
00316   "\377\14[\242Z\377Y\242X\377V\241U\377T\241S\377P\241P\377N\241N\377K"
00317   "\241K\377I\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5\0"
00318   "\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\217\377\377\377\177\202&w&\377"
00319   "\15^\242\\\377[\242Z\377X\241W\377V\241U\377T\241S\377Q\241P\377N\240"
00320   "N\377K\240K\377I\241H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0"
00321   "\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\216\377\377\377\177\202"
00322   "&w&\377\16`\243^\377^\242\\\377[\242Z\377Y\242W\377V\241U\377S\241R\377"
00323   "Q\241P\377N\241M\377L\241K\377H\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0"
00324   "\0\0\2\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\215\377"
00325   "\377\377\177\202&w&\377\17c\243a\377a\242_\377^\243]\377[\242Z\377Y\242"
00326   "W\377V\241T\377S\241R\377Q\241O\377N\241M\377L\240K\377H\240I\377\0\0"
00327   "\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,"
00328   "\0\0\0L\0\0\0\377\214\377\377\377\177\202&w&\377\20e\243d\377c\242a\377"
00329   "a\243_\377^\243]\377\\\242Z\377Y\241X\377U\241U\377T\241S\377P\241P\377"
00330   "N\241N\377K\240K\377H\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235"
00331   "\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\213\377\377\377\177"
00332   "\202&w&\377\21h\243g\377f\243d\377d\243b\377`\243_\377^\242\\\377[\242"
00333   "Z\377Y\242X\377V\242U\377S\241R\377P\241P\377N\241M\377K\241K\377I\240"
00334   "H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\4\0\0\0\1\0\0\0\14"
00335   "\0\0\0,\0\0\0L\234\0\0\0\377\3\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5"
00336   "\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\211\377\377\377\177\202&w&"
00337   "\377\23n\244k\377k\243h\377h\243f\377f\243d\377c\243a\377a\243_\377^"
00338   "\243\\\377\\\242Z\377Y\242X\377V\242U\377S\241S\377Q\241P\377N\241M\377"
00339   "K\240K\377H\240I\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5"
00340   "\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\210\377\377\377\177\202&w&"
00341   "\377\24p\245n\377m\244k\377k\244h\377h\244f\377f\243c\377c\243a\377a"
00342   "\243_\377^\243]\377[\242Z\377X\241W\377V\242U\377S\241S\377P\241P\377"
00343   "N\241M\377L\241K\377I\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235"
00344   "\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\207\377\377\377\177"
00345   "\202&w&\377\25s\245p\377q\244m\377n\244k\377k\243h\377i\243f\377f\243"
00346   "d\377d\243b\377a\242_\377]\243\\\377[\242Z\377Y\242W\377V\242U\377S\241"
00347   "S\377Q\241P\377N\241N\377L\240K\377H\240H\377\0\0\0\377\0\0\0=\0\0\0"
00348   "\26\0\0\0\2\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\206"
00349   "\377\377\377\177\202&w&\377\26v\245s\377s\244p\377q\244n\377n\244k\377"
00350   "l\244h\377i\243f\377e\243c\377c\243a\377`\242_\377^\242\\\377[\242Z\377"
00351   "Y\241W\377V\242U\377S\241S\377Q\241P\377N\240N\377K\241K\377I\240H\377"
00352   "\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0"
00353   "\0,\0\0\0L\0\0\0\377\205\377\377\377\177\202&w&\377\27x\245u\377v\245"
00354   "s\377t\245p\377p\244n\377n\244k\377k\244i\377i\244f\377f\243d\377c\243"
00355   "a\377a\242_\377]\243]\377[\242Y\377X\242W\377V\242U\377S\241R\377P\241"
00356   "P\377N\241N\377K\241K\377I\240I\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2"
00357   "\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\204\377\377\377"
00358   "\177\202&w&\377\30{\246x\377x\245u\377v\245s\377s\244p\377p\244n\377"
00359   "n\243k\377k\243i\377i\243f\377f\243c\377c\243b\377`\242_\377^\243]\377"
00360   "[\242Z\377Y\242X\377V\242U\377S\242S\377P\241P\377N\241N\377K\240K\377"
00361   "I\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\6\0\0\0\1\0"
00362   "\0\0\14\0\0\0,\0\0\0K\0\0\0\377\276\276\276\222\202\377\377\377\177\202"
00363   "&w&\377\31~\246z\377{\245w\377y\245u\377v\244r\377s\245p\377q\245m\377"
00364   "n\244k\377k\244i\377i\243f\377f\244d\377d\243b\377`\243_\377]\242\\\377"
00365   "[\242Z\377X\242X\377U\241T\377S\242S\377Q\241O\377N\241M\377K\241K\377"
00366   ">\210>\377\0\0\0\377\0\0\0<\0\0\0\26\0\0\0\2\235\0\0\0\0\7\0\0\0\1\0"
00367   "\0\0\13\0\0\0+\0\0\0J\0\0\0\343nnn\262\276\276\276\222\202&w&\377\32"
00368   "\201\246|\377~\246z\377{\245w\377x\244u\377v\245r\377t\245p\377p\244"
00369   "n\377n\244k\377k\243i\377h\244f\377e\243c\377c\243a\377a\243_\377^\242"
00370   "]\377[\242Z\377X\242W\377V\242U\377S\241R\377Q\241O\377N\241N\377@\210"
00371   "@\377,`+\377\12\27\12\377\0\0\0:\0\0\0\24\0\0\0\2\235\0\0\0\0\6\0\0\0"
00372   "\1\0\0\0\12\0\0\0&\0\0\0E\0\0\0\266\0\0\0\342\230\0\0\0\377\5\12\27\12"
00373   "\377\33\77\33\377\0\0\0""7\0\0\0\21\0\0\0\2\235\0\0\0\0\7\0\0\0\1\0\0"
00374   "\0\10\0\0\0\33\0\0\0.\0\0\0""8\0\0\0;\0\0\0<\223\0\0\0=\11\0\0\0>\0\0"
00375   "\0@\0\0\0D\0\0\0F\0\0\0G\0\0\0B\0\0\0+\0\0\0\14\0\0\0\1\236\0\0\0\0\5"
00376   "\0\0\0\3\0\0\0\12\0\0\0\20\0\0\0\23\0\0\0\24\223\0\0\0\26\12\0\0\0\27"
00377   "\0\0\0\31\0\0\0\34\0\0\0!\0\0\0&\0\0\0'\0\0\0$\0\0\0\26\0\0\0\7\0\0\0"
00378   "\1\236\0\0\0\0\1\0\0\0\1\227\0\0\0\2\11\0\0\0\3\0\0\0\4\0\0\0\6\0\0\0"
00379   "\10\0\0\0\12\3173\27\367\307+\23\364\0\0\0\27\0\0\0\5\272\0\0\0\0\12"
00380   "\0\0\0\1\3173\27\367\332=\34\377\331<\33\377\271'\21\343\0\0\0\34\0\0"
00381   "\0\3\302&\21\377\0\0\0\16\0\0\0\3\266\0\0\0\0\12\3173\27\344\332=\34"
00382   "\377\331<\33\377\330:\33\377\3248\31\376\263\40\16\350\302(\22\353\314"
00383   "0\26\377\0\0\0I\0\0\0\21\265\0\0\0\0\13\3204\27\360\332=\34\377\330<"
00384   "\33\377\327;\32\377\3269\32\377\3248\32\377\3237\31\377\3226\30\377\313"
00385   "0\25\377\0\0\0e\0\0\0\25\264\0\0\0\0\14\3204\30\352\332=\34\377\331<"
00386   "\33\377\327;\33\377\3269\32\377\3258\32\377\3236\31\377\3226\30\377\321"
00387   "5\30\377\312/\25\377\0\0\0j\0\0\0\25\264\0\0\0\0\14\307,\23\377\331<"
00388   "\33\377\330;\33\377\3269\32\377\3258\32\377\3237\31\377\3226\31\377\321"
00389   "4\30\377\3173\27\377\311.\25\377\0\0\0j\0\0\0\25\264\0\0\0\0\14\0\0\0"
00390   "\21\273(\21\352\3248\31\377\3248\32\377\3237\31\377\3226\31\377\3204"
00391   "\30\377\3173\27\377\3162\27\377\310-\24\377\0\0\0j\0\0\0\25\264\0\0\0"
00392   "\0\14\0\0\0\3\0\0\0\35\264\40\16\352\3236\31\377\3226\30\377\3215\30"
00393   "\377\3173\30\377\3162\27\377\3151\26\377\307,\23\377\0\0\0j\0\0\0\25"
00394   "\265\0\0\0\0\13\0\0\0\3\302(\22\353\3226\31\377\3214\30\377\3173\27\377"
00395   "\3161\27\377\3151\26\377\3140\25\377\306+\23\377\0\0\0j\0\0\0\25\265"
00396   "\0\0\0\0\13\303'\22\367\3141\26\377\313/\26\377\312.\25\377\311.\25\377"
00397   "\310-\24\377\307,\23\377\306+\23\377\302&\21\377\0\0\0j\0\0\0\25\265"
00398   "\0\0\0\0\3\0\0\0\15\0\0\0G\0\0\0d\202\0\0\0i\204\0\0\0j\2\0\0\0Y\0\0"
00399   "\0\22\265\0\0\0\0\6\0\0\0\3\0\0\0\20\0\0\0\25\0\0\0\30\0\0\0\36\0\0\0"
00400   "!\202\0\0\0#\6\0\0\0\"\0\0\0\34\0\0\0\14\0\0\0\6\0\0\0\4\0\0\0\3\225"
00401   "\0\0\0\2\1\0\0\0\1\236\0\0\0\0\14\0\0\0\3\0\0\0\20\0\0\0'\0\0\0""7\0"
00402   "\0\0:\0\0\0;\0\0\0""9\0\0\0""3\0\0\0*\0\0\0!\0\0\0\32\0\0\0\27\221\0"
00403   "\0\0\26\5\0\0\0\24\0\0\0\22\0\0\0\20\0\0\0\12\0\0\0\3\236\0\0\0\0\14"
00404   "\0\0\0\5\0\0\0\32\0\0\0C\0\0\0\\\0\0\0_\0\0\0^\0\0\0]\0\0\0W\0\0\0N\0"
00405   "\0\0F\0\0\0@\0\0\0>\220\0\0\0=\7\0\0\0<\0\0\0;\0\0\0""8\0\0\0.\0\0\0"
00406   "\32\0\0\0\10\0\0\0\1\235\0\0\0\0\5\0\0\0\4\0\0\0\31\0\0\0D\0\0\0\272"
00407   "\0\0\0\344\230\0\0\0\377\6\0\0\0\342\0\0\0\266\0\0\0D\0\0\0&\0\0\0\12"
00408   "\0\0\0\1\235\0\0\0\0\6\0\0\0\3\0\0\0\27\0\0\0>\0\0\0\343nnn\262\276\276"
00409   "\276\222\226\377\377\377\177\7\276\276\276\222nnn\262\0\0\0\342\0\0\0"
00410   "I\0\0\0+\0\0\0\13\0\0\0\1\235\0\0\0\0\5\0\0\0\2\0\0\0\26\0\0\0<\0\0\0"
00411   "\377\276\276\276\222\230\377\377\377\177\6\276\276\276\222\0\0\0\377"
00412   "\0\0\0K\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0"
00413   "=\0\0\0\377\232\377\377\377\177\5\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0"
00414   "\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\227\377\377\377"
00415   "\177\10c\235c\306*y*\372&w&\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0"
00416   "\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\224\377\377\377"
00417   "\177\2c\235c\306*y*\372\202&w&\377\7G\226F\377O\237O\377\0\0\0\377\0"
00418   "\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0"
00419   "\0\0\377\221\377\377\377\177\2\310\334\310\2226\2016\354\202&w&\377\12"
00420   "G\226F\377O\237O\377N\241M\377K\240J\377H\240I\377\0\0\0\377\0\0\0L\0"
00421   "\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377"
00422   "\217\377\377\377\177\1>\206>\344\202&w&\377\15:\2079\377T\235S\377V\241"
00423   "U\377T\241R\377Q\241P\377N\241M\377L\241K\377I\240I\377\0\0\0\377\0\0"
00424   "\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0"
00425   "\0\377\214\377\377\377\177\2\246\307\246\240-{-\366\202&w&\377\17X\235"
00426   "V\377^\242\\\377[\242Z\377Y\241W\377V\241U\377S\241R\377Q\241P\377N\240"
00427   "M\377L\240K\377H\240H\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235"
00428   "\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\213\377\377\377\177\202"
00429   "&w&\377\22F\214F\377b\240a\377c\242a\377`\242_\377^\242\\\377[\242Z\377"
00430   "Y\241X\377V\241U\377S\241R\377P\241P\377N\241M\377K\240K\377I\240H\377"
00431   "\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\3\0\0\0\2\0\0\0"
00432   "\26\0\0\0=\234\0\0\0\377\4\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0"
00433   "\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\211\377\377\377\177\202&w&\377\24"
00434   "n\244k\377k\243h\377h\243f\377f\243d\377c\243a\377a\243_\377^\243\\\377"
00435   "\\\242Z\377Y\242X\377V\242U\377S\241S\377Q\241P\377N\241M\377K\240K\377"
00436   "H\240I\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0"
00437   "\0\2\0\0\0\26\0\0\0=\0\0\0\377\210\377\377\377\177\202&w&\377\25p\245"
00438   "n\377m\244k\377k\244h\377h\244f\377f\243c\377c\243a\377a\243_\377^\243"
00439   "]\377[\242Z\377X\241W\377V\242U\377S\241S\377P\241P\377N\241M\377L\241"
00440   "K\377I\240H\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0"
00441   "\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\207\377\377\377\177\202&w&\377\26"
00442   "s\245p\377q\244m\377n\244k\377k\243h\377i\243f\377f\243d\377d\243b\377"
00443   "a\242_\377]\243\\\377[\242Z\377Y\242W\377V\242U\377S\241S\377Q\241P\377"
00444   "N\241N\377L\240K\377H\240H\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0"
00445   "\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\206\377\377\377\177"
00446   "\202&w&\377\27v\245s\377s\244p\377q\244n\377n\244k\377l\244h\377i\243"
00447   "f\377e\243c\377c\243a\377`\242_\377^\242\\\377[\242Z\377Y\241W\377V\242"
00448   "U\377S\241S\377Q\241P\377N\240N\377K\241K\377I\240H\377\0\0\0\377\0\0"
00449   "\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0"
00450   "\0\377\205\377\377\377\177\202&w&\377\30x\245u\377v\245s\377t\245p\377"
00451   "p\244n\377n\244k\377k\244i\377i\244f\377f\243d\377c\243a\377a\242_\377"
00452   "]\243]\377[\242Y\377X\242W\377V\242U\377S\241R\377P\241P\377N\241N\377"
00453   "K\241K\377I\240I\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0"
00454   "\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\204\377\377\377\177\202&w&\377"
00455   "\31{\246x\377x\245u\377v\245s\377s\244p\377p\244n\377n\243k\377k\243"
00456   "i\377i\243f\377f\243c\377c\243b\377`\242_\377^\243]\377[\242Z\377Y\242"
00457   "X\377V\242U\377S\242S\377P\241P\377N\241N\377K\240K\377I\240H\377\0\0"
00458   "\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\5\0\0\0\2\0\0\0\26"
00459   "\0\0\0<\0\0\0\377\276\276\276\222\202\377\377\377\177\202&w&\377\32~"
00460   "\246z\377{\245w\377y\245u\377v\244r\377s\245p\377q\245m\377n\244k\377"
00461   "k\244i\377i\243f\377f\244d\377d\243b\377`\243_\377]\242\\\377[\242Z\377"
00462   "X\242X\377U\241T\377S\242S\377Q\241O\377N\241M\377K\241K\377>\210>\377"
00463   "\0\0\0\377\0\0\0K\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\6\0\0\0\2\0\0\0"
00464   "\24\0\0\0:\0\0\0\342nnn\262\276\276\276\222\202&w&\377\33\201\246|\377"
00465   "~\246z\377{\245w\377x\244u\377v\245r\377t\245p\377p\244n\377n\244k\377"
00466   "k\243i\377h\244f\377e\243c\377c\243a\377a\243_\377^\242]\377[\242Z\377"
00467   "X\242W\377V\242U\377S\241R\377Q\241O\377N\241N\377@\210@\377,`+\377\12"
00468   "\27\12\377\0\0\0J\0\0\0+\0\0\0\14\0\0\0\1\235\0\0\0\0\5\0\0\0\2\0\0\0"
00469   "\22\0\0\0""8\0\0\0\266\0\0\0\342\230\0\0\0\377\6\12\27\12\377\33\77\33"
00470   "\377\0\0\0H\0\0\0(\0\0\0\13\0\0\0\1\235\0\0\0\0\6\0\0\0\2\0\0\0\20\0"
00471   "\0\0.\0\0\0D\0\0\0I\0\0\0K\226\0\0\0L\7\0\0\0K\0\0\0J\0\0\0I\0\0\0;\0"
00472   "\0\0\37\0\0\0\10\0\0\0\1\235\0\0\0\0\5\0\0\0\2\0\0\0\12\0\0\0\32\0\0"
00473   "\0&\0\0\0*\230\0\0\0,\5\0\0\0*\0\0\0(\0\0\0\36\0\0\0\17\0\0\0\4\236\0"
00474   "\0\0\0\5\0\0\0\1\0\0\0\3\0\0\0\10\0\0\0\12\0\0\0\13\230\0\0\0\14\202"
00475   "\0\0\0\13\3\0\0\0\10\0\0\0\4\0\0\0\1\243\0\0\0\0\230\0\0\0\1\206\0\0"
00476   "\0\0"};
00477 
00478 
00479 
00480   return local_pixstream;
00481 }
00482 
00483 /*-------- end ../sfi/sfidl generated code --------*/
00484 
00485 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines