Hi On Sun, Jan 07, 2007 at 08:08:01PM -0600, Ryan Martell wrote: [...] > >> > >>typedef struct { > >> unsigned int magic_cookie; ///< prevent someone from calling > >>random without the state setup (sets it up automatically) > >> unsigned long mt[AV_RANDOM_PERIOD]; ///< the array for the state > >>vector > >> int mti; > >>} AVRandomState; > >> > >>void av_init_random(unsigned long seed, AVRandomState *state); > >> > >>unsigned long av_random(AVRandomState *state); // 32 bit random > >>double av_random_real1(AVRandomState *state); // [0-1] as double > >> > > > >>Or would you rather have: > >> > >>AVRandomState *av_init_random(unsigned long seed); > >>void av_free_random(AVRandomState *state); > >> > >>unsigned long av_random(AVRandomState *state); > > > >this is closer to what i had in mind ... > > Well, this doesn't make as much sense with the random being inlined, > since the AVRandomState would have to be visible for the inlining to > work. In my mind, it would make sense for it to use a malloc/free if > the structure was opaque (in the c file), but not if it's in the h file. ok [...] > #define AV_RANDOM_N 624 > #define AV_RANDOM_MAGIC_COOKIE 0xdeadbeef > > typedef struct { > unsigned int magic_cookie; ///< prevent someone from calling random without the state setup i dont like these magic_cookies, if someone calls the code without init then thats pretty much his problem IMHO > unsigned long mt[AV_RANDOM_N]; ///< the array for the state vector unsigned int or uint_fast32_t if you want to be pedantic but long is 64-bit on some architectures and that is not really wanted here i think > int mti; ///< current untempered value we use as the base. > } AVRandomState; > > > void av_init_random(unsigned long seed, AVRandomState *state); ///< to be inlined, the struct must be visible, so it doesn't make sense to try and keep it opaque with malloc/free like calls > void av_random_generate_untempered_numbers(AVRandomState *state); ///< Regenerate the untempered numbers (must be done every 624 iterations, or it will loop) > > /* generates a random number on [0,0xffffffff]-interval */ > static inline unsigned int av_random(AVRandomState *state) that should be /** ... */ for doxygen compatibility > { > unsigned int y= 0; y is not read before its written so the =0 is redundant [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Everything should be made as simple as possible, but not simpler. -- Albert Einstein -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: not available URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20070108/97c47e4c/attachment.pgp>
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4