Recherche avancée

Médias (1)

Mot : - Tags -/livre électronique

Autres articles (82)

  • Des sites réalisés avec MediaSPIP

    2 mai 2011, par

    Cette 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.

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

  • Emballe médias : à quoi cela sert ?

    4 février 2011, par

    Ce plugin vise à gérer des sites de mise en ligne de documents de tous types.
    Il crée des "médias", à savoir : un "média" est un article au sens SPIP créé automatiquement lors du téléversement d’un document qu’il soit audio, vidéo, image ou textuel ; un seul document ne peut être lié à un article dit "média" ;

Sur d’autres sites (6636)

  • Pointer peril

    18 octobre 2011, par Mans — Bugs, Optimisation

    Use of pointers in the C programming language is subject to a number of constraints, violation of which results in the dreaded undefined behaviour. If a situation with undefined behaviour occurs, anything is permitted to happen. The program may produce unexpected results, crash, or demons may fly out of the user’s nose.

    Some of these rules concern pointer arithmetic, addition and subtraction in which one or both operands are pointers. The C99 specification spells it out in section 6.5.6 :

    When an expression that has integer type is added to or subtracted from a pointer, the result has the type of the pointer operand. […] If both the pointer operand and the result point to elements of the same array object, or one past the last element of the array object, the evaluation shall not produce an overflow ; otherwise, the behavior is undefined. […]

    When two pointers are subtracted, both shall point to elements of the same array object, or one past the last element of the array object ; the result is the difference of the subscripts of the two array elements.

    In simpler, if less accurate, terms, operands and results of pointer arithmetic must be within the same array object. If not, anything can happen.

    To see some of this undefined behaviour in action, consider the following example.

    #include <stdio.h>
    

    int foo(void)

    int a, b ;
    int d = &b - &a ; /* undefined */
    int *p = &a ;
    b = 0 ;
    p[d] = 1 ; /* undefined */
    return b ;

    int main(void)

    printf("%d\n", foo()) ;
    return 0 ;

    This program breaks the above rules twice. Firstly, the &a - &b calculation is undefined because the pointers being subtracted do not point to elements of the same array. Most compilers will nonetheless evaluate this to the distance between the two variables on the stack. Secondly, accessing p[d] is undefined because p and p + d do not point to elements of the same array (unless the result of the first undefined expression happened to be zero).

    It might be tempting to assume that on a modern system with a single, flat address space, these operations would result in the intuitively obvious outcomes, ultimately setting b to the value 1 and returning this same value. However, undefined is undefined, and the compiler is free to do whatever it wants :

    $ gcc -O undef.c
    $ ./a.out
    0

    Even on a perfectly normal system, compiled with optimisation enabled the program behaves as though the write to p[d] were ignored. In fact, this is exactly what happened, as this test shows :

    $ gcc -O -fno-tree-pta undef.c
    $ ./a.out
    1

    Disabling the tree-pta optimisation in gcc gives us back the intuitive behaviour. PTA stands for points-to analysis, which means the compiler analyses which objects any pointers can validly access. In the example, the pointer p, having been set to &a cannot be used in a valid access to the variable b, a and b not being part of the same array. Between the assignment b = 0 and the return statement, no valid access to b takes place, whence the return value is derived to be zero. The entire function is, in fact, reduced to the assembly equivalent of a simple return 0 statement, all because we decided to violate a couple of language rules.

    While this example is obviously contrived for clarity, bugs rooted in these rules occur in real programs from time to time. My most recent encounter with one was in PARI/GP, where a somewhat more complicated incarnation of the example above can be found. Unfortunately, the maintainers of this program are not responsive to reports of such bad practices in their code :

    Undefined according to what rule ? The code is only requiring the adress space to be flat which is true on all supported platforms.

    The rule in question is, of course, the one quoted above. Since the standard makes no exception for flat address spaces, no such exception exists. Although the behaviour could be logically defined in this case, it is not, and all programs must still follow the rules. Filing bug reports against the compiler will not make them go away. As of this writing, the issue remains unresolved.

  • ffmpeg link errors when building on iPhone 4.3 SDK

    12 septembre 2011, par YuzaKen

    After a rather trying few days, I finally got ffmpeg to compile under Xcode 4 with SDK 4.3. The issue no is a series (39) link errors. They fall into at least two cases : assembly language routines and static arrays defined in header files. My believe is that it is generating C method names for the assembly routines while the .c files containing the reference to the routine is generating a different method name (munging).

    Undefined symbols for architecture armv7 :

     "_ff_vector_fmul_vfp", referenced from:
         _ff_dsputil_init_vfp in libavcodec.a(dsputil_init_vfp.o)
     "_main", referenced from:
         start in crt1.3.1.o
     "_av_solve_lls", referenced from:
         _ff_lpc_calc_coefs in libavcodec.a(lpc.o)
     "_ff_inv_aanscales", referenced from:
         _dct_quantize_trellis_c in libavcodec.a(mpegvideo_enc.o)
         _decode_frame in libavcodec.a(eamad.o)
         _tgq_decode_frame in libavcodec.a(eatgq.o)
         _tqi_decode_frame in libavcodec.a(eatqi.o)
     "_ff_add_pixels_clamped_armv6", referenced from:
         _ff_dsputil_init_armv6 in libavcodec.a(dsputil_init_armv6.o)
     "_ff_cga_palette", referenced from:
         _tmv_decode_frame in libavcodec.a(tmv.o)
     "_ff_svq1_inter_multistage_vlc", referenced from:
         _encode_block in libavcodec.a(svq1enc.o)
         _svq1_decode_init in libavcodec.a(svq1dec.o)
     "_ff_simple_idct_armv6", referenced from:
         _ff_dsputil_init_armv6 in libavcodec.a(dsputil_init_armv6.o)
     "_BZ2_bzDecompressInit", referenced from:
         _matroska_decode_buffer in libavformat.a(matroskadec.o)
     "_ff_put_pixels8_y2_arm", referenced from:
         _ff_put_pixels16_y2_arm in libavcodec.a(dsputil_init_arm.o)
         _dsputil_init_arm in libavcodec.a(dsputil_init_arm.o)
     "_ff_simple_idct_add_armv6", referenced from:

    ...and so on.

    Anyone with experience with ffmpeg on iPhone ? Successfully ?

  • Programming Language Levels

    20 mai 2011, par Multimedia Mike — Programming

    I’ve been doing this programming thing for some 20 years now. Things sure do change. One change I ponder from time to time is the matter of programming language levels. Allow me to explain.

    The 1990s
    When I first took computer classes in the early 1990s, my texts would classify computer languages into 3 categories, or levels. The lower the level, the closer to the hardware ; the higher the level, the more abstract (and presumably, easier to use). I recall that the levels went something like this :

    • High level : Pascal, BASIC, Logo, Fortran
    • Medium level : C, Forth
    • Low level : Assembly language

    Keep in mind that these were the same texts which took the time to explain the history of computers from mainframes -> minicomputers -> a relatively recent phenomenon called microcomputers or "PCs".

    Somewhere in the mid-late 1990s, when I was at university, I was introduced to a new tier :

    • Very high level : Perl, shell scripting

    I think there was some debate among my peers about whether C++ and Java were properly classified as high or very high level. The distinction between high and very high, in my observation, seemed to be that very high level languages had more complex data structures (at the very least, a hash / dictionary / associative array / key-value map) built into the language, as well as implicit memory management.

    Modern Day
    These days, the old hierarchy is apparently forgotten (much like minicomputers). I observe that there is generally a much simpler 2-tier classification :

    • Low level : C, assembly language
    • High level : absolutely every other programming language in wide use today

    I find myself wondering where C++ and Objective-C fit in this classification scheme. Then I remember that it doesn’t matter and this is all academic.

    Relevancy
    I think about this because I have pretty much stuck to low-level programming all of my life, mostly due to my interest in game and multimedia-type programming. But the trends in computing have favored many higher level languages and programming paradigms. I woke up one day and realized that the kind of work I often do — lower level stuff — is not very common.

    I’m not here to argue that low or high level is superior. You know I’m all about using the appropriate tool for the job. But I sometimes find myself caught between worlds, having the defend and explain one to the other.

    • On one hand, it’s not unusual for the multitudes of programmers working at the high level to gasp and wonder why I or anyone else would ever use C or assembly language for anything when there are so many beautiful high level languages. I patiently explain that those languages have to be written in some other language (at first) and that they need to run on some operating system and that most assuredly won’t be written in a high level language. For further reading, I refer them to Joel Spolsky’s great essay called Back to Basics which describes why it can be useful to know at least a little bit about how the computer does what it does at the lowest levels.
    • On the other hand, believe it or not, I sometimes have to defend the merits of high level languages to my low level brethren. I’ll often hear variations of, "Any program can be written in C. Using a high level language to achieve the same will create a slow and bloated solution." I try to explain that the trade-off in time to complete the programming task weighed against the often-negligible performance hit of what is often an I/O-bound operation in the first place makes it worthwhile to use the high level language for a wide variety of tasks.

      Or I just ignore them. That’s actually the best strategy.