Recherche avancée

Médias (1)

Mot : - Tags -/getid3

Autres articles (64)

  • La file d’attente de SPIPmotion

    28 novembre 2010, par

    Une file d’attente stockée dans la base de donnée
    Lors de son installation, SPIPmotion crée une nouvelle table dans la base de donnée intitulée spip_spipmotion_attentes.
    Cette nouvelle table est constituée des champs suivants : id_spipmotion_attente, l’identifiant numérique unique de la tâche à traiter ; id_document, l’identifiant numérique du document original à encoder ; id_objet l’identifiant unique de l’objet auquel le document encodé devra être attaché automatiquement ; objet, le type d’objet auquel (...)

  • La sauvegarde automatique de canaux SPIP

    1er avril 2010, par

    Dans le cadre de la mise en place d’une plateforme ouverte, il est important pour les hébergeurs de pouvoir disposer de sauvegardes assez régulières pour parer à tout problème éventuel.
    Pour réaliser cette tâche on se base sur deux plugins SPIP : Saveauto qui permet une sauvegarde régulière de la base de donnée sous la forme d’un dump mysql (utilisable dans phpmyadmin) mes_fichiers_2 qui permet de réaliser une archive au format zip des données importantes du site (les documents, les éléments (...)

  • Script d’installation automatique de MediaSPIP

    25 avril 2011, par

    Afin de palier aux difficultés d’installation dues principalement aux dépendances logicielles coté serveur, un script d’installation "tout en un" en bash a été créé afin de faciliter cette étape sur un serveur doté d’une distribution Linux compatible.
    Vous devez bénéficier d’un accès SSH à votre serveur et d’un compte "root" afin de l’utiliser, ce qui permettra d’installer les dépendances. Contactez votre hébergeur si vous ne disposez pas de cela.
    La documentation de l’utilisation du script d’installation (...)

Sur d’autres sites (7989)

  • Heroic Defender of the Stack

    27 janvier 2011, par Multimedia Mike — Programming

    Problem Statement

    I have been investigating stack smashing and countermeasures (stack smashing prevention, or SSP). Briefly, stack smashing occurs when a function allocates a static array on the stack and writes past the end of it, onto other local variables and eventually onto other function stack frames. When it comes time to return from the function, the return address has been corrupted and the program ends up some place it really shouldn’t. In the best case, the program just crashes ; in the worst case, a malicious party crafts code to exploit this malfunction.

    Further, debugging such a problem is especially obnoxious because by the time the program has crashed, it has already trashed any record (on the stack) of how it got into the errant state.

    Preventative Countermeasure

    GCC has had SSP since version 4.1. The computer inserts SSP as additional code when the -fstack-protector command line switch is specified. Implementation-wise, SSP basically inserts a special value (the literature refers to this as the ’canary’ as in "canary in the coalmine") at the top of the stack frame when entering the function, and code before leaving the function to make sure the canary didn’t get stepped on. If something happens to the canary, the program is immediately aborted with a message to stderr about what happened. Further, gcc’s man page on my Ubuntu machine proudly trumpets that this functionality is enabled per default ever since Ubuntu 6.10.

    And that’s really all there is to it. Your code is safe from stack smashing by default. Or so the hand-wavy documentation would have you believe.

    Not exactly

    Exercising the SSP

    I wanted to see the SSP in action to make sure it was a real thing. So I wrote some code that smashes the stack in pretty brazen ways so that I could reasonably expect to trigger the SSP (see later in this post for the code). Here’s what I learned that wasn’t in any documentation :

    SSP is only emitted for functions that have static arrays of 8-bit data (i.e., [unsigned] chars). If you have static arrays of other data types (like, say, 32-bit ints), those are still fair game for stack smashing.

    Evaluating the security vs. speed/code size trade-offs, it makes sense that the compiler wouldn’t apply this protection everywhere (I can only muse about how my optimization-obsessive multimedia hacking colleagues would absolute freak out if this code were unilaterally added to all functions). So why are only static char arrays deemed to be "vulnerable objects" (the wording that the gcc man page uses) ? A security hacking colleague suggested that this is probably due to the fact that the kind of data which poses the highest risk is arrays of 8-bit input data from, e.g., network sources.

    The gcc man page also lists an option -fstack-protector-all that is supposed to protect all functions. The man page’s definition of "all functions" perhaps differs from my own since invoking the option does not have differ in result from plain, vanilla -fstack-protector.

    The Valgrind Connection

    "Memory trouble ? Run Valgrind !" That may as well be Valgrind’s marketing slogan. Indeed, it’s the go-to utility for finding troublesome memory-related problems and has saved me on a number of occasions. However, it must be noted that it is useless for debugging this type of problem. If you understand how Valgrind works, this makes perfect sense. Valgrind operates by watching all memory accesses and ensuring that the program is only accessing memory to which it has privileges. In the stack smashing scenario, the program is fully allowed to write to that stack space ; after all, the program recently, legitimately pushed that return value onto the stack when calling the errant, stack smashing function.

    Valgrind embodies a suite of tools. My idea for an addition to this suite would be a mechanism which tracks return values every time a call instruction is encountered. The tool could track the return values in a separate stack data structure, though this might have some thorny consequences for some more unusual program flows. Instead, it might track them in some kind of hash/dictionary data structure and warn the programmer whenever a ’ret’ instruction is returning to an address that isn’t in the dictionary.

    Simple Stack Smashing Code

    Here’s the code I wrote to test exactly how SSP gets invoked in gcc. Compile with ’gcc -g -O0 -Wall -fstack-protector-all -Wstack-protector stack-fun.c -o stack-fun’.

    stack-fun.c :

    C :
    1. /* keep outside of the stack frame */
    2. static int i ;
    3.  
    4. void stack_smasher32(void)
    5. {
    6.  int buffer32[8] ;
    7.  // uncomment this array and compile without optimizations
    8.  // in order to force this function to compile with SSP
    9. // char buffer_to_trigger_ssp[8] ;
    10.  
    11.  for (i = 0 ; i <50 ; i++)
    12.   buffer32[i] = 0xA5 ;
    13. }
    14.  
    15. void stack_smasher8(void)
    16. {
    17.  char buffer8[8] ;
    18.  for (i = 0 ; i <50 ; i++)
    19.   buffer8[i] = 0xA5 ;
    20. }
    21.  
    22. int main()
    23. {
    24. // stack_smasher8() ;
    25.  stack_smasher32() ;
    26.  return 0 ;
    27. }

    The above incarnation should just produce the traditional "Segmentation fault". However, uncommenting and executing stack_smasher8() in favor of stack_smasher32() should result in "*** stack smashing detected *** : ./stack-fun terminated", followed by the venerable "Segmentation fault".

    As indicated in the comments for stack_smasher32(), it’s possible to trick the compiler into emitting SSP for a function by inserting an array of at least 8 bytes (any less and SSP won’t emit, as documented, unless gcc’s ssp-buffer-size parameter is tweaked). This has to be compiled with no optimization at all (-O0) or else the compiler will (quite justifiably) optimize away the unused buffer and omit SSP.

    For reference, I ran my tests on Ubuntu 10.04.1 with gcc 4.4.3 compiling the code for both x86_32 and x86_64.

  • FFMPEG Square video record issue in android ?

    20 avril 2017, par Mahesh

    When I start an android activity i get the following exception.
    I have tried many things to solve the problem without success.

    I am using the following github library for square video record :

    • https://github.com/sourab-sharma/TouchToRecord

      compile group: 'org.bytedeco', name: 'javacpp', version: '1.3.2'
      compile group: 'org.bytedeco', name: 'javacv', version: '1.3.2'
      compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '3.2.0-1.3', classifier: 'android-arm'
      compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '3.2.0-1.3', classifier: 'android-x86'
      compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '3.2.1-1.3', classifier: 'android-arm'
      compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '3.2.1-1.3', classifier: 'android-x86'
      compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '3.2.0-1.3'
      compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '3.2.1-1.3'

    Here is the exception :

    04-20 17:53:15.433 30736-30792/com.sourab.videorecorder E/javacpp: Error getting static method ID of org/bytedeco/javacpp/Loader/putMemberOffset
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410] JNI DETECTED ERROR IN APPLICATION: JNI NewGlobalRef called with pending exception java.lang.NoSuchMethodError: no static method "Lorg/bytedeco/javacpp/Loader;.putMemberOffset(Ljava/lang/String;Ljava/lang/String;I)V"
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader, java.lang.String) (Runtime.java:-2)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at java.lang.String java.lang.Runtime.doLoad(java.lang.String, java.lang.ClassLoader) (Runtime.java:435)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at void java.lang.Runtime.loadLibrary(java.lang.String, java.lang.ClassLoader) (Runtime.java:370)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at void java.lang.System.loadLibrary(java.lang.String) (System.java:1076)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at java.lang.String org.bytedeco.javacpp.Loader.loadLibrary(java.net.URL[], java.lang.String) (Loader.java:963)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at java.lang.String org.bytedeco.javacpp.Loader.load(java.lang.Class, java.util.Properties, boolean) (Loader.java:764)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at java.lang.String org.bytedeco.javacpp.Loader.load() (Loader.java:671)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at void org.bytedeco.javacpp.avutil.<clinit>() (avutil.java:10)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at java.lang.Class java.lang.Class.classForName!(java.lang.String, boolean, java.lang.ClassLoader) (Class.java:-2)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at java.lang.Class java.lang.Class.forName(java.lang.String, boolean, java.lang.ClassLoader) (Class.java:324)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at java.lang.String org.bytedeco.javacpp.Loader.load(java.lang.Class, java.util.Properties, boolean) (Loader.java:726)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at java.lang.String org.bytedeco.javacpp.Loader.load(java.lang.Class) (Loader.java:687)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at void com.sourab.videorecorder.FFmpegFrameRecorder.tryLoad() (FFmpegFrameRecorder.java:110)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at void com.sourab.videorecorder.FFmpegFrameRecorder.<clinit>() (FFmpegFrameRecorder.java:131)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at void com.sourab.videorecorder.FFmpegRecorderActivity.initVideoRecorder() (FFmpegRecorderActivity.java:404)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at void com.sourab.videorecorder.FFmpegRecorderActivity.access$1700(com.sourab.videorecorder.FFmpegRecorderActivity) (FFmpegRecorderActivity.java:68)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at java.lang.Boolean com.sourab.videorecorder.FFmpegRecorderActivity$2.doInBackground(java.lang.String[]) (FFmpegRecorderActivity.java:314)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at java.lang.Object com.sourab.videorecorder.FFmpegRecorderActivity$2.doInBackground(java.lang.Object[]) (FFmpegRecorderActivity.java:308)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at java.lang.Object android.os.AsyncTask$2.call() (AsyncTask.java:295)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at void java.util.concurrent.FutureTask.run() (FutureTask.java:237)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at void android.os.AsyncTask$SerialExecutor$1.run() (AsyncTask.java:234)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at void java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) (ThreadPoolExecutor.java:1113)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at void java.util.concurrent.ThreadPoolExecutor$Worker.run() (ThreadPoolExecutor.java:588)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at void java.lang.Thread.run() (Thread.java:818)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]     in call to NewGlobalRef
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]     from java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader, java.lang.String)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410] "AsyncTask #1" prio=5 tid=10 Runnable
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   | group="main" sCount=0 dsCount=0 obj=0x12ce51c0 self=0xb87a5470
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   | sysTid=30792 nice=10 cgrp=bg_non_interactive sched=0/0 handle=0xa37f9930
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   | state=R schedstat=( 0 0 0 ) utm=11 stm=6 core=3 HZ=100
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   | stack=0xa36f7000-0xa36f9000 stackSize=1038KB
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   | held mutexes= "mutator lock"(shared held)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   native: #00 pc 00370c01  /system/lib/libart.so (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiPKcPNS_9ArtMethodEPv+160)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   native: #01 pc 0035054b  /system/lib/libart.so (_ZNK3art6Thread4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+150)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   native: #02 pc 0025a50d  /system/lib/libart.so (_ZN3art9JavaVMExt8JniAbortEPKcS2_+740)
    04-20 17:53:15.511 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   native: #03 pc 0025abe5  /system/lib/libart.so (_ZN3art9JavaVMExt9JniAbortVEPKcS2_St9__va_list+64)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   native: #04 pc 000fd2e1  /system/lib/libart.so (_ZN3art11ScopedCheck6AbortFEPKcz+32)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   native: #05 pc 001023f5  /system/lib/libart.so (_ZN3art11ScopedCheck5CheckERNS_18ScopedObjectAccessEbPKcPNS_12JniValueTypeE.constprop.95+5072)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   native: #06 pc 001147e1  /system/lib/libart.so (_ZN3art8CheckJNI12NewGlobalRefEP7_JNIEnvP8_jobject+392)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   native: #07 pc 0034918b  /system/lib/libart.so (_ZN3art6Thread22SetClassLoaderOverrideEP8_jobject+38)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   native: #08 pc 0025b1a3  /system/lib/libart.so (_ZN3art9JavaVMExt17LoadNativeLibraryEP7_JNIEnvRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEP8_jobjectPS9_+1290)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   native: #09 pc 002d1427  /system/lib/libart.so (_ZN3artL18Runtime_nativeLoadEP7_JNIEnvP7_jclassP8_jstringP8_jobjectS5_+194)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   native: #10 pc 00212035  /data/dalvik-cache/arm/system@framework@boot.oat (Java_java_lang_Runtime_nativeLoad__Ljava_lang_String_2Ljava_lang_ClassLoader_2Ljava_lang_String_2+144)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at java.lang.Runtime.nativeLoad(Native method)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at java.lang.Runtime.doLoad(Runtime.java:435)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   - locked &lt;0x0cbcf61e> (a java.lang.Runtime)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at java.lang.Runtime.loadLibrary(Runtime.java:370)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at java.lang.System.loadLibrary(System.java:1076)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:963)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at org.bytedeco.javacpp.Loader.load(Loader.java:764)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at org.bytedeco.javacpp.Loader.load(Loader.java:671)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at org.bytedeco.javacpp.avutil.<clinit>(avutil.java:10)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at java.lang.Class.classForName!(Native method)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at java.lang.Class.forName(Class.java:324)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at org.bytedeco.javacpp.Loader.load(Loader.java:726)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at org.bytedeco.javacpp.Loader.load(Loader.java:687)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at com.sourab.videorecorder.FFmpegFrameRecorder.tryLoad(FFmpegFrameRecorder.java:110)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at com.sourab.videorecorder.FFmpegFrameRecorder.<clinit>(FFmpegFrameRecorder.java:131)
    04-20 17:53:15.512 30736-30792/com.sourab.videorecorder A/art: art/runtime/java_vm_ext.cc:410]   at com.sourab.videorecorder.FFmpegRecorderActivity.initVideoRecorder(FFmpegRecorderActivity.java:404)
    </clinit></clinit></clinit></clinit>
  • avcodec/riscv : add h264 qpel

    25 septembre 2024, par Niklas Haas
    avcodec/riscv : add h264 qpel
    

    Benched on K230 for VLEN 128, SpaceMIT for VLEN 256. Variants for 4
    width have no speedup for VLEN 256 vs VLEN 128 on available hardware,
    so were disabled.

    C RVV128 C RVV256
    avg_h264_qpel_4_mc00_8 33.9 33.6 (1.01x)
    avg_h264_qpel_4_mc01_8 218.8 89.1 (2.46x)
    avg_h264_qpel_4_mc02_8 218.8 79.8 (2.74x)
    avg_h264_qpel_4_mc03_8 218.8 89.1 (2.46x)
    avg_h264_qpel_4_mc10_8 172.3 126.1 (1.37x)
    avg_h264_qpel_4_mc11_8 339.1 190.8 (1.78x)
    avg_h264_qpel_4_mc12_8 533.6 357.6 (1.49x)
    avg_h264_qpel_4_mc13_8 348.4 190.8 (1.83x)
    avg_h264_qpel_4_mc20_8 144.8 116.8 (1.24x)
    avg_h264_qpel_4_mc21_8 478.1 385.6 (1.24x)
    avg_h264_qpel_4_mc22_8 348.4 283.6 (1.23x)
    avg_h264_qpel_4_mc23_8 478.1 394.6 (1.21x)
    avg_h264_qpel_4_mc30_8 172.6 126.1 (1.37x)
    avg_h264_qpel_4_mc31_8 339.4 191.1 (1.78x)
    avg_h264_qpel_4_mc32_8 542.9 357.6 (1.52x)
    avg_h264_qpel_4_mc33_8 339.4 191.1 (1.78x)
    avg_h264_qpel_8_mc00_8 116.8 42.9 (2.72x) 123.6 50.6 (2.44x)
    avg_h264_qpel_8_mc01_8 774.4 163.1 (4.75x) 779.8 165.1 (4.72x)
    avg_h264_qpel_8_mc02_8 774.4 154.1 (5.03x) 779.8 144.3 (5.40x)
    avg_h264_qpel_8_mc03_8 774.4 163.3 (4.74x) 779.8 165.3 (4.72x)
    avg_h264_qpel_8_mc10_8 617.1 237.3 (2.60x) 613.1 227.6 (2.69x)
    avg_h264_qpel_8_mc11_8 1209.3 376.4 (3.21x) 1206.8 363.1 (3.32x)
    avg_h264_qpel_8_mc12_8 1913.3 598.6 (3.20x) 1894.3 561.1 (3.38x)
    avg_h264_qpel_8_mc13_8 1218.6 376.4 (3.24x) 1217.1 363.1 (3.35x)
    avg_h264_qpel_8_mc20_8 524.4 228.1 (2.30x) 519.3 227.6 (2.28x)
    avg_h264_qpel_8_mc21_8 1709.6 681.9 (2.51x) 1707.1 644.3 (2.65x)
    avg_h264_qpel_8_mc22_8 1274.3 459.6 (2.77x) 1279.8 436.1 (2.93x)
    avg_h264_qpel_8_mc23_8 1700.3 672.6 (2.53x) 1706.8 644.6 (2.65x)
    avg_h264_qpel_8_mc30_8 607.6 246.6 (2.46x) 623.6 238.1 (2.62x)
    avg_h264_qpel_8_mc31_8 1209.6 376.4 (3.21x) 1206.8 363.1 (3.32x)
    avg_h264_qpel_8_mc32_8 1904.1 607.9 (3.13x) 1894.3 571.3 (3.32x)
    avg_h264_qpel_8_mc33_8 1209.6 376.1 (3.22x) 1206.8 363.1 (3.32x)
    avg_h264_qpel_16_mc00_8 431.9 89.1 (4.85x) 436.1 71.3 (6.12x)
    avg_h264_qpel_16_mc01_8 2894.6 376.1 (7.70x) 2842.3 300.6 (9.46x)
    avg_h264_qpel_16_mc02_8 2987.3 348.4 (8.57x) 2967.3 290.1 (10.23x)
    avg_h264_qpel_16_mc03_8 2885.3 376.4 (7.67x) 2842.3 300.6 (9.46x)
    avg_h264_qpel_16_mc10_8 2404.1 524.4 (4.58x) 2404.8 456.8 (5.26x)
    avg_h264_qpel_16_mc11_8 4709.4 811.6 (5.80x) 4675.6 706.8 (6.62x)
    avg_h264_qpel_16_mc12_8 7477.9 1274.3 (5.87x) 7436.1 1061.1 (7.01x)
    avg_h264_qpel_16_mc13_8 4718.6 820.6 (5.75x) 4655.1 706.8 (6.59x)
    avg_h264_qpel_16_mc20_8 2052.1 487.1 (4.21x) 2071.3 446.3 (4.64x)
    avg_h264_qpel_16_mc21_8 7440.6 1422.6 (5.23x) 6727.8 1217.3 (5.53x)
    avg_h264_qpel_16_mc22_8 5051.9 950.4 (5.32x) 5071.6 790.3 (6.42x)
    avg_h264_qpel_16_mc23_8 6764.9 1422.3 (4.76x) 6748.6 1217.3 (5.54x)
    avg_h264_qpel_16_mc30_8 2413.1 524.4 (4.60x) 2415.1 467.3 (5.17x)
    avg_h264_qpel_16_mc31_8 4681.6 839.1 (5.58x) 4675.6 727.6 (6.43x)
    avg_h264_qpel_16_mc32_8 8579.6 1292.8 (6.64x) 7436.3 1071.3 (6.94x)
    avg_h264_qpel_16_mc33_8 5375.9 829.9 (6.48x) 4665.3 717.3 (6.50x)
    put_h264_qpel_4_mc00_8 24.4 24.4 (1.00x)
    put_h264_qpel_4_mc01_8 987.4 79.8 (12.37x)
    put_h264_qpel_4_mc02_8 190.8 79.8 (2.39x)
    put_h264_qpel_4_mc03_8 209.6 89.1 (2.35x)
    put_h264_qpel_4_mc10_8 163.3 117.1 (1.39x)
    put_h264_qpel_4_mc11_8 339.4 181.6 (1.87x)
    put_h264_qpel_4_mc12_8 533.6 348.4 (1.53x)
    put_h264_qpel_4_mc13_8 339.4 190.8 (1.78x)
    put_h264_qpel_4_mc20_8 126.3 116.8 (1.08x)
    put_h264_qpel_4_mc21_8 468.9 376.1 (1.25x)
    put_h264_qpel_4_mc22_8 330.1 274.4 (1.20x)
    put_h264_qpel_4_mc23_8 468.9 376.1 (1.25x)
    put_h264_qpel_4_mc30_8 163.3 126.3 (1.29x)
    put_h264_qpel_4_mc31_8 339.1 191.1 (1.77x)
    put_h264_qpel_4_mc32_8 533.6 348.4 (1.53x)
    put_h264_qpel_4_mc33_8 339.4 181.8 (1.87x)
    put_h264_qpel_8_mc00_8 98.6 33.6 (2.93x) 92.3 40.1 (2.30x)
    put_h264_qpel_8_mc01_8 737.1 153.8 (4.79x) 738.1 144.3 (5.12x)
    put_h264_qpel_8_mc02_8 663.1 135.3 (4.90x) 665.1 134.1 (4.96x)
    put_h264_qpel_8_mc03_8 737.4 154.1 (4.79x) 1508.8 144.3 (10.46x)
    put_h264_qpel_8_mc10_8 598.4 237.1 (2.52x) 592.3 227.6 (2.60x)
    put_h264_qpel_8_mc11_8 1172.3 357.9 (3.28x) 1175.6 342.3 (3.43x)
    put_h264_qpel_8_mc12_8 1867.1 589.1 (3.17x) 1863.1 561.1 (3.32x)
    put_h264_qpel_8_mc13_8 1172.6 366.9 (3.20x) 1175.6 352.8 (3.33x)
    put_h264_qpel_8_mc20_8 450.4 218.8 (2.06x) 446.3 206.8 (2.16x)
    put_h264_qpel_8_mc21_8 1672.3 663.1 (2.52x) 1675.6 633.8 (2.64x)
    put_h264_qpel_8_mc22_8 1144.6 1200.1 (0.95x) 1144.3 425.6 (2.69x)
    put_h264_qpel_8_mc23_8 1672.6 672.4 (2.49x) 1665.3 634.1 (2.63x)
    put_h264_qpel_8_mc30_8 598.6 237.3 (2.52x) 613.1 227.6 (2.69x)
    put_h264_qpel_8_mc31_8 1172.3 376.1 (3.12x) 1175.6 352.6 (3.33x)
    put_h264_qpel_8_mc32_8 1857.8 598.6 (3.10x) 1863.1 561.1 (3.32x)
    put_h264_qpel_8_mc33_8 1172.3 376.1 (3.12x) 1175.6 352.8 (3.33x)
    put_h264_qpel_16_mc00_8 320.6 61.4 (5.22x) 321.3 60.8 (5.28x)
    put_h264_qpel_16_mc01_8 2774.3 339.1 (8.18x) 2759.1 279.8 (9.86x)
    put_h264_qpel_16_mc02_8 2589.1 320.6 (8.08x) 2571.6 269.3 (9.55x)
    put_h264_qpel_16_mc03_8 2774.3 339.4 (8.17x) 2738.1 290.1 (9.44x)
    put_h264_qpel_16_mc10_8 2274.3 487.4 (4.67x) 2290.1 436.1 (5.25x)
    put_h264_qpel_16_mc11_8 5237.1 792.9 (6.60x) 4529.8 685.8 (6.61x)
    put_h264_qpel_16_mc12_8 7357.6 1255.8 (5.86x) 7352.8 1040.1 (7.07x)
    put_h264_qpel_16_mc13_8 4579.9 792.9 (5.78x) 4571.6 686.1 (6.66x)
    put_h264_qpel_16_mc20_8 1802.1 459.6 (3.92x) 1800.6 425.6 (4.23x)
    put_h264_qpel_16_mc21_8 6644.6 2246.6 (2.96x) 6644.3 1196.6 (5.55x)
    put_h264_qpel_16_mc22_8 4589.1 913.4 (5.02x) 4592.3 769.3 (5.97x)
    put_h264_qpel_16_mc23_8 6644.6 1394.6 (4.76x) 6634.1 1196.6 (5.54x)
    put_h264_qpel_16_mc30_8 2274.3 496.6 (4.58x) 2290.1 456.8 (5.01x)
    put_h264_qpel_16_mc31_8 5255.6 802.1 (6.55x) 4550.8 706.8 (6.44x)
    put_h264_qpel_16_mc32_8 7376.1 1265.1 (5.83x) 7352.8 1050.6 (7.00x)
    put_h264_qpel_16_mc33_8 4579.9 802.1 (5.71x) 4561.1 696.3 (6.55x)

    Signed-off-by : Niklas Haas <git@haasn.dev>
    Signed-off-by : J. Dekker <jdek@itanimul.li>

    • [DH] libavcodec/h264qpel.c
    • [DH] libavcodec/h264qpel.h
    • [DH] libavcodec/riscv/Makefile
    • [DH] libavcodec/riscv/h264qpel_init.c
    • [DH] libavcodec/riscv/h264qpel_rvv.S