Recherche avancée

Médias (1)

Mot : - Tags -/sintel

Autres articles (17)

  • Contribute to translation

    13 avril 2011

    You can help us to improve the language used in the software interface to make MediaSPIP more accessible and user-friendly. You can also translate the interface into any language that allows it to spread to new linguistic communities.
    To do this, we use the translation interface of SPIP where the all the language modules of MediaSPIP are available. Just subscribe to the mailing list and request further informantion on translation.
    MediaSPIP is currently available in French and English (...)

  • Possibilité de déploiement en ferme

    12 avril 2011, par

    MediaSPIP peut être installé comme une ferme, avec un seul "noyau" hébergé sur un serveur dédié et utilisé par une multitude de sites différents.
    Cela permet, par exemple : de pouvoir partager les frais de mise en œuvre entre plusieurs projets / individus ; de pouvoir déployer rapidement une multitude de sites uniques ; d’éviter d’avoir à mettre l’ensemble des créations dans un fourre-tout numérique comme c’est le cas pour les grandes plate-formes tout public disséminées sur le (...)

  • Ajouter des informations spécifiques aux utilisateurs et autres modifications de comportement liées aux auteurs

    12 avril 2011, par

    La manière la plus simple d’ajouter des informations aux auteurs est d’installer le plugin Inscription3. Il permet également de modifier certains comportements liés aux utilisateurs (référez-vous à sa documentation pour plus d’informations).
    Il est également possible d’ajouter des champs aux auteurs en installant les plugins champs extras 2 et Interface pour champs extras.

Sur d’autres sites (2322)

  • aarch64 : vp9 : Add NEON optimizations of VP9 MC functions

    14 novembre 2016, par Martin Storsjö
    aarch64 : vp9 : Add NEON optimizations of VP9 MC functions
    

    This work is sponsored by, and copyright, Google.

    These are ported from the ARM version ; it is essentially a 1:1
    port with no extra added features, but with some hand tuning
    (especially for the plain copy/avg functions). The ARM version
    isn’t very register starved to begin with, so there’s not much
    to be gained from having more spare registers here - we only
    avoid having to clobber callee-saved registers.

    Examples of runtimes vs the 32 bit version, on a Cortex A53 :
    ARM AArch64
    vp9_avg4_neon : 27.2 23.7
    vp9_avg8_neon : 56.5 54.7
    vp9_avg16_neon : 169.9 167.4
    vp9_avg32_neon : 585.8 585.2
    vp9_avg64_neon : 2460.3 2294.7
    vp9_avg_8tap_smooth_4h_neon : 132.7 125.2
    vp9_avg_8tap_smooth_4hv_neon : 478.8 442.0
    vp9_avg_8tap_smooth_4v_neon : 126.0 93.7
    vp9_avg_8tap_smooth_8h_neon : 241.7 234.2
    vp9_avg_8tap_smooth_8hv_neon : 690.9 646.5
    vp9_avg_8tap_smooth_8v_neon : 245.0 205.5
    vp9_avg_8tap_smooth_64h_neon : 11273.2 11280.1
    vp9_avg_8tap_smooth_64hv_neon : 22980.6 22184.1
    vp9_avg_8tap_smooth_64v_neon : 11549.7 10781.1
    vp9_put4_neon : 18.0 17.2
    vp9_put8_neon : 40.2 37.7
    vp9_put16_neon : 97.4 99.5
    vp9_put32_neon/armv8 : 346.0 307.4
    vp9_put64_neon/armv8 : 1319.0 1107.5
    vp9_put_8tap_smooth_4h_neon : 126.7 118.2
    vp9_put_8tap_smooth_4hv_neon : 465.7 434.0
    vp9_put_8tap_smooth_4v_neon : 113.0 86.5
    vp9_put_8tap_smooth_8h_neon : 229.7 221.6
    vp9_put_8tap_smooth_8hv_neon : 658.9 621.3
    vp9_put_8tap_smooth_8v_neon : 215.0 187.5
    vp9_put_8tap_smooth_64h_neon : 10636.7 10627.8
    vp9_put_8tap_smooth_64hv_neon : 21076.8 21026.9
    vp9_put_8tap_smooth_64v_neon : 9635.0 9632.4

    These are generally about as fast as the corresponding ARM
    routines on the same CPU (at least on the A53), in most cases
    marginally faster.

    The speedup vs C code is pretty much the same as for the 32 bit
    case ; on the A53 it’s around 6-13x for ther larger 8tap filters.
    The exact speedup varies a little, since the C versions generally
    don’t end up exactly as slow/fast as on 32 bit.

    This is an adapted cherry-pick from libav commit
    383d96aa2229f644d9bd77b821ed3a309da5e9fc.

    Signed-off-by : Ronald S. Bultje <rsbultje@gmail.com>

    • [DH] libavcodec/aarch64/Makefile
    • [DH] libavcodec/aarch64/vp9dsp_init_aarch64.c
    • [DH] libavcodec/aarch64/vp9mc_neon.S
    • [DH] libavcodec/vp9.c
    • [DH] libavcodec/vp9dsp.c
    • [DH] libavcodec/vp9dsp.h
  • Merge audio (m4s) segments into one

    20 avril 2022, par akinuri

    I recently started learning Laravel, and currently watching an online course. Online courses are fine, but I like to have local copies, so I'm trying to download/merge segmented audio from Laracasts : Laravel 8 From Scratch series.

    &#xA;

    I've written some scripts (in Python) that does the following :

    &#xA;

      &#xA;
    1. Download the master.json
    2. &#xA;

    3. Read master.json and download audio segments
    4. &#xA;

    5. Merge the segments into a single file (the file is not playable yet)
    6. &#xA;

    7. Process the audio file via ffmpeg (now it's playable, but has issues)
    8. &#xA;

    &#xA;

    I think there's a problem with the step 3 and/or 4.

    &#xA;

    In step/script 3, I create a new file, and add the contents of the segments to the file in binary.

    &#xA;

    Then (step/script 4), run a ffmpeg command in python : ffmpeg -i merged-file.mp4 -c copy processed-file.mp4

    &#xA;

    However, the final file doesn't work/play as expected. There's a delay in the beginning, and some parts seem to be cut off/skipped.

    &#xA;

    There are three possibilities :

    &#xA;

      &#xA;
    • Segment files are problematic (not likely ?)
    • &#xA;

    • I'm doing the merging wrong
    • &#xA;

    • I'm doing the ffmpeg processing wrong
    • &#xA;

    &#xA;

    Can someone guide me here ?

    &#xA;


    &#xA;

    The issues/colored parts in the ffmpeg output are :

    &#xA;

    ...&#xA;[mov,mp4,m4a,3gp,3g2,mj2 @ 000001cfbc0de780] could not find corresponding track id 2&#xA;[mov,mp4,m4a,3gp,3g2,mj2 @ 000001cfbc0de780] could not find corresponding trex (id 2)&#xA;...&#xA;[aac @ 000001cfbc0f0380] Number of bands (31) exceeds limit (6).&#xA;...&#xA;[mp4 @ 000001cfbc20ecc0] track 0: codec frame size is not set&#xA;...&#xA;[mp4 @ 000001cfbc20ecc0] Non-monotonous DTS in output stream 0:0; previous: 318318, current: 286286; changing to 318319. This may result in incorrect timestamps in the output file.&#xA;...&#xA;

    &#xA;

    Everything required for a test case is located in GitHub (akinuri/dump/m4s-segments/). Screenshot of the contents :

    &#xA;

    repo folder contents

    &#xA;


    &#xA;

    Note : there are two types/formats of audio in the master.json : mp42 and dash. dash works as expected, and seem to be used in limited videos/courses. On the other hand, mp42 appears more. So I need a way to make mp42 work.

    &#xA;

  • Adjusting The Timetable and SQL Shame

    16 août 2012, par Multimedia Mike — General, Python, sql

    My Game Music Appreciation website has a big problem that many visitors quickly notice and comment upon. The problem looks like this :



    The problem is that all of these songs are 2m30s in length. During the initial import process, unless a chiptune file already had curated length metadata attached, my metadata utility emitted a default play length of 150 seconds. This is not good if you want to listen to all the songs in a soundtrack without interacting with the player page, but have various short songs (think “game over” or other quick jingles) that are over in a few seconds. Such songs still pad out 150 seconds of silence.

    So I needed to correct this. Possible solutions :

    1. Manually : At first, I figured I could ask the database which songs needed fixing and listen to them to determine the proper lengths. Then I realized that there were well over 1400 games affected by this problem. This just screams “automated solution”.
    2. Automatically : Ask the database which songs need fixing and then somehow ask the computer to listen to the songs and decide their proper lengths. This sounds like a winner, provided that I can figure out how to programmatically determine if a song has “finished”.

    SQL Shame
    This play adjustment task has been on my plate for a long time. A key factor that has blocked me is that I couldn’t figure out a single SQL query to feed to the SQLite database underlying the site which would give me all the songs I needed. To be clear, it was very simple and obvious to me how to write a program that would query the database in phases to get all the information. However, I felt that it would be impure to proceed with the task unless I could figure out one giant query to get all the information.

    This always seems to come up whenever I start interacting with a database in any serious way. I call it SQL shame. This task got some traction when I got over this nagging doubt and told myself that there’s nothing wrong with the multi-step query program if it solves the problem at hand.

    Suddenly, I had a flash of inspiration about why the so-called NoSQL movement exists. Maybe there are a lot more people who don’t like trying to derive such long queries and are happy to allow other languages to pick up the slack.

    Estimating Lengths
    Anyway, my solution involved writing a Python script to iterate through all the games whose metadata was output by a certain engine (the one that makes the default play length 150 seconds). For each of those games, the script queries the song table and determines if each song is exactly 150 seconds. If it is, then go to work trying to estimate the true length.

    The forgoing paragraph describes what I figured was possible with only a single (possibly large) SQL query.

    For each song represented in the chiptune file, I ran it through a custom length estimator program. My brilliant (err, naïve) solution to the length estimation problem was to synthesize seconds of audio up to a maximum of 120 seconds (tightening up the default length just a bit) and counting how many of those seconds had all 0 samples. If the count reached 5 consecutive seconds of silence, then the estimator rewound the running length by 5 seconds and declared that to be the proper length. Update the database.

    There were about 1430 chiptune files whose songs needed updates. Some files had 1 single song. Some files had over 100. When I let the script run, it took nearly 65 minutes to process all the files. That was a single-threaded solution, of course. Even though I already had the data I needed, I wanted to try to hand at parallelizing the script. So I went to work with Python’s multiprocessing module and quickly refactored it to use all 4 CPU threads on the machine where the files live. Results :

    • Single-threaded solution : 64m42s to process corpus (22 games/minute)
    • Multi-threaded solution : 18m48s with 4 CPU threads (75 games/minute)

    More than a 3x speedup across 4 CPU threads, which is decent for a primarily CPU-bound operation.

    Epilogue
    I suspect that this task will require some refinement or manual intervention. Maybe there are songs which actually have more than 5 legitimate seconds of silence. Also, I entertained the possibility that some songs would generate very low amplitude noise rather than being perfectly silent. In that case, I could refine the script to stipulate that amplitudes below a certain threshold count as 0. Fortunately, I marked which games were modified by this method, so I can run a new script as necessary.

    SQL Schema
    Here is the schema of my SQlite3 database, for those who want to try their hand at a proper query. I am confident that it’s possible ; I just didn’t have the patience to work it out. The task is to retrieve all the rows from the games table where all of the corresponding songs in the songs table is 150000 milliseconds.

    1. CREATE TABLE games
    2.   (
    3.    id INTEGER PRIMARY KEY AUTOINCREMENT,
    4.    uncompressed_sha1 TEXT,
    5.    uncompressed_size INTEGER,
    6.    compressed_sha1 TEXT,
    7.    compressed_size INTEGER,
    8.    system TEXT,
    9.    game TEXT,
    10.    gme_system TEXT default NULL,
    11.    canonical_url TEXT default NULL,
    12.    extension TEXT default "gamemusicxz",
    13.    enabled INTEGER default 1,
    14.    redirect_to_id INT DEFAULT -1,
    15.    play_lengths_modified INT DEFAULT NULL) ;
    16. CREATE TABLE songs
    17.   (
    18.    game_id INTEGER,
    19.    song_number INTEGER NOT NULL,
    20.    song TEXT,
    21.    author TEXT,
    22.    copyright TEXT,
    23.    dumper TEXT,
    24.    length INTEGER,
    25.    intro_length INTEGER,
    26.    loop_length INTEGER,
    27.    play_length INTEGER,
    28.    play_order INTEGER default -1) ;
    29. CREATE TABLE tags
    30.   (
    31.    game_id INTEGER,
    32.    tag TEXT NOT NULL,
    33.    tag_type TEXT default "filename") ;
    34. CREATE INDEX gameid_index_songs ON songs(game_id) ;
    35. CREATE INDEX gameid_index_tag ON tags(game_id) ;
    36. CREATE UNIQUE INDEX sha1_index ON games(uncompressed_sha1) ;