layout | title | date | order | permalink |
---|---|---|---|---|
page |
Contributions |
2013-01-03 15:59:57 +0000 |
2 |
contrib/ |
Une liste des quelques contributions que j'ai effectuées sur des projets libres, avec une description succincte.
shadow
([article][blog-shadow])metahanoi
([article][blog-metahanoi])AImageView
/AImageViewSample
([article][blog-aimageview])rsshfs
([article][blog-rsshfs])vlc-udp-deadlock
(sample pour ce patch)andudpxy
/andudpxy-sample
([article][blog-andudpxy])mdbeamer
([article][blog-mdbeamer])delay
([article][blog-delay])pibuf
rogpoc
(topic)mixpoc
([article][blog-mixpoc])gitbashprompt
([article][blog-gitbashprompt])csnakesolver
([article][blog-csnakesolver])snakesolver
([article][blog-snakesolver])pluzz
([article][blog-pluzz])
[blog-shadow]: {% post_url 2017-03-01-shadow %} [blog-metahanoi]: {% post_url 2015-03-27-executer-un-algorithme-lors-de-la-compilation-templates-c %} [blog-aimageview]: {% post_url 2014-10-20-aimageview-composant-android %} [blog-rsshfs]: {% post_url 2014-06-15-sshfs-inverse-rsshfs %} [blog-andudpxy]: {% post_url 2014-03-18-compiler-un-executable-pour-android %} [blog-mdbeamer]: {% post_url 2014-02-15-des-slides-beamer-en-markdown %} [blog-delay]: {% post_url 2014-01-20-lecture-differee-de-la-webcam-dun-raspberry-pi %} [blog-mixpoc]: {% post_url 2013-01-29-le-mixage-audio %} [blog-gitbashprompt]: {% post_url 2012-04-04-prompt-bash-pour-git %} [blog-csnakesolver]: {% post_url 2011-10-18-resoudre-le-cube-serpent-300-fois-plus-rapidement-en-c %} [blog-snakesolver]: {% post_url 2011-09-27-resoudre-le-cube-serpent-en-python %} [blog-pluzz]: {% post_url 2010-07-06-pluzz-fr-france-televisions-lance-son-service-de-tv-de-rattrapage-non-lisible %}
J'ai développé une application qui permet de voir et de contrôler des devices
Android à partir du PC.
scrcpy
| [article en][blog-scrcpy] | [LinuxFR][scrcpy-linuxfr] |
[reddit][scrcpy-reddit] | [Hacker News][scrcpy-hn]
[blog-scrcpy]: {% post_url 2018-03-08-introducing-scrcpy %} [scrcpy-linuxfr]: https://linuxfr.org/users/rom1v/journaux/scrcpy-une-appli-pour-afficher-et-controler-des-devices-android [scrcpy-reddit]: https://www.reddit.com/r/Android/comments/834zmr/introducing_scrcpy_an_app_to_display_and_control/ [scrcpy-hn]: https://news.ycombinator.com/item?id=16544977
J'ai développé un outil qui permet aux devices Android d'utiliser la connexion
du PC sur lequel ils sont branchés (reverse tethering), sans accès root.
gnirehtet
| [article fr][blog-gnirehtet] | [article en][blog-gnirehtet-en]
| [LinuxFR][gnirehtet-linuxfr] | [reddit][gnirehtet-reddit] |
[Hacker News][gnirehtet-hn]
[blog-gnirehtet]: {% post_url 2017-03-30-gnirehtet %} [blog-gnirehtet-en]: {% post_url 2017-03-30-introducing-gnirehtet %} [gnirehtet-linuxfr]: https://linuxfr.org/users/rom1v/journaux/du-reverse-tethering-sur-android-sans-root [gnirehtet-reddit]: https://www.reddit.com/r/Android/comments/62lc8z/a_reverse_tethering_tool_for_android_no_root/ [gnirehtet-hn]: https://news.ycombinator.com/item?id=14011590
Je l'ai ensuite réécrit en Rust.
[article fr][blog-gnirehtet-2-fr] | [article en][blog-gnirehtet-2-en] |
[annonce][gnirehtet-2-medium] | [LinuxFR][gnirehtet-2-linuxfr] |
[reddit][gnirehtet-2-reddit] | [Hacker News][gnirehtet-2-hn]
[blog-gnirehtet-2-fr]: {% post_url 2017-09-21-gnirehtet-reecrit-en-rust %} [blog-gnirehtet-2-en]: {% post_url 2017-09-21-gnirehtet-rewritten-in-rust %} [gnirehtet-2-medium]: https://medium.com/genymobile/gnirehtet-2-our-reverse-tethering-tool-for-android-now-available-in-rust-999960483d5a [gnirehtet-2-linuxfr]: https://linuxfr.org/users/rom1v/journaux/du-reverse-tethering-en-rust [gnirehtet-2-reddit]: https://www.reddit.com/r/rust/comments/71ks57/gnirehtet_a_reverse_tethering_tool_for_android/ [gnirehtet-2-hn]: https://news.ycombinator.com/item?id=15326106
J'ai corrigé quelques bugs sur VLC :
- demux: avformat: fix tracks initialization to prevent
crash
mergé (
8a3958c
) - vout: snapshot: fix snapshots
cropping
mergé (
7a46fc4
) - qt: playlist: fix stack
overflow
mergé (
991ed98
) - mtp: fix initialization to avoid segfault on
close
mergé (
3ff283b
) - gui/qt: bookmarks: fix psz_name
lifetime
mergé (
ea0a32e
) - core: fix vlc_alloc() overflow detection corrigé (via helpers)
- core: fix vlc_obj_alloc_common() overflow detection corrigé (via helpers)
- android: Clear list filter on small search query
string
mergé (
ea0a32e
)
Maintenant, je travaille chez VideoLabs à plein temps sur VLC, donc je ne vais
plus lister chacun de mes commits. Voir la mailing-list et le git log
de VLC
si ça vous intéresse.
Voici les principales contributions :
- Add atomic refcounter
helper
mergé (
618a789
) - Make the background worker
multithreaded
mergé (
1789d18
) - Use input thread events for
(pre-)parsing
mergé (
ee83628
et suivants) - vlc_vector: add helpers for
vectors
mergé (
983c43f
) - Add C++ wrapper for C shared
resources
mergé (
40c6d71
) - New
playlist
mergé (
7c82c7b
et suivants) - Media source and media
tree
mergé (
3e0cc19
et8fbc2e6
)
J'ai écrit un [article][blog-vlc-playlist] détaillant la nouvelle playlist.
[reddit][vlc-playlist-reddit] | [Hacker News][vlc-playlist-hn]
[blog-vlc-playlist]: {% post_url 2019-05-21-a-new-core-playlist-for-vlc-4 %} [vlc-playlist-reddit]: https://www.reddit.com/r/programming/comments/br7or7/a_new_core_playlist_for_vlc_4/ [vlc-playlist-hn]: https://news.ycombinator.com/item?id=19978295
rav1e est un encodeur AV1, développé par Mozilla/Xiph, écrit en Rust.
Afin de pouvoir encoder (et décoder) une vidéo en utilisant plusieurs
processeurs, j'ai implémenté le tile encoding.
[article en][blog-rav1e] | [r/programming][rav1e-r/programming] |
[r/rust][rav1e-r/rust] | [r/AV1][rav1e-r/AV1] | [Hacker News][rav1e-hn]
- Tile encoding mergé
- many others
[blog-rav1e]: {% post_url 2019-04-25-implementing-tile-encoding-in-rav1e %} [rav1e-r/programming]: https://www.reddit.com/r/programming/comments/bh6sq8/implementing_tile_encoding_in_rav1e_a_rust_av1/ [rav1e-r/rust]: https://www.reddit.com/r/rust/comments/bh8xnl/implementing_tile_encoding_in_rav1e_a_rust_av1/ [rav1e-r/AV1]: https://www.reddit.com/r/AV1/comments/bh8xsy/implementing_tile_encoding_in_rav1e/ [rav1e-hn]: https://news.ycombinator.com/item?id=19746392
mio est une library d'I/O asynchrone pour Rust.
J'ai supprimé l'interdiction d'enregistrer un handle avec un ensemble d'intérêts vide, étant donné que les backends le supportent. Cette modification était nécessaire au bon fonctionnement de Gnirehtet :
Quelques opérateurs manquaient sur mio::Ready
:
J'ai aussi ouvert quelques rapports de bugs :
libusb est une bibliothèque C pour communiquer sur USB.
J'ai corrigé un bug qui pouvait provoquer l'arrêt de l'event thread udev lors d'un signal. En particulier, il s'arrêtait à chaque fois qu'une FileDialog Qt/QML était ouverte :
F-Droid est un store d'applications libres pour Android. Cet article LinuxFR fournit un bon résumé.
J'ai corrigé quelques bugs qui m'agaçaient lors de l'utilisation de l'application.
L'état de l'application n'était pas mis à jour immédiatement lors d'une installation ou désinstallation d'une application (l'écran affichait donc une information erronée) :
L'application plantait lors de la désinstallation d'applications :
L'application pouvait également planter pour une autre raison si l'activité avait été détruite par le système pendant l'installation ou la désinstallation d'une application :
Android-Universal-Image-Loader est une bibliothèque facilitant le chargement d'images dans les applications Android.
J'ai corrigé un bug aspect-ratio sur les images circulaires :
J'ai rapporté un bug constaté sur l'utilisation loaders lors de la rotation d'écran, pour lequel j'ai ensuite proposé un patch :
- Avoid duplicate call to onLoadFinished() non mergé
J'ai également supprimé une petite erreur dans la documentation de
SharedPreferences
:
J'ai corrigé une fuite mémoire sur la CastCompanionLibrary
(la
bibliothèque de Google pour communiquer avec un chromecast) :
- Remove all references to a listener (leak fix) accepté (mais réimplémentée par naddaf)
Le projet Serval, en particulier son application Batphone pour Android, a pour but de faire communiquer les téléphones sur un réseau maillé (sans infrastructure). Voir par exemple les articles du Monde, de Next Inpact ou de Korben.
J'ai effectué deux modifications concernant le protocole MDP (l'équivalent de l'UDP sur réseau Mesh).
La première rend l'utilisation du MDP similaire à l'API socket standard C, et rend possible l'utilisation de plusieurs services simultanés :
- MDP sockets support première version
- MDP sockets support (suite) mergé (cf
commit 954a8a0
)
La seconde implémente les "bindings Java" permettant d'utiliser les sockets MDP en Java, de manière similaire à l'API socket Java.
- Native-part of MDP JNI bindings non mergé
- Java-part of MDP JNI bindings non mergé
J'ai ensuite développé, en utilisant le protocole MDP ainsi modifié, un mode talkie-walkie (communication n-to-n) sur réseau mesh :
non destiné à être mergé en l'état
Thinktube a modifié Android pour y ajouter le support du mode ad-hoc. En particulier, ils ont codé le pilote pour le faire fonctionner sur Galaxy Nexus. Cependant, tel quel, Serval ne pouvait pas piloter le wifi sur ce téléphone. J'ai donc ajouté la "colle" manquante. J'ai ensuite fait de même pour la Nexus 7 :
- Re: Android IBSS mode
- branche
- Make serval work on Android-IBSS non destiné à être mergé en l'état (mais partiellement intégré)
- Fix wifi configuration for nl80211 mergé
Tous les traitements de Serval sont effectués dans un seul thread, ce qui pose problème avec Rhizome, qui exécute des actions longues, bloquant tous traitements liés au routage et au transfert de données.
J'ai proposé une implémentation de parallélisation de Rhizome basée sur les threads POSIX :
- Rhizome parallelization non mergé
Ce n'est pas du code, mais des réflexions sur le fonctionnement de Rhizome :
- Reflections on Rhizome protocol
- Reflections on Rhizome store-and-forward protocol
- Reflections on Rhizome store-and-forward protocol (part 2)
J'ai aussi implémenté un PoC pour explorer le principe d'implémenter la partie stockage de Rhizome par-dessus git :
- Making it work on devices without sdcards mergé
- Peer list concurrent access crash (fix #71) mergé
- Fix varargs use mergé
- Always notify completion mergé
- Disconnected phones don't disappear (bugfix) cause corrigée
- ob_dup() did not preserve source position annulée
AndroidAnnotations est un framework qui aide au développement d'applications Android en générant du code à partir d'annotations lors de la compilation.
J'ai ajouté la possibilité de sérialiser, à la demande, l'exécution de tâches en
arrière-plan. Concrètement, cela permet d'écrire @Background(serial="some_id")
pour garantir que toutes les actions ayant le même identifiant soient
séquentielles :
J'ai ensuite ajouté la possibilité d'annuler des tâches exécutées en arrière-plan :
Une régression a été introduite plus tard, que j'ai également corrigée :
Le wiki propose une intégration d'AndroidAnnotations avec Ant trop compliquée et intrusive. J'en propose une autre, plus simple et plus naturelle :
K9mail est un client mail Android.
J'ai effectué une minuscule modification d'optimisation des performances :
Un petit logiciel pour regarder la TV avec la Freebox que j'ai commis en 2005. myfreetv.sourceforge.net maintenant obsolète