
Recherche avancée
Autres articles (87)
-
Contribute to translation
13 avril 2011You can help us to improve the language used in the software interface to make MediaSPIP more accessible and user-friendly. You can also translate the interface into any language that allows it to spread to new linguistic communities.
To do this, we use the translation interface of SPIP where the all the language modules of MediaSPIP are available. Just subscribe to the mailing list and request further informantion on translation.
MediaSPIP is currently available in French and English (...) -
Des sites réalisés avec MediaSPIP
2 mai 2011, parCette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page. -
Gestion générale des documents
13 mai 2011, parMédiaSPIP ne modifie jamais le document original mis en ligne.
Pour chaque document mis en ligne il effectue deux opérations successives : la création d’une version supplémentaire qui peut être facilement consultée en ligne tout en laissant l’original téléchargeable dans le cas où le document original ne peut être lu dans un navigateur Internet ; la récupération des métadonnées du document original pour illustrer textuellement le fichier ;
Les tableaux ci-dessous expliquent ce que peut faire MédiaSPIP (...)
Sur d’autres sites (7236)
-
How do I play back video on Android with custom playback speed ?
13 novembre 2015, par guidowI want to play back a video in Android, rendering it to a SurfaceTexture or something else that is usable as an OpenGL ES texture, but I need very precise control over the playback speed of the video to synchronize it to a stream of external events. These events will happen at a roughly predictable speed, but the exact speed will depend on many small mechanical details, influenced by many small factors, including the weather (and possibly even the phase of the moon...).
The
android.media.MediaPlayer
class provided by android allows rendering to a SurfaceTexture (and the 360Videos app from the Oculus Mobile SDK successfully uses that feature), but unfortunately does not seem to allow altering the playback speed, at least not as far as I could tell from the documentation here.I have tried pausing and resuming the playback using pause() and start() respectively, to influence the playback speed, but that leads to extremely choppy and slow playback. My idea here was to make the video have a higher framerate than would ever be needed, and to then manually retard every frame until it actually needs to be shown. From the messages in the log, it looks to me like the MediaPlayer class will release various needed resources on pause and rerequest them on resume, which obviously kills performance if you do that once per frame.
Another option I am looking at is ffmpeg. This one seems like it will do what i want, it doesn’t do any timings itself, it just decodes frames whenever I tell it to to a buffer, leaving me to use it however I want, whenever I want. The obvious drawback is that ffmpeg, at least on android, doesn’t do hardware decoding and probably won’t be able to decode 4K media in realtime.
Yet another thing I was looking at was OpenMAX AL. Unfortunately, OpenMax AL is pretty hard to get into. I haven’t found any good beginner’s documentation yet, only some old, maybe outdated, READMEs as well as the interface specification from Khronos. The latter is a very long and cumbersome read, though, and I couldn’t yet even figure out if OpenMAX AL will even allow me to do my own timings...
-
swresample/resample : speed up upsampling by precomputing sines
9 novembre 2015, par Ganesh Ajjanagaddeswresample/resample : speed up upsampling by precomputing sines
When upsampling, factor is set to 1 and sines need to be evaluated only
once for each phase, and the complexity should not depend on the number
of filter taps. This does the desired precomputation, yielding
significant speedups. Hard guarantees on the gain are not possible, but gains
themselves are obvious and are illustrated below.Sample benchmark (x86-64, Haswell, GNU/Linux)
test : fate-swr-resample-dblp-2626-44100
old :
29161085 decicycles in build_filter (loop 1000), 256 runs, 0 skips
28821467 decicycles in build_filter (loop 1000), 512 runs, 0 skips
28668201 decicycles in build_filter (loop 1000), 1000 runs, 24 skipsnew :
14351936 decicycles in build_filter (loop 1000), 256 runs, 0 skips
14306652 decicycles in build_filter (loop 1000), 512 runs, 0 skips
14299923 decicycles in build_filter (loop 1000), 1000 runs, 24 skipsNote that this does not statically allocate the sin lookup table. This
may be done for the default 1024 phases, yielding a 512*8 = 4kB array
which should be small enough.
This should yield a small improvement. Nevertheless, this is separate from
this patch, is more ambiguous due to the binary increase, and requires a
lut to be generated offline.Reviewed-by : Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by : Ganesh Ajjanagadde <gajjanagadde@gmail.com> -
swresample/resample : speed up Blackman Nuttall filter
9 novembre 2015, par Ganesh Ajjanagaddeswresample/resample : speed up Blackman Nuttall filter
This may be a slightly surprising optimization, but is actually based on
an understanding of how math libraries compute trigonometric functions.
Explanation is given here so that future development uses libm more effectively
across the codebase.All libm’s essentially compute transcendental functions via some kind of
polynomial approximation, be it Taylor-Maclaurin or Chebyshev.
Correction terms are added via polynomial correction factors when needed
to squeeze out the last bits of accuracy. Lookup tables are also
inserted strategically.In the case of trigonometric functions, periodicity is exploited via
first doing a range reduction to an interval around zero, and then using
some polynomial approximation.This range reduction is the most natural way of doing things - else one
would need polynomials for ranges in different periods which makes no
sense whatsoever.To avoid the need for the range reduction, it is helpful to feed in
arguments as close to the origin as possible for the trigonometric
functions. In fact, this also makes sense from an accuracy point of view :
IEEE floating point has far more resolution for small numbers than big ones.This patch does this for the Blackman-Nuttall filter, and yields a
non-negligible speedup.Sample benchmark (x86-64, Haswell, GNU/Linux)
test : fate-swr-resample-dblp-2626-44100
old :
18893514 decicycles in build_filter (loop 1000), 256 runs, 0 skips
18599863 decicycles in build_filter (loop 1000), 512 runs, 0 skips
18445574 decicycles in build_filter (loop 1000), 1000 runs, 24 skipsnew :
16290697 decicycles in build_filter (loop 1000), 256 runs, 0 skips
16267172 decicycles in build_filter (loop 1000), 512 runs, 0 skips
16251105 decicycles in build_filter (loop 1000), 1000 runs, 24 skipsReviewed-by : Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by : Ganesh Ajjanagadde <gajjanagadde@gmail.com>