Recherche avancée

Médias (1)

Mot : - Tags -/censure

Autres articles (47)

  • Mise à jour de la version 0.1 vers 0.2

    24 juin 2013, par

    Explications des différents changements notables lors du passage de la version 0.1 de MediaSPIP à la version 0.3. Quelles sont les nouveautés
    Au niveau des dépendances logicielles Utilisation des dernières versions de FFMpeg (>= v1.2.1) ; Installation des dépendances pour Smush ; Installation de MediaInfo et FFprobe pour la récupération des métadonnées ; On n’utilise plus ffmpeg2theora ; On n’installe plus flvtool2 au profit de flvtool++ ; On n’installe plus ffmpeg-php qui n’est plus maintenu au (...)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;

  • 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

Sur d’autres sites (3518)

  • H.264 muxed to MP4 using libavformat not playing back

    14 mai 2015, par Brad Mitchell

    I am trying to mux H.264 data into a MP4 file. There appear to be no errors in saving this H.264 Annex B data out to an MP4 file, but the file fails to playback.

    I’ve done a binary comparison on the files and the issue seems to be somewhere in what is being written to the footer (trailer) of the MP4 file.

    I suspect it has to be something with the way the stream is being created or something.

    Init :

    AVOutputFormat* fmt = av_guess_format( 0, "out.mp4", 0 );
    oc = avformat_alloc_context();
    oc->oformat = fmt;
    strcpy(oc->filename, filename);

    Part of this prototype app I have is creating a png file for each IFrame. So when the first IFrame is encountered, I create the video stream and write the av header etc :

    void addVideoStream(AVCodecContext* decoder)
    {
       videoStream = av_new_stream(oc, 0);
       if (!videoStream)
       {
            cout << "ERROR creating video stream" << endl;
            return;        
       }
       vi = videoStream->index;    
       videoContext = videoStream->codec;      
       videoContext->codec_type = AVMEDIA_TYPE_VIDEO;
       videoContext->codec_id = decoder->codec_id;
       videoContext->bit_rate = 512000;
       videoContext->width = decoder->width;
       videoContext->height = decoder->height;
       videoContext->time_base.den = 25;
       videoContext->time_base.num = 1;    
       videoContext->gop_size = decoder->gop_size;
       videoContext->pix_fmt = decoder->pix_fmt;      

       if (oc->oformat->flags & AVFMT_GLOBALHEADER)
           videoContext->flags |= CODEC_FLAG_GLOBAL_HEADER;

       av_dump_format(oc, 0, filename, 1);

       if (!(oc->oformat->flags & AVFMT_NOFILE))
       {
           if (avio_open(&oc->pb, filename, AVIO_FLAG_WRITE) < 0) {
           cout << "Error opening file" << endl;
       }
       avformat_write_header(oc, NULL);
    }

    I write packets out :

    unsigned char* data = block->getData();
    unsigned char videoFrameType = data[4];
    int dataLen = block->getDataLen();

    // store pps
    if (videoFrameType == 0x68)
    {
       if (ppsFrame != NULL)
       {
           delete ppsFrame; ppsFrameLength = 0; ppsFrame = NULL;
       }
       ppsFrameLength = block->getDataLen();
       ppsFrame = new unsigned char[ppsFrameLength];
       memcpy(ppsFrame, block->getData(), ppsFrameLength);
    }
    else if (videoFrameType == 0x67)
    {
       // sps
       if (spsFrame != NULL)
       {
           delete spsFrame; spsFrameLength = 0; spsFrame = NULL;
    }
       spsFrameLength = block->getDataLen();
       spsFrame = new unsigned char[spsFrameLength];
       memcpy(spsFrame, block->getData(), spsFrameLength);                
    }                                          

    if (videoFrameType == 0x65 || videoFrameType == 0x41)
    {
       videoFrameNumber++;
    }
    if (videoFrameType == 0x65)
    {
       decodeIFrame(videoFrameNumber, spsFrame, spsFrameLength, ppsFrame, ppsFrameLength, data, dataLen);
    }

    if (videoStream != NULL)
    {
       AVPacket pkt = { 0 };
       av_init_packet(&pkt);
       pkt.stream_index = vi;
       pkt.flags = 0;                      
       pkt.pts = pkt.dts = 0;                                  

       if (videoFrameType == 0x65)
       {
           // combine the SPS PPS & I frames together
           pkt.flags |= AV_PKT_FLAG_KEY;                                                  
           unsigned char* videoFrame = new unsigned char[spsFrameLength+ppsFrameLength+dataLen];
           memcpy(videoFrame, spsFrame, spsFrameLength);
           memcpy(&videoFrame[spsFrameLength], ppsFrame, ppsFrameLength);
           memcpy(&videoFrame[spsFrameLength+ppsFrameLength], data, dataLen);

           // overwrite the start code (00 00 00 01 with a 32-bit length)
           setLength(videoFrame, spsFrameLength-4);
           setLength(&videoFrame[spsFrameLength], ppsFrameLength-4);
           setLength(&videoFrame[spsFrameLength+ppsFrameLength], dataLen-4);
           pkt.size = dataLen + spsFrameLength + ppsFrameLength;
           pkt.data = videoFrame;
           av_interleaved_write_frame(oc, &pkt);
           delete videoFrame; videoFrame = NULL;
       }
       else if (videoFrameType != 0x67 && videoFrameType != 0x68)
       {  
           // Send other frames except pps & sps which are caught and stored                  
           pkt.size = dataLen;
           pkt.data = data;
           setLength(data, dataLen-4);                    
           av_interleaved_write_frame(oc, &pkt);
       }

    Finally to close the file off :

    av_write_trailer(oc);
    int i = 0;
    for (i = 0; i < oc->nb_streams; i++)
    {
       av_freep(&oc->streams[i]->codec);
       av_freep(&oc->streams[i]);      
    }

    if (!(oc->oformat->flags & AVFMT_NOFILE))
    {
       avio_close(oc->pb);
    }
    av_free(oc);

    If I take the H.264 data alone and convert it :

    ffmpeg -i recording.h264 -vcodec copy recording.mp4

    All but the "footer" of the files are the same.

    Output from my program :
    readrec recording.tcp out.mp4
    ** START * 01-03-2013 14:26:01 180000
    Output #0, mp4, to ’out.mp4’ :
    Stream #0:0 : Video : h264, yuv420p, 352x288, q=2-31, 512 kb/s, 90k tbn, 25 tbc
    * END ** 01-03-2013 14:27:01 102000
    Wrote 1499 video frames.

    If I try to convert using ffmpeg the MP4 file created using CODE :

    ffmpeg -i out.mp4 -vcodec copy out2.mp4
    ffmpeg version 0.11.1 Copyright (c) 2000-2012 the FFmpeg developers
         built on Mar  7 2013 12:49:22 with suncc 0x5110
         configuration: --extra-cflags=-KPIC -g --disable-mmx
         --disable-protocol=udp --disable-encoder=nellymoser --cc=cc --cxx=CC
    libavutil      51. 54.100 / 51. 54.100
    libavcodec     54. 23.100 / 54. 23.100
    libavformat    54.  6.100 / 54.  6.100
    libavdevice    54.  0.100 / 54.  0.100
    libavfilter     2. 77.100 /  2. 77.100
    libswscale      2.  1.100 /  2.  1.100
    libswresample   0. 15.100 /  0. 15.100
    h264 @ 12eaac0] no frame!
       Last message repeated 1 times
    [h264 @ 12eaac0] slice type too large (0) at 0 0
    [h264 @ 12eaac0] decode_slice_header error
    [h264 @ 12eaac0] no frame!
       Last message repeated 23 times
    [h264 @ 12eaac0] slice type too large (0) at 0 0
    [h264 @ 12eaac0] decode_slice_header error
    [h264 @ 12eaac0] no frame!
       Last message repeated 74 times
    [h264 @ 12eaac0] slice type too large (0) at 0 0
    [h264 @ 12eaac0] decode_slice_header error
    [h264 @ 12eaac0] no frame!
       Last message repeated 64 times
    [h264 @ 12eaac0] slice type too large (0) at 0 0
    [h264 @ 12eaac0] decode_slice_header error
    [h264 @ 12eaac0] no frame!
       Last message repeated 34 times
    [h264 @ 12eaac0] slice type too large (0) at 0 0
    [h264 @ 12eaac0] decode_slice_header error
    [h264 @ 12eaac0] no frame!
       Last message repeated 49 times
    [h264 @ 12eaac0] slice type too large (0) at 0 0
    [h264 @ 12eaac0] decode_slice_header error
    [h264 @ 12eaac0] no frame!
       Last message repeated 24 times
    [h264 @ 12eaac0] Partitioned H.264 support is incomplete
    [h264 @ 12eaac0] no frame!
       Last message repeated 23 times
    [h264 @ 12eaac0] sps_id out of range
    [h264 @ 12eaac0] no frame!
       Last message repeated 148 times
    [h264 @ 12eaac0] sps_id (32) out of range
       Last message repeated 1 times
    [h264 @ 12eaac0] no frame!
       Last message repeated 33 times
    [h264 @ 12eaac0] slice type too large (0) at 0 0
    [h264 @ 12eaac0] decode_slice_header error
    [h264 @ 12eaac0] no frame!
       Last message repeated 128 times
    [h264 @ 12eaac0] sps_id (32) out of range
       Last message repeated 1 times
    [h264 @ 12eaac0] no frame!
       Last message repeated 3 times
    [h264 @ 12eaac0] slice type too large (0) at 0 0
    [h264 @ 12eaac0] decode_slice_header error
    [h264 @ 12eaac0] no frame!
       Last message repeated 3 times
    [h264 @ 12eaac0] slice type too large (0) at 0 0
    [h264 @ 12eaac0] decode_slice_header error
    [h264 @ 12eaac0] no frame!
       Last message repeated 309 times
    [h264 @ 12eaac0] sps_id (32) out of range
       Last message repeated 1 times
    [h264 @ 12eaac0] no frame!
       Last message repeated 192 times
    [h264 @ 12eaac0] Partitioned H.264 support is incomplete
    [h264 @ 12eaac0] no frame!
       Last message repeated 73 times
    [h264 @ 12eaac0] sps_id (32) out of range
       Last message repeated 1 times
    [h264 @ 12eaac0] no frame!
       Last message repeated 99 times
    [h264 @ 12eaac0] sps_id (32) out of range
       Last message repeated 1 times
    [h264 @ 12eaac0] no frame!
       Last message repeated 197 times
    [mov,mp4,m4a,3gp,3g2,mj2 @ 12e3100] decoding for stream 0 failed
    [mov,mp4,m4a,3gp,3g2,mj2 @ 12e3100] Could not find codec parameters
    (Video: h264 (avc1 / 0x31637661), 393539 kb/s)
    out.mp4: could not find codec parameters

    I really do not know where the issue is, except it has to be something to do with the way the streams are being set up. I’ve looked at bits of code from where other people are doing a similar thing, and tried to use this advice in setting up the streams, but to no avail !


    The final code which gave me a H.264/AAC muxed (synced) file is as follows. First a bit of background information. The data is coming from an IP camera. The data is presented via a 3rd party API as video/audio packets. The video packets are presented as the RTP payload data (no header) and consist of NALU’s that are reconstructed and converted to H.264 video in Annex B format. AAC audio is presented as raw AAC and is converted to adts format to enable playback. These packets have been put into a bitstream format that allows the transmission of the timestamp (64 bit milliseconds since Jan 1 1970) along with a few other things.

    This is more or less a prototype and is not clean in any respects. It probably leaks bad. I do however, hope this helps anyone else out trying to achieve something similar to what I am.

    Globals :

    AVFormatContext* oc = NULL;
    AVCodecContext* videoContext = NULL;
    AVStream* videoStream = NULL;
    AVCodecContext* audioContext = NULL;
    AVStream* audioStream = NULL;
    AVCodec* videoCodec = NULL;
    AVCodec* audioCodec = NULL;
    int vi = 0;  // Video stream
    int ai = 1;  // Audio stream

    uint64_t firstVideoTimeStamp = 0;
    uint64_t firstAudioTimeStamp = 0;
    int audioStartOffset = 0;

    char* filename = NULL;

    Boolean first = TRUE;

    int videoFrameNumber = 0;
    int audioFrameNumber = 0;

    Main :

    int main(int argc, char* argv[])
    {
       if (argc != 3)
       {  
           cout &lt;&lt; argv[0] &lt;&lt; " <stream playback="playback" file="file"> <output mp4="mp4" file="file">" &lt;&lt; endl;
           return 0;
       }
       char* input_stream_file = argv[1];
       filename = argv[2];

       av_register_all();    

       fstream inFile;
       inFile.open(input_stream_file, ios::in);

       // Used to store the latest pps &amp; sps frames
       unsigned char* ppsFrame = NULL;
       int ppsFrameLength = 0;
       unsigned char* spsFrame = NULL;
       int spsFrameLength = 0;

       // Setup MP4 output file
       AVOutputFormat* fmt = av_guess_format( 0, filename, 0 );
       oc = avformat_alloc_context();
       oc->oformat = fmt;
       strcpy(oc->filename, filename);

       // Setup the bitstream filter for AAC in adts format.  Could probably also achieve
       // this by stripping the first 7 bytes!
       AVBitStreamFilterContext* bsfc = av_bitstream_filter_init("aac_adtstoasc");
       if (!bsfc)
       {      
           cout &lt;&lt; "Error creating adtstoasc filter" &lt;&lt; endl;
           return -1;
       }

       while (inFile.good())
       {
           TcpAVDataBlock* block = new TcpAVDataBlock();
           block->readStruct(inFile);
           DateTime dt = block->getTimestampAsDateTime();
           switch (block->getPacketType())
           {
               case TCP_PACKET_H264:
               {      
                   if (firstVideoTimeStamp == 0)
                       firstVideoTimeStamp = block->getTimeStamp();
                   unsigned char* data = block->getData();
                   unsigned char videoFrameType = data[4];
                   int dataLen = block->getDataLen();

                   // pps
                   if (videoFrameType == 0x68)
                   {
                       if (ppsFrame != NULL)
                       {
                           delete ppsFrame; ppsFrameLength = 0;
                           ppsFrame = NULL;
                       }
                       ppsFrameLength = block->getDataLen();
                       ppsFrame = new unsigned char[ppsFrameLength];
                       memcpy(ppsFrame, block->getData(), ppsFrameLength);
                   }
                   else if (videoFrameType == 0x67)
                   {
                       // sps
                       if (spsFrame != NULL)
                       {
                           delete spsFrame; spsFrameLength = 0;
                           spsFrame = NULL;
                       }
                       spsFrameLength = block->getDataLen();
                       spsFrame = new unsigned char[spsFrameLength];
                       memcpy(spsFrame, block->getData(), spsFrameLength);                  
                   }                                          

                   if (videoFrameType == 0x65 || videoFrameType == 0x41)
                   {
                       videoFrameNumber++;
                   }
                   // Extract a thumbnail for each I-Frame
                   if (videoFrameType == 0x65)
                   {
                       decodeIFrame(h264, spsFrame, spsFrameLength, ppsFrame, ppsFrameLength, data, dataLen);
                   }
                   if (videoStream != NULL)
                   {
                       AVPacket pkt = { 0 };
                       av_init_packet(&amp;pkt);
                       pkt.stream_index = vi;
                       pkt.flags = 0;          
                       pkt.pts = videoFrameNumber;
                       pkt.dts = videoFrameNumber;          
                       if (videoFrameType == 0x65)
                       {
                           pkt.flags = 1;                          

                           unsigned char* videoFrame = new unsigned char[spsFrameLength+ppsFrameLength+dataLen];
                           memcpy(videoFrame, spsFrame, spsFrameLength);
                           memcpy(&amp;videoFrame[spsFrameLength], ppsFrame, ppsFrameLength);

                           memcpy(&amp;videoFrame[spsFrameLength+ppsFrameLength], data, dataLen);
                           pkt.data = videoFrame;
                           av_interleaved_write_frame(oc, &amp;pkt);
                           delete videoFrame; videoFrame = NULL;
                       }
                       else if (videoFrameType != 0x67 &amp;&amp; videoFrameType != 0x68)
                       {                      
                           pkt.size = dataLen;
                           pkt.data = data;
                           av_interleaved_write_frame(oc, &amp;pkt);
                       }                      
                   }
                   break;
               }

           case TCP_PACKET_AAC:

               if (firstAudioTimeStamp == 0)
               {
                   firstAudioTimeStamp = block->getTimeStamp();
                   uint64_t millseconds_difference = firstAudioTimeStamp - firstVideoTimeStamp;
                   audioStartOffset = millseconds_difference * 16000 / 1000;
                   cout &lt;&lt; "audio offset: " &lt;&lt; audioStartOffset &lt;&lt; endl;
               }

               if (audioStream != NULL)
               {
                   AVPacket pkt = { 0 };
                   av_init_packet(&amp;pkt);
                   pkt.stream_index = ai;
                   pkt.flags = 1;          
                   pkt.pts = audioFrameNumber*1024;
                   pkt.dts = audioFrameNumber*1024;
                   pkt.data = block->getData();
                   pkt.size = block->getDataLen();
                   pkt.duration = 1024;

                   AVPacket newpacket = pkt;                      
                   int rc = av_bitstream_filter_filter(bsfc, audioContext,
                       NULL,
                       &amp;newpacket.data, &amp;newpacket.size,
                       pkt.data, pkt.size,
                       pkt.flags &amp; AV_PKT_FLAG_KEY);

                   if (rc >= 0)
                   {
                       //cout &lt;&lt; "Write audio frame" &lt;&lt; endl;
                       newpacket.pts = audioFrameNumber*1024;
                       newpacket.dts = audioFrameNumber*1024;
                       audioFrameNumber++;
                       newpacket.duration = 1024;                  

                       av_interleaved_write_frame(oc, &amp;newpacket);
                       av_free_packet(&amp;newpacket);
                   }  
                   else
                   {
                       cout &lt;&lt; "Error filtering aac packet" &lt;&lt; endl;

                   }
               }
               break;

           case TCP_PACKET_START:
               break;

           case TCP_PACKET_END:
               break;
           }
           delete block;
       }
       inFile.close();

       av_write_trailer(oc);
       int i = 0;
       for (i = 0; i &lt; oc->nb_streams; i++)
       {
           av_freep(&amp;oc->streams[i]->codec);
           av_freep(&amp;oc->streams[i]);      
       }

       if (!(oc->oformat->flags &amp; AVFMT_NOFILE))
       {
           avio_close(oc->pb);
       }

       av_free(oc);

       delete spsFrame; spsFrame = NULL;
       delete ppsFrame; ppsFrame = NULL;

       cout &lt;&lt; "Wrote " &lt;&lt; videoFrameNumber &lt;&lt; " video frames." &lt;&lt; endl;

       return 0;
    }
    </output></stream>

    The stream stream/codecs are added and the header is created in a function called addVideoAndAudioStream(). This function is called from decodeIFrame() so there are a few assumptions (which aren’t necessarily good)
    1. A video packet comes first
    2. AAC is present

    The decodeIFrame was kind of a separate prototype by where I was creating a thumbnail for each I Frame. The code to generate thumbnails was from : https://gnunet.org/svn/Extractor/src/plugins/thumbnailffmpeg_extractor.c

    The decodeIFrame function passes an AVCodecContext into addVideoAudioStream :

    void addVideoAndAudioStream(AVCodecContext* decoder = NULL)
    {
       videoStream = av_new_stream(oc, 0);
       if (!videoStream)
       {
           cout &lt;&lt; "ERROR creating video stream" &lt;&lt; endl;
           return;      
       }
       vi = videoStream->index;  
       videoContext = videoStream->codec;      
       videoContext->codec_type = AVMEDIA_TYPE_VIDEO;
       videoContext->codec_id = decoder->codec_id;
       videoContext->bit_rate = 512000;
       videoContext->width = decoder->width;
       videoContext->height = decoder->height;
       videoContext->time_base.den = 25;
       videoContext->time_base.num = 1;
       videoContext->gop_size = decoder->gop_size;
       videoContext->pix_fmt = decoder->pix_fmt;      

       audioStream = av_new_stream(oc, 1);
       if (!audioStream)
       {
           cout &lt;&lt; "ERROR creating audio stream" &lt;&lt; endl;
           return;
       }
       ai = audioStream->index;
       audioContext = audioStream->codec;
       audioContext->codec_type = AVMEDIA_TYPE_AUDIO;
       audioContext->codec_id = CODEC_ID_AAC;
       audioContext->bit_rate = 64000;
       audioContext->sample_rate = 16000;
       audioContext->channels = 1;

       if (oc->oformat->flags &amp; AVFMT_GLOBALHEADER)
       {
           videoContext->flags |= CODEC_FLAG_GLOBAL_HEADER;
           audioContext->flags |= CODEC_FLAG_GLOBAL_HEADER;
       }

       av_dump_format(oc, 0, filename, 1);

       if (!(oc->oformat->flags &amp; AVFMT_NOFILE))
       {
           if (avio_open(&amp;oc->pb, filename, AVIO_FLAG_WRITE) &lt; 0) {
               cout &lt;&lt; "Error opening file" &lt;&lt; endl;
           }
       }

       avformat_write_header(oc, NULL);
    }

    As far as I can tell, a number of assumptions didn’t seem to matter, for example :
    1. Bit Rate. The actual video bit rate was 262k whereas I specified 512kbit
    2. AAC channels. I specified mono, although the actual output was Stereo from memory

    You would still need to know what the frame rate (time base) is for the video & audio.

    Contrary to a lot of other examples, when setting pts & dts on the video packets, it was not playable. I needed to know the time base (25fps) and then set the pts & dts according to that time base, i.e. first frame = 0 (PPS, SPS, I), second frame = 1 (intermediate frame, whatever its called ;)).

    AAC I also had to make the assumption that it was 16000 hz. 1024 samples per AAC packet (You can also have AAC @ 960 samples I think) to determine the audio "offset". I added this to the pts & dts. So the pts/dts are the sample number that it is to played back at. You also need to make sure that the duration of 1024 is set in the packet before writing also.

    I have found additionally today that Annex B isn’t really compatible with any other player so AVCC format should really be used.

    These URLS helped :
    Problem to Decode H264 video over RTP with ffmpeg (libavcodec)
    http://aviadr1.blogspot.com.au/2010/05/h264-extradata-partially-explained-for.html

    When constructing the video stream, I filled out the extradata & extradata_size :

    // Extradata contains PPS &amp; SPS for AVCC format
    int extradata_len = 8 + spsFrameLen-4 + 1 + 2 + ppsFrameLen-4;
    videoContext->extradata = (uint8_t*)av_mallocz(extradata_len);
    videoContext->extradata_size = extradata_len;
    videoContext->extradata[0] = 0x01;
    videoContext->extradata[1] = spsFrame[4+1];
    videoContext->extradata[2] = spsFrame[4+2];
    videoContext->extradata[3] = spsFrame[4+3];
    videoContext->extradata[4] = 0xFC | 3;
    videoContext->extradata[5] = 0xE0 | 1;
    int tmp = spsFrameLen - 4;
    videoContext->extradata[6] = (tmp >> 8) &amp; 0x00ff;
    videoContext->extradata[7] = tmp &amp; 0x00ff;
    int i = 0;
    for (i=0;iextradata[8+i] = spsFrame[4+i];
    videoContext->extradata[8+tmp] = 0x01;
    int tmp2 = ppsFrameLen-4;  
    videoContext->extradata[8+tmp+1] = (tmp2 >> 8) &amp; 0x00ff;
    videoContext->extradata[8+tmp+2] = tmp2 &amp; 0x00ff;
    for (i=0;iextradata[8+tmp+3+i] = ppsFrame[4+i];

    When writing out the frames, don’t prepend the SPS & PPS frames, just write out the I Frame & P frames. In addition, replace the Annex B start code contained in the first 4 bytes (0x00 0x00 0x00 0x01) with the size of the I/P frame.

  • No sounds on Apple devices after encoding videos [migrated]

    15 décembre 2013, par Ricardo

    I'm having a problem setting up a media server.
    Everything works just great except the sound of Apple devices, I'm not sure if that's something with "mute" on iOS or our codecs are just not compatible with iOS.

    OS :

    Ubuntu 12.04

    FFMPEG Config :

    ffmpeg version 0.10.8-7:0.10.8-1~lucid1 Copyright 2000-2013 the FFmpeg developers
     built on Sep  5 2013 19:50:14 with gcc 4.4.3
     configuration: --arch=amd64 --disable-stripping --enable-pthreads --enable-runtime-cpudetect --extra-version=&#39;7:0.10.8-1~lucid1&#39; --libdir=/usr/lib --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-libcdio --enable-x11grab --enable-libx264 --shlibdir=/usr/lib --enable-shared --disable-static
     avcodec     configuration: --arch=amd64 --disable-stripping --enable-pthreads --enable-runtime-cpudetect --extra-version=&#39;7:0.10.8-1~lucid1&#39; --libdir=/usr/lib --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-libcdio --enable-x11grab --enable-libx264 --shlibdir=/usr/lib --enable-shared --disable-static --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb
     libavutil      51. 35.100 / 51. 35.100
     libavcodec     53. 61.100 / 53. 61.100
     libavformat    53. 32.100 / 53. 32.100
     libavdevice    53.  4.100 / 53.  4.100
     libavfilter     2. 61.100 /  2. 61.100
     libswscale      2.  1.100 /  2.  1.100
     libswresample   0.  6.100 /  0.  6.100
     libpostproc    52.  0.100 / 52.  0.100
    Hyper fast Audio and Video encoder

    Codecs :

    D..... = Decoding supported
    .E.... = Encoding supported
    ..V... = Video codec
    ..A... = Audio codec
    ..S... = Subtitle codec
    ...S.. = Supports draw_horiz_band
    ....D. = Supports direct rendering method 1
    .....T = Supports weird frame truncation
    ------
    D V D  4xm             4X Movie
    D V D  8bps            QuickTime 8BPS video
    D A D  8svx_exp        8SVX exponential
    D A D  8svx_fib        8SVX fibonacci
     EV    a64multi        Multicolor charset for Commodore 64
     EV    a64multi5       Multicolor charset for Commodore 64, extended with 5th color (colram)
    DEA D  aac             Advanced Audio Coding
    D A D  aac_latm        AAC LATM (Advanced Audio Codec LATM syntax)
    D V D  aasc            Autodesk RLE
    DEA D  ac3             ATSC A/52A (AC-3)
     EA    ac3_fixed       ATSC A/52A (AC-3)
    D A D  adpcm_4xm       ADPCM 4X Movie
    DEA D  adpcm_adx       SEGA CRI ADX ADPCM
    D A D  adpcm_ct        ADPCM Creative Technology
    D A D  adpcm_ea        ADPCM Electronic Arts
    D A D  adpcm_ea_maxis_xa ADPCM Electronic Arts Maxis CDROM XA
    D A D  adpcm_ea_r1     ADPCM Electronic Arts R1
    D A D  adpcm_ea_r2     ADPCM Electronic Arts R2
    D A D  adpcm_ea_r3     ADPCM Electronic Arts R3
    D A D  adpcm_ea_xas    ADPCM Electronic Arts XAS
    D A D  adpcm_ima_amv   ADPCM IMA AMV
    D A D  adpcm_ima_apc   ADPCM IMA CRYO APC
    D A D  adpcm_ima_dk3   ADPCM IMA Duck DK3
    D A D  adpcm_ima_dk4   ADPCM IMA Duck DK4
    D A D  adpcm_ima_ea_eacs ADPCM IMA Electronic Arts EACS
    D A D  adpcm_ima_ea_sead ADPCM IMA Electronic Arts SEAD
    D A D  adpcm_ima_iss   ADPCM IMA Funcom ISS
    DEA D  adpcm_ima_qt    ADPCM IMA QuickTime
    D A D  adpcm_ima_smjpeg ADPCM IMA Loki SDL MJPEG
    DEA D  adpcm_ima_wav   ADPCM IMA WAV
    D A D  adpcm_ima_ws    ADPCM IMA Westwood
    DEA D  adpcm_ms        ADPCM Microsoft
    D A D  adpcm_sbpro_2   ADPCM Sound Blaster Pro 2-bit
    D A D  adpcm_sbpro_3   ADPCM Sound Blaster Pro 2.6-bit
    D A D  adpcm_sbpro_4   ADPCM Sound Blaster Pro 4-bit
    DEA D  adpcm_swf       ADPCM Shockwave Flash
    D A D  adpcm_thp       ADPCM Nintendo Gamecube THP
    D A D  adpcm_xa        ADPCM CDROM XA
    DEA D  adpcm_yamaha    ADPCM Yamaha
    DEA D  alac            ALAC (Apple Lossless Audio Codec)
    D A D  als             MPEG-4 Audio Lossless Coding (ALS)
    D A D  amrnb           Adaptive Multi-Rate NarrowBand
    D A D  amrwb           Adaptive Multi-Rate WideBand
    DEV    amv             AMV Video
    D V D  anm             Deluxe Paint Animation
    D V D  ansi            ASCII/ANSI art
    D A D  ape             Monkey&#39;s Audio
    DES    ass             Advanced SubStation Alpha subtitle
    DEV D  asv1            ASUS V1
    DEV D  asv2            ASUS V2
    D A D  atrac1          Atrac 1 (Adaptive TRansform Acoustic Coding)
    D A D  atrac3          Atrac 3 (Adaptive TRansform Acoustic Coding 3)
    D V D  aura            Auravision AURA
    D V D  aura2           Auravision Aura 2
    DEV D  avrp            Avid 1:1 10-bit RGB Packer
    D V D  avs             AVS (Audio Video Standard) video
    D V D  bethsoftvid     Bethesda VID video
    D V D  bfi             Brute Force &amp; Ignorance
    D A D  binkaudio_dct   Bink Audio (DCT)
    D A D  binkaudio_rdft  Bink Audio (RDFT)
    D V    binkvideo       Bink video
    D V D  bintext         Binary text
    DEV D  bmp             BMP image
    D A D  bmv_audio       Discworld II BMV audio
    D V    bmv_video       Discworld II BMV video
    D V D  c93             Interplay C93
    D V D  camstudio       CamStudio
    D V D  camtasia        TechSmith Screen Capture Codec
    D V D  cavs            Chinese AVS video (AVS1-P2, JiZhun profile)
    D V D  cdgraphics      CD Graphics video
    D V D  cinepak         Cinepak
    DEV D  cljr            Cirrus Logic AccuPak
    D A D  cook            COOK
    D V D  cyuv            Creative YUV (CYUV)
    DEA D  dca             DCA (DTS Coherent Acoustics)
    D V D  dfa             Chronomaster DFA
    D V    dirac           BBC Dirac VC-2
    DEV D  dnxhd           VC3/DNxHD
    DEV    dpx             DPX image
    D A D  dsicinaudio     Delphine Software International CIN audio
    D V D  dsicinvideo     Delphine Software International CIN video
    DES    dvbsub          DVB subtitles
    DES    dvdsub          DVD subtitles
    DEV D  dvvideo         DV (Digital Video)
    D V D  dxa             Feeble Files/ScummVM DXA
    D V D  dxtory          Dxtory
    DEA D  eac3            ATSC A/52 E-AC-3
    D V D  eacmv           Electronic Arts CMV video
    D V D  eamad           Electronic Arts Madcow Video
    D V D  eatgq           Electronic Arts TGQ video
    D V    eatgv           Electronic Arts TGV video
    D V D  eatqi           Electronic Arts TQI Video
    D V D  escape124       Escape 124
    D V D  escape130       Escape 130
    DEV D  ffv1            FFmpeg video codec #1
    DEVSD  ffvhuff         Huffyuv FFmpeg variant
    DEA D  flac            FLAC (Free Lossless Audio Codec)
    DEV D  flashsv         Flash Screen Video
    DEV D  flashsv2        Flash Screen Video Version 2
    D V D  flic            Autodesk Animator Flic video
    DEVSD  flv             Flash Video (FLV) / Sorenson Spark / Sorenson H.263
    D V D  fraps           Fraps
    D V D  frwu            Forward Uncompressed
    DEA D  g722            G.722 ADPCM
    DEA    g723_1          G.723.1
    DEA D  g726            G.726 ADPCM
    D A D  g729            G.729
    DEV D  gif             GIF (Graphics Interchange Format)
    D A D  gsm             GSM
    D A D  gsm_ms          GSM Microsoft variant
    DEV D  h261            H.261
    DEVSDT h263            H.263 / H.263-1996
    D VSD  h263i           Intel H.263
     EV    h263p           H.263+ / H.263-1998 / H.263 version 2
    D V D  h264            H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
    D V D  h264_vdpau      H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (VDPAU acceleration)
    DEVSD  huffyuv         Huffyuv / HuffYUV
    D V D  idcinvideo      id Quake II CIN video
    D V D  idf             iCEDraw text
    D V D  iff_byterun1    IFF ByteRun1
    D V D  iff_ilbm        IFF ILBM
    D A D  imc             IMC (Intel Music Coder)
    D V D  indeo2          Intel Indeo 2
    D V    indeo3          Intel Indeo 3
    D V    indeo4          Intel Indeo Video Interactive 4
    D V    indeo5          Intel Indeo Video Interactive 5
    D A D  interplay_dpcm  DPCM Interplay
    D V D  interplayvideo  Interplay MVE video
    DEV    j2k             JPEG 2000
    DEV D  jpegls          JPEG-LS
    D V D  jv              Bitmap Brothers JV video
    D V    kgv1            Kega Game Video
    D V D  kmvc            Karl Morton&#39;s video codec
    D V D  lagarith        Lagarith lossless
    DEA D  libgsm          libgsm GSM
    DEA D  libgsm_ms       libgsm GSM Microsoft variant
     EA    libmp3lame      libmp3lame MP3 (MPEG audio layer 3)
    DEA D  libopencore_amrnb OpenCORE Adaptive Multi-Rate (AMR) Narrow-Band
    D A D  libopencore_amrwb OpenCORE Adaptive Multi-Rate (AMR) Wide-Band
    DEV D  libopenjpeg     OpenJPEG based JPEG 2000 encoder
    DEV    libschroedinger libschroedinger Dirac 2.2
    DEA D  libspeex        libspeex Speex
     EV    libtheora       libtheora Theora
     EA    libvorbis       libvorbis Vorbis
    DEV    libvpx          libvpx VP8
     EV    libx264         libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
     EV    libx264rgb      libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB
     EV    ljpeg           Lossless JPEG
    D V D  loco            LOCO
    D A D  mace3           MACE (Macintosh Audio Compression/Expansion) 3:1
    D A D  mace6           MACE (Macintosh Audio Compression/Expansion) 6:1
    D V D  mdec            Sony PlayStation MDEC (Motion DECoder)
    D V D  mimic           Mimic
    DEV D  mjpeg           MJPEG (Motion JPEG)
    D V D  mjpegb          Apple MJPEG-B
    D A D  mlp             MLP (Meridian Lossless Packing)
    D V D  mmvideo         American Laser Games MM Video
    D V D  motionpixels    Motion Pixels video
    D A D  mp1             MP1 (MPEG audio layer 1)
    D A D  mp1float        MP1 (MPEG audio layer 1)
    DEA D  mp2             MP2 (MPEG audio layer 2)
    D A D  mp2float        MP2 (MPEG audio layer 2)
    D A D  mp3             MP3 (MPEG audio layer 3)
    D A D  mp3adu          ADU (Application Data Unit) MP3 (MPEG audio layer 3)
    D A D  mp3adufloat     ADU (Application Data Unit) MP3 (MPEG audio layer 3)
    D A D  mp3float        MP3 (MPEG audio layer 3)
    D A D  mp3on4          MP3onMP4
    D A D  mp3on4float     MP3onMP4
    D A D  mpc7            Musepack SV7
    D A D  mpc8            Musepack SV8
    DEVSDT mpeg1video      MPEG-1 video
    D V DT mpeg1video_vdpau MPEG-1 video (VDPAU acceleration)
    DEVSDT mpeg2video      MPEG-2 video
    DEVSDT mpeg4           MPEG-4 part 2
    D V DT mpeg4_vdpau     MPEG-4 part 2 (VDPAU)
    D VSDT mpegvideo       MPEG-1 video
    D V DT mpegvideo_vdpau MPEG-1/2 video (VDPAU acceleration)
    D VSDT mpegvideo_xvmc  MPEG-1/2 video XvMC (X-Video Motion Compensation)
    DEVSD  msmpeg4         MPEG-4 part 2 Microsoft variant version 3
    D VSD  msmpeg4v1       MPEG-4 part 2 Microsoft variant version 1
    DEVSD  msmpeg4v2       MPEG-4 part 2 Microsoft variant version 2
    D V D  msrle           Microsoft RLE
    DEV D  msvideo1        Microsoft Video-1
    D V D  mszh            LCL (LossLess Codec Library) MSZH
    D V D  mxpeg           Mobotix MxPEG video
    DEA D  nellymoser      Nellymoser Asao
    D V D  nuv             NuppelVideo/RTJPEG
    DEV D  pam             PAM (Portable AnyMap) image
    DEV D  pbm             PBM (Portable BitMap) image
    DEA D  pcm_alaw        PCM A-law
    D A D  pcm_bluray      PCM signed 16|20|24-bit big-endian for Blu-ray media
    D A D  pcm_dvd         PCM signed 20|24-bit big-endian
    DEA D  pcm_f32be       PCM 32-bit floating point big-endian
    DEA D  pcm_f32le       PCM 32-bit floating point little-endian
    DEA D  pcm_f64be       PCM 64-bit floating point big-endian
    DEA D  pcm_f64le       PCM 64-bit floating point little-endian
    D A D  pcm_lxf         PCM signed 20-bit little-endian planar
    DEA D  pcm_mulaw       PCM mu-law
    DEA D  pcm_s16be       PCM signed 16-bit big-endian
    DEA D  pcm_s16le       PCM signed 16-bit little-endian
    D A D  pcm_s16le_planar PCM 16-bit little-endian planar
    DEA D  pcm_s24be       PCM signed 24-bit big-endian
    DEA D  pcm_s24daud     PCM D-Cinema audio signed 24-bit
    DEA D  pcm_s24le       PCM signed 24-bit little-endian
    DEA D  pcm_s32be       PCM signed 32-bit big-endian
    DEA D  pcm_s32le       PCM signed 32-bit little-endian
    DEA D  pcm_s8          PCM signed 8-bit
    D A D  pcm_s8_planar   PCM signed 8-bit planar
    DEA D  pcm_u16be       PCM unsigned 16-bit big-endian
    DEA D  pcm_u16le       PCM unsigned 16-bit little-endian
    DEA D  pcm_u24be       PCM unsigned 24-bit big-endian
    DEA D  pcm_u24le       PCM unsigned 24-bit little-endian
    DEA D  pcm_u32be       PCM unsigned 32-bit big-endian
    DEA D  pcm_u32le       PCM unsigned 32-bit little-endian
    DEA D  pcm_u8          PCM unsigned 8-bit
    D A D  pcm_zork        PCM Zork
    DEV D  pcx             PC Paintbrush PCX image
    DEV D  pgm             PGM (Portable GrayMap) image
    DEV D  pgmyuv          PGMYUV (Portable GrayMap YUV) image
    D S    pgssub          HDMV Presentation Graphic Stream subtitles
    D V D  pictor          Pictor/PC Paint
    DEV D  png             PNG image
    DEV D  ppm             PPM (Portable PixelMap) image
    DEV D  prores          Apple ProRes
    D V D  prores_lgpl     Apple ProRes (iCodec Pro)
    D V D  ptx             V.Flash PTX image
    D A D  qcelp           QCELP / PureVoice
    D A D  qdm2            QDesign Music Codec 2
    D V D  qdraw           Apple QuickDraw
    D V D  qpeg            Q-team QPEG
    DEV D  qtrle           QuickTime Animation (RLE) video
    DEV D  r10k            AJA Kona 10-bit RGB Codec
    DEV D  r210            Uncompressed RGB 10-bit
    DEV    rawvideo        raw video
    DEA D  real_144        RealAudio 1.0 (14.4K) encoder
    D A D  real_288        RealAudio 2.0 (28.8K)
    D V D  rl2             RL2 video
    DEA D  roq_dpcm        id RoQ DPCM
    DEV D  roqvideo        id RoQ video
    D V D  rpza            QuickTime video (RPZA)
    DEV D  rv10            RealVideo 1.0
    DEV D  rv20            RealVideo 2.0
    D V D  rv30            RealVideo 3.0
    D V D  rv40            RealVideo 4.0
    D A D  s302m           SMPTE 302M
    DEV    sgi             SGI image
    D A D  shorten         Shorten
    D A D  sipr            RealAudio SIPR / ACELP.NET
    D A D  smackaud        Smacker audio
    D V D  smackvid        Smacker video
    D V D  smc             QuickTime Graphics (SMC)
    DEV D  snow            Snow
    D A D  sol_dpcm        DPCM Sol
    DEA D  sonic           Sonic
     EA    sonicls         Sonic lossless
    D V D  sp5x            Sunplus JPEG (SP5X)
    DES    srt             SubRip subtitle
    D V D  sunrast         Sun Rasterfile image
    DEV D  svq1            Sorenson Vector Quantizer 1 / Sorenson Video 1 / SVQ1
    D VSD  svq3            Sorenson Vector Quantizer 3 / Sorenson Video 3 / SVQ3
    DEV D  targa           Truevision Targa image
    D VSD  theora          Theora
    D V D  thp             Nintendo Gamecube THP video
    D V D  tiertexseqvideo Tiertex Limited SEQ video
    DEV D  tiff            TIFF image
    D V D  tmv             8088flex TMV
    D A D  truehd          TrueHD
    D V D  truemotion1     Duck TrueMotion 1.0
    D V D  truemotion2     Duck TrueMotion 2.0
    D A D  truespeech      DSP Group TrueSpeech
    D A D  tta             True Audio (TTA)
    D A D  twinvq          VQF TwinVQ
    D V D  txd             Renderware TXD (TeXture Dictionary) image
    D V D  ultimotion      IBM UltiMotion
    D V D  utvideo         Ut Video
    DEV D  v210            Uncompressed 4:2:2 10-bit
    D V D  v210x           Uncompressed 4:2:2 10-bit
    DEV D  v308            Uncompressed packed 4:4:4
    DEV D  v410            Uncompressed 4:4:4 10-bit
    D V    vb              Beam Software VB
    D V D  vble            VBLE Lossless Codec
    D V D  vc1             SMPTE VC-1
    D V D  vc1_vdpau       SMPTE VC-1 VDPAU
    D V D  vc1image        Windows Media Video 9 Image v2
    D V D  vcr1            ATI VCR1
    D A D  vmdaudio        Sierra VMD audio
    D V D  vmdvideo        Sierra VMD video
    D V D  vmnc            VMware Screen Codec / VMware Video
    DEA D  vorbis          Vorbis
    D VSD  vp3             On2 VP3
    D V D  vp5             On2 VP5
    D V D  vp6             On2 VP6
    D V D  vp6a            On2 VP6 (Flash version, with alpha channel)
    D V D  vp6f            On2 VP6 (Flash version)
    D V D  vp8             On2 VP8
    D V D  vqavideo        Westwood Studios VQA (Vector Quantized Animation) video
    D A D  wavesynth       Wave synthesis pseudo-codec
    D A D  wavpack         WavPack
    D A    wmalossless     Windows Media Audio 9 Lossless
    D A D  wmapro          Windows Media Audio 9 Professional
    DEA D  wmav1           Windows Media Audio 1
    DEA D  wmav2           Windows Media Audio 2
    D A D  wmavoice        Windows Media Audio Voice
    DEVSD  wmv1            Windows Media Video 7
    DEVSD  wmv2            Windows Media Video 8
    D V D  wmv3            Windows Media Video 9
    D V D  wmv3_vdpau      Windows Media Video 9 VDPAU
    D V D  wmv3image       Windows Media Video 9 Image
    D V D  wnv1            Winnov WNV1
    D A D  ws_snd1         Westwood Audio (SND1)
    D A D  xan_dpcm        DPCM Xan
    D V D  xan_wc3         Wing Commander III / Xan
    D V D  xan_wc4         Wing Commander IV / Xxan
    D V D  xbin            eXtended BINary text
    D V D  xl              Miro VideoXL
    DES    xsub            DivX subtitles (XSUB)
    DEV D  xwd             XWD (X Window Dump) image
    DEV D  y41p            Uncompressed YUV 4:1:1 12-bit
    D V    yop             Psygnosis YOP Video
    DEV D  yuv4            Uncompressed packed 4:2:0
    DEV D  zlib            LCL (LossLess Codec Library) ZLIB
    DEV D  zmbv            Zip Motion Blocks Video

    Library we use to convert :

    public function getAvailableAudioCodecs()
       {
           return array(&#39;libvo_aacenc&#39;, &#39;libfaac&#39;, &#39;libmp3lame&#39;);
       }

    By default I use 'libmp3lame' now because 'libfaac' is not supported by ffmpeg
    and when Im trying to encode sound by libfaac I'm getting that codec not found

    Thanks in advance !

  • avcodec/x86/vvc : add avg and avg_w AVX2 optimizations

    23 janvier 2024, par Wu Jianhua
    avcodec/x86/vvc : add avg and avg_w AVX2 optimizations
    

    The avg/avg_w is based on dav1d.
    See https://code.videolan.org/videolan/dav1d/-/blob/master/src/x86/mc_avx2.asm

    vvc_avg_8_2x2_c : 71.6
    vvc_avg_8_2x2_avx2 : 26.8
    vvc_avg_8_2x4_c : 140.8
    vvc_avg_8_2x4_avx2 : 34.6
    vvc_avg_8_2x8_c : 410.3
    vvc_avg_8_2x8_avx2 : 41.3
    vvc_avg_8_2x16_c : 769.3
    vvc_avg_8_2x16_avx2 : 60.3
    vvc_avg_8_2x32_c : 1669.6
    vvc_avg_8_2x32_avx2 : 105.1
    vvc_avg_8_2x64_c : 1978.3
    vvc_avg_8_2x64_avx2 : 425.8
    vvc_avg_8_2x128_c : 6536.8
    vvc_avg_8_2x128_avx2 : 1315.1
    vvc_avg_8_4x2_c : 155.6
    vvc_avg_8_4x2_avx2 : 26.1
    vvc_avg_8_4x4_c : 250.3
    vvc_avg_8_4x4_avx2 : 31.3
    vvc_avg_8_4x8_c : 831.8
    vvc_avg_8_4x8_avx2 : 41.3
    vvc_avg_8_4x16_c : 1461.1
    vvc_avg_8_4x16_avx2 : 57.1
    vvc_avg_8_4x32_c : 2821.6
    vvc_avg_8_4x32_avx2 : 105.1
    vvc_avg_8_4x64_c : 3615.8
    vvc_avg_8_4x64_avx2 : 412.6
    vvc_avg_8_4x128_c : 11962.6
    vvc_avg_8_4x128_avx2 : 1274.3
    vvc_avg_8_8x2_c : 215.8
    vvc_avg_8_8x2_avx2 : 29.1
    vvc_avg_8_8x4_c : 430.6
    vvc_avg_8_8x4_avx2 : 37.6
    vvc_avg_8_8x8_c : 1463.3
    vvc_avg_8_8x8_avx2 : 51.8
    vvc_avg_8_8x16_c : 2630.1
    vvc_avg_8_8x16_avx2 : 97.6
    vvc_avg_8_8x32_c : 5813.8
    vvc_avg_8_8x32_avx2 : 196.6
    vvc_avg_8_8x64_c : 6687.3
    vvc_avg_8_8x64_avx2 : 487.8
    vvc_avg_8_8x128_c : 13178.6
    vvc_avg_8_8x128_avx2 : 1290.6
    vvc_avg_8_16x2_c : 443.8
    vvc_avg_8_16x2_avx2 : 28.3
    vvc_avg_8_16x4_c : 1253.3
    vvc_avg_8_16x4_avx2 : 32.1
    vvc_avg_8_16x8_c : 2236.3
    vvc_avg_8_16x8_avx2 : 44.3
    vvc_avg_8_16x16_c : 5127.8
    vvc_avg_8_16x16_avx2 : 63.3
    vvc_avg_8_16x32_c : 6573.3
    vvc_avg_8_16x32_avx2 : 223.6
    vvc_avg_8_16x64_c : 30311.8
    vvc_avg_8_16x64_avx2 : 437.8
    vvc_avg_8_16x128_c : 25693.3
    vvc_avg_8_16x128_avx2 : 1266.8
    vvc_avg_8_32x2_c : 954.6
    vvc_avg_8_32x2_avx2 : 32.1
    vvc_avg_8_32x4_c : 2359.6
    vvc_avg_8_32x4_avx2 : 39.6
    vvc_avg_8_32x8_c : 5703.6
    vvc_avg_8_32x8_avx2 : 57.1
    vvc_avg_8_32x16_c : 9967.6
    vvc_avg_8_32x16_avx2 : 107.1
    vvc_avg_8_32x32_c : 21327.6
    vvc_avg_8_32x32_avx2 : 272.6
    vvc_avg_8_32x64_c : 39240.8
    vvc_avg_8_32x64_avx2 : 529.6
    vvc_avg_8_32x128_c : 52580.8
    vvc_avg_8_32x128_avx2 : 1338.8
    vvc_avg_8_64x2_c : 1647.3
    vvc_avg_8_64x2_avx2 : 38.8
    vvc_avg_8_64x4_c : 5130.1
    vvc_avg_8_64x4_avx2 : 58.8
    vvc_avg_8_64x8_c : 6529.3
    vvc_avg_8_64x8_avx2 : 88.3
    vvc_avg_8_64x16_c : 19913.6
    vvc_avg_8_64x16_avx2 : 162.3
    vvc_avg_8_64x32_c : 39360.8
    vvc_avg_8_64x32_avx2 : 295.8
    vvc_avg_8_64x64_c : 49658.3
    vvc_avg_8_64x64_avx2 : 784.1
    vvc_avg_8_64x128_c : 108513.1
    vvc_avg_8_64x128_avx2 : 1977.1
    vvc_avg_8_128x2_c : 3226.1
    vvc_avg_8_128x2_avx2 : 61.1
    vvc_avg_8_128x4_c : 10280.3
    vvc_avg_8_128x4_avx2 : 94.6
    vvc_avg_8_128x8_c : 18079.3
    vvc_avg_8_128x8_avx2 : 155.3
    vvc_avg_8_128x16_c : 45121.8
    vvc_avg_8_128x16_avx2 : 285.3
    vvc_avg_8_128x32_c : 48651.8
    vvc_avg_8_128x32_avx2 : 581.6
    vvc_avg_8_128x64_c : 165078.6
    vvc_avg_8_128x64_avx2 : 1942.8
    vvc_avg_8_128x128_c : 339103.1
    vvc_avg_8_128x128_avx2 : 4332.6
    vvc_avg_10_2x2_c : 144.3
    vvc_avg_10_2x2_avx2 : 26.8
    vvc_avg_10_2x4_c : 142.6
    vvc_avg_10_2x4_avx2 : 45.3
    vvc_avg_10_2x8_c : 478.1
    vvc_avg_10_2x8_avx2 : 38.1
    vvc_avg_10_2x16_c : 518.3
    vvc_avg_10_2x16_avx2 : 58.1
    vvc_avg_10_2x32_c : 2059.8
    vvc_avg_10_2x32_avx2 : 93.1
    vvc_avg_10_2x64_c : 2383.8
    vvc_avg_10_2x64_avx2 : 714.8
    vvc_avg_10_2x128_c : 4498.3
    vvc_avg_10_2x128_avx2 : 1466.3
    vvc_avg_10_4x2_c : 228.6
    vvc_avg_10_4x2_avx2 : 26.8
    vvc_avg_10_4x4_c : 378.3
    vvc_avg_10_4x4_avx2 : 30.6
    vvc_avg_10_4x8_c : 866.8
    vvc_avg_10_4x8_avx2 : 44.6
    vvc_avg_10_4x16_c : 1018.1
    vvc_avg_10_4x16_avx2 : 58.1
    vvc_avg_10_4x32_c : 3590.8
    vvc_avg_10_4x32_avx2 : 128.8
    vvc_avg_10_4x64_c : 4200.8
    vvc_avg_10_4x64_avx2 : 663.6
    vvc_avg_10_4x128_c : 8450.8
    vvc_avg_10_4x128_avx2 : 1531.8
    vvc_avg_10_8x2_c : 369.3
    vvc_avg_10_8x2_avx2 : 28.3
    vvc_avg_10_8x4_c : 513.8
    vvc_avg_10_8x4_avx2 : 32.1
    vvc_avg_10_8x8_c : 1720.3
    vvc_avg_10_8x8_avx2 : 49.1
    vvc_avg_10_8x16_c : 1894.8
    vvc_avg_10_8x16_avx2 : 71.6
    vvc_avg_10_8x32_c : 3931.3
    vvc_avg_10_8x32_avx2 : 148.1
    vvc_avg_10_8x64_c : 7964.3
    vvc_avg_10_8x64_avx2 : 613.1
    vvc_avg_10_8x128_c : 15540.1
    vvc_avg_10_8x128_avx2 : 1585.1
    vvc_avg_10_16x2_c : 877.3
    vvc_avg_10_16x2_avx2 : 27.6
    vvc_avg_10_16x4_c : 955.8
    vvc_avg_10_16x4_avx2 : 29.8
    vvc_avg_10_16x8_c : 3419.6
    vvc_avg_10_16x8_avx2 : 62.6
    vvc_avg_10_16x16_c : 3826.8
    vvc_avg_10_16x16_avx2 : 54.3
    vvc_avg_10_16x32_c : 7655.3
    vvc_avg_10_16x32_avx2 : 86.3
    vvc_avg_10_16x64_c : 30011.1
    vvc_avg_10_16x64_avx2 : 692.6
    vvc_avg_10_16x128_c : 47894.8
    vvc_avg_10_16x128_avx2 : 1580.3
    vvc_avg_10_32x2_c : 944.3
    vvc_avg_10_32x2_avx2 : 29.8
    vvc_avg_10_32x4_c : 2022.6
    vvc_avg_10_32x4_avx2 : 35.1
    vvc_avg_10_32x8_c : 6148.8
    vvc_avg_10_32x8_avx2 : 51.3
    vvc_avg_10_32x16_c : 12601.6
    vvc_avg_10_32x16_avx2 : 70.8
    vvc_avg_10_32x32_c : 15958.6
    vvc_avg_10_32x32_avx2 : 124.3
    vvc_avg_10_32x64_c : 31784.6
    vvc_avg_10_32x64_avx2 : 757.3
    vvc_avg_10_32x128_c : 63892.8
    vvc_avg_10_32x128_avx2 : 1711.3
    vvc_avg_10_64x2_c : 1890.8
    vvc_avg_10_64x2_avx2 : 34.3
    vvc_avg_10_64x4_c : 6267.3
    vvc_avg_10_64x4_avx2 : 42.6
    vvc_avg_10_64x8_c : 12778.1
    vvc_avg_10_64x8_avx2 : 67.8
    vvc_avg_10_64x16_c : 22304.3
    vvc_avg_10_64x16_avx2 : 116.8
    vvc_avg_10_64x32_c : 30777.1
    vvc_avg_10_64x32_avx2 : 201.1
    vvc_avg_10_64x64_c : 60169.1
    vvc_avg_10_64x64_avx2 : 1454.3
    vvc_avg_10_64x128_c : 124392.8
    vvc_avg_10_64x128_avx2 : 3648.6
    vvc_avg_10_128x2_c : 3650.1
    vvc_avg_10_128x2_avx2 : 41.1
    vvc_avg_10_128x4_c : 22887.8
    vvc_avg_10_128x4_avx2 : 64.1
    vvc_avg_10_128x8_c : 14622.6
    vvc_avg_10_128x8_avx2 : 111.6
    vvc_avg_10_128x16_c : 62207.6
    vvc_avg_10_128x16_avx2 : 186.3
    vvc_avg_10_128x32_c : 59761.3
    vvc_avg_10_128x32_avx2 : 374.6
    vvc_avg_10_128x64_c : 117504.3
    vvc_avg_10_128x64_avx2 : 2684.6
    vvc_avg_10_128x128_c : 236767.6
    vvc_avg_10_128x128_avx2 : 15278.1
    vvc_avg_12_2x2_c : 78.6
    vvc_avg_12_2x2_avx2 : 26.1
    vvc_avg_12_2x4_c : 254.1
    vvc_avg_12_2x4_avx2 : 30.6
    vvc_avg_12_2x8_c : 261.8
    vvc_avg_12_2x8_avx2 : 39.1
    vvc_avg_12_2x16_c : 527.6
    vvc_avg_12_2x16_avx2 : 57.3
    vvc_avg_12_2x32_c : 1089.1
    vvc_avg_12_2x32_avx2 : 93.8
    vvc_avg_12_2x64_c : 2337.6
    vvc_avg_12_2x64_avx2 : 707.1
    vvc_avg_12_2x128_c : 4582.1
    vvc_avg_12_2x128_avx2 : 1414.6
    vvc_avg_12_4x2_c : 129.6
    vvc_avg_12_4x2_avx2 : 26.8
    vvc_avg_12_4x4_c : 427.3
    vvc_avg_12_4x4_avx2 : 30.6
    vvc_avg_12_4x8_c : 529.6
    vvc_avg_12_4x8_avx2 : 36.6
    vvc_avg_12_4x16_c : 1022.1
    vvc_avg_12_4x16_avx2 : 57.3
    vvc_avg_12_4x32_c : 1987.6
    vvc_avg_12_4x32_avx2 : 84.3
    vvc_avg_12_4x64_c : 4147.6
    vvc_avg_12_4x64_avx2 : 706.3
    vvc_avg_12_4x128_c : 8469.3
    vvc_avg_12_4x128_avx2 : 1448.3
    vvc_avg_12_8x2_c : 253.6
    vvc_avg_12_8x2_avx2 : 27.6
    vvc_avg_12_8x4_c : 836.3
    vvc_avg_12_8x4_avx2 : 32.1
    vvc_avg_12_8x8_c : 1074.6
    vvc_avg_12_8x8_avx2 : 45.1
    vvc_avg_12_8x16_c : 3616.8
    vvc_avg_12_8x16_avx2 : 71.6
    vvc_avg_12_8x32_c : 3823.6
    vvc_avg_12_8x32_avx2 : 140.1
    vvc_avg_12_8x64_c : 7764.8
    vvc_avg_12_8x64_avx2 : 656.1
    vvc_avg_12_8x128_c : 15896.1
    vvc_avg_12_8x128_avx2 : 1232.8
    vvc_avg_12_16x2_c : 462.1
    vvc_avg_12_16x2_avx2 : 26.8
    vvc_avg_12_16x4_c : 1732.1
    vvc_avg_12_16x4_avx2 : 29.1
    vvc_avg_12_16x8_c : 2097.6
    vvc_avg_12_16x8_avx2 : 62.6
    vvc_avg_12_16x16_c : 6753.1
    vvc_avg_12_16x16_avx2 : 47.8
    vvc_avg_12_16x32_c : 7373.1
    vvc_avg_12_16x32_avx2 : 80.8
    vvc_avg_12_16x64_c : 15046.3
    vvc_avg_12_16x64_avx2 : 621.1
    vvc_avg_12_16x128_c : 52574.6
    vvc_avg_12_16x128_avx2 : 1417.1
    vvc_avg_12_32x2_c : 1712.1
    vvc_avg_12_32x2_avx2 : 29.8
    vvc_avg_12_32x4_c : 2036.8
    vvc_avg_12_32x4_avx2 : 37.6
    vvc_avg_12_32x8_c : 4017.6
    vvc_avg_12_32x8_avx2 : 44.1
    vvc_avg_12_32x16_c : 8018.6
    vvc_avg_12_32x16_avx2 : 70.8
    vvc_avg_12_32x32_c : 15637.6
    vvc_avg_12_32x32_avx2 : 124.3
    vvc_avg_12_32x64_c : 31143.3
    vvc_avg_12_32x64_avx2 : 830.3
    vvc_avg_12_32x128_c : 75706.8
    vvc_avg_12_32x128_avx2 : 1604.8
    vvc_avg_12_64x2_c : 3230.3
    vvc_avg_12_64x2_avx2 : 33.6
    vvc_avg_12_64x4_c : 4139.6
    vvc_avg_12_64x4_avx2 : 45.1
    vvc_avg_12_64x8_c : 8201.6
    vvc_avg_12_64x8_avx2 : 67.1
    vvc_avg_12_64x16_c : 25632.3
    vvc_avg_12_64x16_avx2 : 110.3
    vvc_avg_12_64x32_c : 30744.3
    vvc_avg_12_64x32_avx2 : 200.3
    vvc_avg_12_64x64_c : 105554.8
    vvc_avg_12_64x64_avx2 : 1325.6
    vvc_avg_12_64x128_c : 235254.3
    vvc_avg_12_64x128_avx2 : 3132.6
    vvc_avg_12_128x2_c : 6194.3
    vvc_avg_12_128x2_avx2 : 55.1
    vvc_avg_12_128x4_c : 7583.8
    vvc_avg_12_128x4_avx2 : 79.3
    vvc_avg_12_128x8_c : 14635.6
    vvc_avg_12_128x8_avx2 : 104.3
    vvc_avg_12_128x16_c : 29270.8
    vvc_avg_12_128x16_avx2 : 194.3
    vvc_avg_12_128x32_c : 60113.6
    vvc_avg_12_128x32_avx2 : 346.3
    vvc_avg_12_128x64_c : 197030.3
    vvc_avg_12_128x64_avx2 : 2779.6
    vvc_avg_12_128x128_c : 432809.6
    vvc_avg_12_128x128_avx2 : 5513.3
    vvc_w_avg_8_2x2_c : 84.3
    vvc_w_avg_8_2x2_avx2 : 42.6
    vvc_w_avg_8_2x4_c : 156.3
    vvc_w_avg_8_2x4_avx2 : 58.8
    vvc_w_avg_8_2x8_c : 310.6
    vvc_w_avg_8_2x8_avx2 : 73.1
    vvc_w_avg_8_2x16_c : 942.1
    vvc_w_avg_8_2x16_avx2 : 113.3
    vvc_w_avg_8_2x32_c : 1098.8
    vvc_w_avg_8_2x32_avx2 : 202.6
    vvc_w_avg_8_2x64_c : 2414.3
    vvc_w_avg_8_2x64_avx2 : 467.6
    vvc_w_avg_8_2x128_c : 4763.8
    vvc_w_avg_8_2x128_avx2 : 1333.1
    vvc_w_avg_8_4x2_c : 140.1
    vvc_w_avg_8_4x2_avx2 : 49.8
    vvc_w_avg_8_4x4_c : 276.3
    vvc_w_avg_8_4x4_avx2 : 58.1
    vvc_w_avg_8_4x8_c : 524.3
    vvc_w_avg_8_4x8_avx2 : 72.3
    vvc_w_avg_8_4x16_c : 1108.1
    vvc_w_avg_8_4x16_avx2 : 111.8
    vvc_w_avg_8_4x32_c : 2149.8
    vvc_w_avg_8_4x32_avx2 : 199.6
    vvc_w_avg_8_4x64_c : 12288.1
    vvc_w_avg_8_4x64_avx2 : 509.3
    vvc_w_avg_8_4x128_c : 8398.6
    vvc_w_avg_8_4x128_avx2 : 1319.6
    vvc_w_avg_8_8x2_c : 271.1
    vvc_w_avg_8_8x2_avx2 : 44.1
    vvc_w_avg_8_8x4_c : 503.3
    vvc_w_avg_8_8x4_avx2 : 61.8
    vvc_w_avg_8_8x8_c : 1031.1
    vvc_w_avg_8_8x8_avx2 : 93.8
    vvc_w_avg_8_8x16_c : 2009.8
    vvc_w_avg_8_8x16_avx2 : 163.1
    vvc_w_avg_8_8x32_c : 4161.3
    vvc_w_avg_8_8x32_avx2 : 292.1
    vvc_w_avg_8_8x64_c : 7940.6
    vvc_w_avg_8_8x64_avx2 : 592.1
    vvc_w_avg_8_8x128_c : 16802.3
    vvc_w_avg_8_8x128_avx2 : 1287.6
    vvc_w_avg_8_16x2_c : 762.6
    vvc_w_avg_8_16x2_avx2 : 53.6
    vvc_w_avg_8_16x4_c : 1486.3
    vvc_w_avg_8_16x4_avx2 : 67.1
    vvc_w_avg_8_16x8_c : 1907.8
    vvc_w_avg_8_16x8_avx2 : 96.8
    vvc_w_avg_8_16x16_c : 3883.6
    vvc_w_avg_8_16x16_avx2 : 151.3
    vvc_w_avg_8_16x32_c : 7974.8
    vvc_w_avg_8_16x32_avx2 : 285.8
    vvc_w_avg_8_16x64_c : 25160.6
    vvc_w_avg_8_16x64_avx2 : 589.8
    vvc_w_avg_8_16x128_c : 58328.1
    vvc_w_avg_8_16x128_avx2 : 1169.8
    vvc_w_avg_8_32x2_c : 1009.1
    vvc_w_avg_8_32x2_avx2 : 65.6
    vvc_w_avg_8_32x4_c : 2091.1
    vvc_w_avg_8_32x4_avx2 : 96.8
    vvc_w_avg_8_32x8_c : 3997.8
    vvc_w_avg_8_32x8_avx2 : 156.3
    vvc_w_avg_8_32x16_c : 8216.8
    vvc_w_avg_8_32x16_avx2 : 269.6
    vvc_w_avg_8_32x32_c : 21746.1
    vvc_w_avg_8_32x32_avx2 : 635.3
    vvc_w_avg_8_32x64_c : 31564.8
    vvc_w_avg_8_32x64_avx2 : 1010.6
    vvc_w_avg_8_32x128_c : 114373.3
    vvc_w_avg_8_32x128_avx2 : 2013.6
    vvc_w_avg_8_64x2_c : 2067.3
    vvc_w_avg_8_64x2_avx2 : 97.6
    vvc_w_avg_8_64x4_c : 3901.1
    vvc_w_avg_8_64x4_avx2 : 154.8
    vvc_w_avg_8_64x8_c : 7911.6
    vvc_w_avg_8_64x8_avx2 : 268.8
    vvc_w_avg_8_64x16_c : 16508.8
    vvc_w_avg_8_64x16_avx2 : 501.8
    vvc_w_avg_8_64x32_c : 38770.3
    vvc_w_avg_8_64x32_avx2 : 1287.6
    vvc_w_avg_8_64x64_c : 110350.6
    vvc_w_avg_8_64x64_avx2 : 1890.8
    vvc_w_avg_8_64x128_c : 141354.6
    vvc_w_avg_8_64x128_avx2 : 3839.6
    vvc_w_avg_8_128x2_c : 7012.1
    vvc_w_avg_8_128x2_avx2 : 159.3
    vvc_w_avg_8_128x4_c : 8146.8
    vvc_w_avg_8_128x4_avx2 : 272.6
    vvc_w_avg_8_128x8_c : 24596.8
    vvc_w_avg_8_128x8_avx2 : 501.1
    vvc_w_avg_8_128x16_c : 35918.1
    vvc_w_avg_8_128x16_avx2 : 948.8
    vvc_w_avg_8_128x32_c : 68799.6
    vvc_w_avg_8_128x32_avx2 : 1963.1
    vvc_w_avg_8_128x64_c : 133862.1
    vvc_w_avg_8_128x64_avx2 : 3833.6
    vvc_w_avg_8_128x128_c : 348427.8
    vvc_w_avg_8_128x128_avx2 : 7682.8
    vvc_w_avg_10_2x2_c : 118.6
    vvc_w_avg_10_2x2_avx2 : 73.1
    vvc_w_avg_10_2x4_c : 189.1
    vvc_w_avg_10_2x4_avx2 : 89.3
    vvc_w_avg_10_2x8_c : 382.8
    vvc_w_avg_10_2x8_avx2 : 179.8
    vvc_w_avg_10_2x16_c : 658.3
    vvc_w_avg_10_2x16_avx2 : 185.1
    vvc_w_avg_10_2x32_c : 1409.3
    vvc_w_avg_10_2x32_avx2 : 290.8
    vvc_w_avg_10_2x64_c : 2906.8
    vvc_w_avg_10_2x64_avx2 : 793.1
    vvc_w_avg_10_2x128_c : 6292.6
    vvc_w_avg_10_2x128_avx2 : 1696.8
    vvc_w_avg_10_4x2_c : 178.8
    vvc_w_avg_10_4x2_avx2 : 80.1
    vvc_w_avg_10_4x4_c : 581.6
    vvc_w_avg_10_4x4_avx2 : 97.6
    vvc_w_avg_10_4x8_c : 693.3
    vvc_w_avg_10_4x8_avx2 : 128.1
    vvc_w_avg_10_4x16_c : 1436.6
    vvc_w_avg_10_4x16_avx2 : 179.8
    vvc_w_avg_10_4x32_c : 2409.1
    vvc_w_avg_10_4x32_avx2 : 292.3
    vvc_w_avg_10_4x64_c : 4925.3
    vvc_w_avg_10_4x64_avx2 : 746.1
    vvc_w_avg_10_4x128_c : 10664.6
    vvc_w_avg_10_4x128_avx2 : 1647.6
    vvc_w_avg_10_8x2_c : 359.3
    vvc_w_avg_10_8x2_avx2 : 80.1
    vvc_w_avg_10_8x4_c : 925.6
    vvc_w_avg_10_8x4_avx2 : 97.6
    vvc_w_avg_10_8x8_c : 1360.6
    vvc_w_avg_10_8x8_avx2 : 121.8
    vvc_w_avg_10_8x16_c : 3490.3
    vvc_w_avg_10_8x16_avx2 : 203.3
    vvc_w_avg_10_8x32_c : 5266.1
    vvc_w_avg_10_8x32_avx2 : 325.8
    vvc_w_avg_10_8x64_c : 11127.1
    vvc_w_avg_10_8x64_avx2 : 747.8
    vvc_w_avg_10_8x128_c : 31058.3
    vvc_w_avg_10_8x128_avx2 : 1424.6
    vvc_w_avg_10_16x2_c : 624.8
    vvc_w_avg_10_16x2_avx2 : 84.6
    vvc_w_avg_10_16x4_c : 1389.6
    vvc_w_avg_10_16x4_avx2 : 109.1
    vvc_w_avg_10_16x8_c : 2688.3
    vvc_w_avg_10_16x8_avx2 : 137.1
    vvc_w_avg_10_16x16_c : 5387.1
    vvc_w_avg_10_16x16_avx2 : 224.6
    vvc_w_avg_10_16x32_c : 10776.3
    vvc_w_avg_10_16x32_avx2 : 312.1
    vvc_w_avg_10_16x64_c : 18069.1
    vvc_w_avg_10_16x64_avx2 : 858.6
    vvc_w_avg_10_16x128_c : 43460.3
    vvc_w_avg_10_16x128_avx2 : 1411.6
    vvc_w_avg_10_32x2_c : 1232.8
    vvc_w_avg_10_32x2_avx2 : 99.1
    vvc_w_avg_10_32x4_c : 4017.6
    vvc_w_avg_10_32x4_avx2 : 134.1
    vvc_w_avg_10_32x8_c : 9306.3
    vvc_w_avg_10_32x8_avx2 : 208.1
    vvc_w_avg_10_32x16_c : 8424.6
    vvc_w_avg_10_32x16_avx2 : 349.3
    vvc_w_avg_10_32x32_c : 20787.8
    vvc_w_avg_10_32x32_avx2 : 655.3
    vvc_w_avg_10_32x64_c : 40972.1
    vvc_w_avg_10_32x64_avx2 : 904.8
    vvc_w_avg_10_32x128_c : 85670.3
    vvc_w_avg_10_32x128_avx2 : 1751.6
    vvc_w_avg_10_64x2_c : 2454.1
    vvc_w_avg_10_64x2_avx2 : 132.6
    vvc_w_avg_10_64x4_c : 5012.6
    vvc_w_avg_10_64x4_avx2 : 215.6
    vvc_w_avg_10_64x8_c : 10811.3
    vvc_w_avg_10_64x8_avx2 : 361.1
    vvc_w_avg_10_64x16_c : 33349.1
    vvc_w_avg_10_64x16_avx2 : 904.1
    vvc_w_avg_10_64x32_c : 41892.3
    vvc_w_avg_10_64x32_avx2 : 1220.6
    vvc_w_avg_10_64x64_c : 66983.3
    vvc_w_avg_10_64x64_avx2 : 2622.1
    vvc_w_avg_10_64x128_c : 246508.8
    vvc_w_avg_10_64x128_avx2 : 3316.8
    vvc_w_avg_10_128x2_c : 7791.6
    vvc_w_avg_10_128x2_avx2 : 198.8
    vvc_w_avg_10_128x4_c : 10534.3
    vvc_w_avg_10_128x4_avx2 : 337.3
    vvc_w_avg_10_128x8_c : 21142.3
    vvc_w_avg_10_128x8_avx2 : 614.8
    vvc_w_avg_10_128x16_c : 40968.6
    vvc_w_avg_10_128x16_avx2 : 1160.6
    vvc_w_avg_10_128x32_c : 113043.3
    vvc_w_avg_10_128x32_avx2 : 1644.6
    vvc_w_avg_10_128x64_c : 230658.3
    vvc_w_avg_10_128x64_avx2 : 5065.3
    vvc_w_avg_10_128x128_c : 335236.3
    vvc_w_avg_10_128x128_avx2 : 6450.3
    vvc_w_avg_12_2x2_c : 185.3
    vvc_w_avg_12_2x2_avx2 : 43.6
    vvc_w_avg_12_2x4_c : 340.3
    vvc_w_avg_12_2x4_avx2 : 55.8
    vvc_w_avg_12_2x8_c : 632.3
    vvc_w_avg_12_2x8_avx2 : 70.1
    vvc_w_avg_12_2x16_c : 728.3
    vvc_w_avg_12_2x16_avx2 : 108.1
    vvc_w_avg_12_2x32_c : 1392.6
    vvc_w_avg_12_2x32_avx2 : 176.8
    vvc_w_avg_12_2x64_c : 2618.3
    vvc_w_avg_12_2x64_avx2 : 757.3
    vvc_w_avg_12_2x128_c : 6408.8
    vvc_w_avg_12_2x128_avx2 : 1435.1
    vvc_w_avg_12_4x2_c : 349.3
    vvc_w_avg_12_4x2_avx2 : 44.3
    vvc_w_avg_12_4x4_c : 607.1
    vvc_w_avg_12_4x4_avx2 : 52.6
    vvc_w_avg_12_4x8_c : 1134.8
    vvc_w_avg_12_4x8_avx2 : 70.1
    vvc_w_avg_12_4x16_c : 1378.1
    vvc_w_avg_12_4x16_avx2 : 115.3
    vvc_w_avg_12_4x32_c : 2599.3
    vvc_w_avg_12_4x32_avx2 : 174.3
    vvc_w_avg_12_4x64_c : 4474.8
    vvc_w_avg_12_4x64_avx2 : 656.1
    vvc_w_avg_12_4x128_c : 11319.6
    vvc_w_avg_12_4x128_avx2 : 1373.1
    vvc_w_avg_12_8x2_c : 595.8
    vvc_w_avg_12_8x2_avx2 : 44.3
    vvc_w_avg_12_8x4_c : 1164.3
    vvc_w_avg_12_8x4_avx2 : 56.6
    vvc_w_avg_12_8x8_c : 2019.6
    vvc_w_avg_12_8x8_avx2 : 80.1
    vvc_w_avg_12_8x16_c : 4071.6
    vvc_w_avg_12_8x16_avx2 : 139.3
    vvc_w_avg_12_8x32_c : 4485.1
    vvc_w_avg_12_8x32_avx2 : 250.6
    vvc_w_avg_12_8x64_c : 8404.8
    vvc_w_avg_12_8x64_avx2 : 735.8
    vvc_w_avg_12_8x128_c : 35679.8
    vvc_w_avg_12_8x128_avx2 : 1252.6
    vvc_w_avg_12_16x2_c : 1114.8
    vvc_w_avg_12_16x2_avx2 : 46.6
    vvc_w_avg_12_16x4_c : 2240.1
    vvc_w_avg_12_16x4_avx2 : 62.6
    vvc_w_avg_12_16x8_c : 13174.6
    vvc_w_avg_12_16x8_avx2 : 88.6
    vvc_w_avg_12_16x16_c : 5334.6
    vvc_w_avg_12_16x16_avx2 : 144.3
    vvc_w_avg_12_16x32_c : 8378.1
    vvc_w_avg_12_16x32_avx2 : 234.6
    vvc_w_avg_12_16x64_c : 21300.8
    vvc_w_avg_12_16x64_avx2 : 761.8
    vvc_w_avg_12_16x128_c : 32786.8
    vvc_w_avg_12_16x128_avx2 : 1432.8
    vvc_w_avg_12_32x2_c : 2154.3
    vvc_w_avg_12_32x2_avx2 : 61.1
    vvc_w_avg_12_32x4_c : 4299.8
    vvc_w_avg_12_32x4_avx2 : 83.1
    vvc_w_avg_12_32x8_c : 7964.8
    vvc_w_avg_12_32x8_avx2 : 132.6
    vvc_w_avg_12_32x16_c : 13321.6
    vvc_w_avg_12_32x16_avx2 : 234.6
    vvc_w_avg_12_32x32_c : 21149.3
    vvc_w_avg_12_32x32_avx2 : 433.3
    vvc_w_avg_12_32x64_c : 43666.6
    vvc_w_avg_12_32x64_avx2 : 876.6
    vvc_w_avg_12_32x128_c : 83189.8
    vvc_w_avg_12_32x128_avx2 : 1756.6
    vvc_w_avg_12_64x2_c : 3829.8
    vvc_w_avg_12_64x2_avx2 : 83.1
    vvc_w_avg_12_64x4_c : 8588.1
    vvc_w_avg_12_64x4_avx2 : 127.1
    vvc_w_avg_12_64x8_c : 17027.6
    vvc_w_avg_12_64x8_avx2 : 310.6
    vvc_w_avg_12_64x16_c : 29797.8
    vvc_w_avg_12_64x16_avx2 : 415.6
    vvc_w_avg_12_64x32_c : 43854.3
    vvc_w_avg_12_64x32_avx2 : 773.3
    vvc_w_avg_12_64x64_c : 137767.3
    vvc_w_avg_12_64x64_avx2 : 1608.6
    vvc_w_avg_12_64x128_c : 316428.3
    vvc_w_avg_12_64x128_avx2 : 3249.8
    vvc_w_avg_12_128x2_c : 8824.6
    vvc_w_avg_12_128x2_avx2 : 130.3
    vvc_w_avg_12_128x4_c : 17173.6
    vvc_w_avg_12_128x4_avx2 : 219.3
    vvc_w_avg_12_128x8_c : 21997.8
    vvc_w_avg_12_128x8_avx2 : 397.3
    vvc_w_avg_12_128x16_c : 43553.8
    vvc_w_avg_12_128x16_avx2 : 790.1
    vvc_w_avg_12_128x32_c : 89792.1
    vvc_w_avg_12_128x32_avx2 : 1497.6
    vvc_w_avg_12_128x64_c : 226573.3
    vvc_w_avg_12_128x64_avx2 : 3153.1
    vvc_w_avg_12_128x128_c : 332090.1
    vvc_w_avg_12_128x128_avx2 : 6499.6

    Signed-off-by : Wu Jianhua <toqsxw@outlook.com>

    • [DH] libavcodec/x86/vvc/Makefile
    • [DH] libavcodec/x86/vvc/vvc_mc.asm
    • [DH] libavcodec/x86/vvc/vvcdsp_init.c