Recherche avancée

Médias (3)

Mot : - Tags -/image

Autres articles (67)

  • Personnaliser les catégories

    21 juin 2013, par

    Formulaire de création d’une catégorie
    Pour ceux qui connaissent bien SPIP, une catégorie peut être assimilée à une rubrique.
    Dans le cas d’un document de type catégorie, les champs proposés par défaut sont : Texte
    On peut modifier ce formulaire dans la partie :
    Administration > Configuration des masques de formulaire.
    Dans le cas d’un document de type média, les champs non affichés par défaut sont : Descriptif rapide
    Par ailleurs, c’est dans cette partie configuration qu’on peut indiquer le (...)

  • Contribute to documentation

    13 avril 2011

    Documentation is vital to the development of improved technical capabilities.
    MediaSPIP welcomes documentation by users as well as developers - including : critique of existing features and functions articles contributed by developers, administrators, content producers and editors screenshots to illustrate the above translations of existing documentation into other languages
    To contribute, register to the project users’ mailing (...)

  • Récupération d’informations sur le site maître à l’installation d’une instance

    26 novembre 2010, par

    Utilité
    Sur le site principal, une instance de mutualisation est définie par plusieurs choses : Les données dans la table spip_mutus ; Son logo ; Son auteur principal (id_admin dans la table spip_mutus correspondant à un id_auteur de la table spip_auteurs)qui sera le seul à pouvoir créer définitivement l’instance de mutualisation ;
    Il peut donc être tout à fait judicieux de vouloir récupérer certaines de ces informations afin de compléter l’installation d’une instance pour, par exemple : récupérer le (...)

Sur d’autres sites (7260)

  • Official RealVideo Specifications

    29 juillet 2010, par Multimedia Mike — General

    A little birdie tipped me off to a publicly-accessible URL on the Helix community site (does anyone actually use Helix ?) that contains a bunch of specifications for RealVideo 8 and 9. I have been sifting through the documents to see exactly what they contain as the different files seem to be higher revisions of the same documents. Here is the title, date, and version of each PDF document :

    • RNDecoderPerformanceARM.pdf : Decoder Performance on StrongARM and XScale ; May 12, 2003 ; Version 1.1
    • rv89_decoder_summary.pdf : RealVideo 8/9 Combo Decoder Summary ; October 23, 2002 ; Version 1.0
    • rv9_dec_external_spec_v14.pdf : RealVideo 9 External Specification ; November 7, 2003 ; Version 1.4
    • rv8_dec_external_spec_v20.pdf : RealVideo 8 External Specification ; September 19, 2002 ; Version 2.0
    • RV8DecoderExternalSpecificationv201.pdf : RealVideo 8 External Specification ; October 20, 2006 ; Version 2.01
    • RV8DecoderExternalSpecificationv202.pdf : RealVideo 8 External Specification ; April 23, 2007 ; Version 2.02
    • RV8DecoderExternalSpecificationv203.pdf : RealVideo 8 External Specification ; July 20, 2007 ; Version 2.03
    • RV8DecoderExternalSpecificationv21.pdf : RealVideo 8 External Specification ; September 11, 2007 ; Version 2.1
    • RV9DecoderExternalSpecificationv15.pdf ; RealVideo 9 External Specification ; January 26, 2002 ; Version 1.5
    • RV9DecoderExternalSpecificationv16.pdf ; RealVideo 9 External Specification ; August 17, 2005 ; Version 1.6
    • RV9DecoderExternalSpecificationv18.pdf ; RealVideo 9 External Specification ; September 11, 2007 ; Version 1.8

    Additionally, there is an Excel spreadsheet entitled realvideo-faq.xls that appears to contain some general tech support advice for using Real’s official code. There are also 3 ZIP archives which contain profiling information about the official source code (post processing and entropy decoding top the charts which is no big surprise).

    I guess the latest version of each document (the ones dated September 11, 2007) are worth mirroring. Unfortunately, those latest document versions use a terrible font.

  • ffmpeg codec error on audio file

    31 juillet 2013, par foosion

    I have some m4a files that will not play properly using the google music player app on my Android phone, although they play fine on most everything else. I thought the problem was the container and thought "ffmpeg -i bad.m4a -codec copy good.m4a" might help. However, when I run on the problem files, I get error messages. Running this command on non-problem files has not generated error messages.

    Please suggest ways to fix (other than re-encoding).

       [D:\temp\dl]ffmpeg -i "01 - The Day Begins.m4a" -codec copy day.m4a
    ffmpeg version N-55066-gc96b3ae Copyright (c) 2000-2013 the FFmpeg developers
     built on Jul 29 2013 18:05:45 with gcc 4.7.3 (GCC)
     configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
    isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
    le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp
    e --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --ena
    ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-l
    ibopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libsp
    eex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-
    amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --
    enable-libxvid --enable-zlib
     libavutil      52. 40.100 / 52. 40.100
     libavcodec     55. 19.100 / 55. 19.100
     libavformat    55. 12.102 / 55. 12.102
     libavdevice    55.  3.100 / 55.  3.100
     libavfilter     3. 82.100 /  3. 82.100
     libswscale      2.  4.100 /  2.  4.100
     libswresample   0. 17.103 /  0. 17.103
     libpostproc    52.  3.100 / 52.  3.100
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00000000002da300] stream 0, timescale not set
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '01 - The Day Begins.m4a':
     Metadata:
       major_brand     : m4a
       minor_version   : 0
       compatible_brands: M4A mp4isom
       creation_time   : 2003-07-06 20:27:46
       track           : 1
       genre           : Rock
       title           : The Day Begins
       artist          : Moody Blues
       album           : Days of Future Passed
       date            : 1967
     Duration: 00:05:50.83, start: 0.000000, bitrate: 166 kb/s
       Stream #0:0(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 15
    9 kb/s
       Metadata:
         creation_time   : 2003-07-06 20:27:46
         handler_name    : Apple Sound Media Handler
       Stream #0:1(eng): Data: none (mp4s / 0x7334706D)
       Metadata:
         creation_time   : 2003-07-06 20:27:46
         handler_name    : Apple MPEG-4 Scene Media Handler
       Stream #0:2(eng): Data: none (mp4s / 0x7334706D)
       Metadata:
         creation_time   : 2003-07-06 20:27:46
         handler_name    : Apple MPEG-4 ODSM Media Handler
       Stream #0:3: Video: png, rgb24, 240x240 [SAR 2834:2834 DAR 1:1], 90k tbr, 90
    k tbn, 90k tbc
    [ipod @ 000000000031dd40] track 0: could not find tag, codec not currently suppo
    rted in container
    Output #0, ipod, to 'day.m4a':
     Metadata:
       major_brand     : m4a
       minor_version   : 0
       compatible_brands: M4A mp4isom
       date            : 1967
       track           : 1
       genre           : Rock
       title           : The Day Begins
       artist          : Moody Blues
       album           : Days of Future Passed
       encoder         : Lavf55.12.102
       Stream #0:0: Video: png, rgb24, 240x240 [SAR 2834:2834 DAR 1:1], q=2-31, 90k
    tbn, 90k tbc
       Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, 159 kb/s

       Metadata:
         creation_time   : 2003-07-06 20:27:46
         handler_name    : Apple Sound Media Handler
    Stream mapping:
     Stream #0:3 -> #0:0 (copy)
     Stream #0:0 -> #0:1 (copy)
    Could not write header for output file #0 (incorrect codec parameters ?): Error
    number -1 occurred
  • The Big VP8 Debug

    20 novembre 2010, par Multimedia Mike — VP8

    I hope my previous walkthrough of the VP8 4x4 intra coding process was educational. Today, I’ll be walking through an example of what happens when my toy VP8 encoder encodes an intra 16x16 block. This may prove educational to those who have never been exposed to the deep details of this or related algorithms. Also, I wanted to illustrate where I think my VP8 encoder process is going bad and generating such grotesque results.

    Before I start, let me give a shout-out to Google Docs’ Drawing tool which I used to generate these diagrams. It works quite well.

    Results

    (Always cut to the chase in a blog post ; results first.) I’m glad I composed this post. In the course of doing so, I found the problem, fixed it, and am now able to present this image that was decoded from the bitstream encoded by my toy working VP8 encoder :



    Yeah, I know that image doesn’t look like anything you haven’t seen before. The difference is that it has made a successful trip through my VP8 encoder.

    Follow along through the encoding process and learn of the mistake...

    Original Block and Subblocks

    Here is the 16x16 block to be encoded :



    The block is broken down into 16 4x4 subblocks for further encoding :



    Prediction

    The first step is to pick a prediction mode, generate a prediction block, and subtract the predictors from the macroblock. In this case, we will use DC prediction which means the predictor will be the same for each element.

    In 4x4 VP8 DC intra prediction, samples outside of the frame are assumed to be 128. It’s a little different in 16x16 DC intra prediction— samples above the top row are assumed to be 127 while samples left of the leftmost column are assumed to be 129. For the top left macroblock, this still works out to 128.

    Subtract 128 from each of the samples :



    Forward Transform

    Run each of the 16 prediction-removed subblocks through the forward transform. This example uses the forward transform from libvpx 0.9.5 :



    I have highlighted the DC coefficients in each subblock. That’s because those receive special consideration in 16x16 intra coding.

    Quantization

    The Y plane AC quantizer is 4 in this example, the minimum allowed. (The Y plane DC quantizer is also 4 but doesn’t come into play for intra 16x16 coding since the DC coefficients follow a different process.) Thus, quantize (integer divide) each AC element in each subblock (we’ll ignore the DC coefficient for this part) :



    The Y2 Round Trip

    Those highlighted DC coefficients from each of the 16 subblocks comprise the Y2 block. This block is transformed with a slightly different algorithm called the Walsh-Hadamard Transform (WHT). The results of this transform are then quantized (using 8 for both Y2 DC and AC in this example, as those are the smallest Y2 quantizers that VP8 allows), then zigzagged and entropy-coded along with the rest of the macroblock coefficients.

    On the decoder side, the Y2 coefficients are decoded, de-zigzagged, dequantized and run through the inverse WHT.

    And this is where I suspect that most of the error is creeping into my VP8 encoder. Observe the round-trip through the Y2 process :



    As intimated, this part causes me consternation due to the wide discrepancy between the original and the reconstructed Y2 blocks. Observe the absolute difference between the 2 vectors :



    That’s really significant and leads me to believe that this is where the big problem is.

    What’s Wrong ?

    My first suspicion is that the quantization is throwing off the process. I was disabused of this idea when I removed quantization from the equation and immediately reversed the transform :



    So perhaps there is a problem with the forward WHT. Just like with the usual subblock transform, the VP8 spec doesn’t define how to perform the forward WHT, only the inverse WHT. Do I need to audition different forward WHTs from various versions of libvpx, similar to what I did with the other transform ? That doesn’t make a lot of sense— libvpx doesn’t seem to have so much trouble with basic encoding.

    The Punchline

    I reviewed the forward WHT code, the stuff that I plagiarized from libvpx 0.9.0. The function takes, among other parameters, a pitch value. There are 2 loops in the code. The first iterates through the rows of the input matrix— which I assumed was a 4x4 matrix. I was puzzled that during each iteration of the row loop, the input pointer was only being advanced by (pitch/2). I removed the division by 2 and the problem went away. I.e., the encoded image looks correct.

    What’s up with the (pitch/2), anyway ? It seems that the encoder likes to pack 2 4x4 subblocks into an 8x4 block data structure. In fact, the forward DCTs in the libvpx encoder have the same artifact. Remember how I surveyed several variations of forward DCT from different versions of libvpx ? The one that proved most accurate in that test was the one I had already modified to advance the input pointer properly. Fixing the other 2 candidates yields similar results :

    input :   92 91 89 86 91 90 88 86 89 89 89 88 89 87 88 93
    short 0.9.0 : -311 6 2 0 0 11 -6 1 2 -3 3 0 0 0 -2 1
    inverse : 92 91 89 86 91 90 88 87 90 89 89 88 89 87 88 93
    fast  0.9.0 : -313 5 1 0 1 11 -6 1 3 -3 4 0 0 0 -2 1
    inverse : 91 91 89 86 90 90 88 86 89 89 89 88 89 87 88 93
    short 0.9.5 : -312 7 1 0 1 12 -5 2 2 -3 3 -1 1 0 -2 1
    inverse : 92 91 89 86 91 90 88 86 89 89 89 88 89 87 88 93
    

    Code cribber beware !

    Corrected Y2 Round Trip

    Let’s look at that Y2 round trip one more time :



    And another look at the error between the original and the reconstruction :



    Better.

    Dequantization, Prediction, Inverse Transforms, and Reconstruction

    To be honest, now that I solved the major problem, I’m getting a little tired of making these pictures. Long story short, all elements of the original 16 subblocks are dequantized and their DC coefficients are filled in with the appropriate item from the reconstructed Y2 block. A base predictor block is generated (all 128 values in this case). And each Y block is run through the inverse transform and added to the predictor block. The following is the reconstruction :



    And if you compare that against the original luma macroblock (I don’t feel like doing it right now), you’ll find that it’s pretty close.

    I can’t believe how close I was all this time, and how long that pitch bug held me up.