IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Commentaires

  1. Avatar de d'Oursse
    • |
    • permalink
    Citation Envoyé par pamlinux
    Bonjour,

    Je trouve effectivement le sujet très intéressant et je constate également qu'il est difficile de trouver un canevas écrit en C/C++. Merci pour les 2 premières parties et y aura-t-il les 6 autres annoncée initialement?
    Il existe un canvas stateful écrit en C, il se nomme Evas et fait partie des EFL
  2. Avatar de ericb2
    • |
    • permalink
    Citation Envoyé par pamlinux
    Bonjour,

    Je trouve effectivement le sujet très intéressant et je constate également qu'il est difficile de trouver un canevas écrit en C/C++. Merci pour les 2 premières parties et y aura-t-il les 6 autres annoncée initialement?
    Bonjour,

    Oui, je vais continuer.

    En fait, j'ai publié les précédentes parties trop rapidement. Entre temps, j'ai eu une grosse surcharge de travail (mon vrai boulot), et je n'ai simplement pas trouvé le temps de rédiger la suite.

    À toutes fins utiles, je rappelle, en tant que bénévole qui partage gracieusement ses maigres connaissances sur le sujet, que ce qui est important, c'est de dire ce qui ne va pas, ou qui pourrait être amélioré (de façon constructive, merci).

    À suivre (prochainement)
  3. Avatar de pamlinux
    • |
    • permalink
    Bonjour,

    Je trouve effectivement le sujet très intéressant et je constate également qu'il est difficile de trouver un canevas écrit en C/C++. Merci pour les 2 premières parties et y aura-t-il les 6 autres annoncée initialement?
  4. Avatar de kain_tn
    • |
    • permalink
    Citation Envoyé par goldbergg
    Pas vraiment non, va sur le site de RPI tu verra que le problème c'est principalement MS et pas l'ajout de dépôt en lui même.
    Limite sa aurait été l'ajout sauvage de depot d'une fondation libriste sa n'aura pas spécialement posé de problème comme c'est la cas actuellement (il y aurait forcement eu des mécontent, mais pas a ce point).

    Même sur la news de developpez sa crache sur MS et VScode parce que pas libre (les binaire, pas le code)

    La principale raison évoqué c'est le ping qui sera fait au dépôt a chaque apt update (d'autre avance même la possibilité par MS de proposer des faux package...).

    Comme si pinger les dépôt MS une fois de temps en temps allait violer notre vis privé, vive la parano, a se niveaux la il vaux mieux ne plus allez sur internet car bou toute les méchante entreprise que l'on ping tous les jour a notre insu, a commencer par notre FAI.

    Au passage, RPI OS, c'est avant tous un OS fait pour tous le monde, avec une com très accès sur les jeunes, pour simplifier l'usage des RPI et non un OS qui se veut 100% libriste, il y a suffisamment des distro de compatible RPI pour satisfaire tous le monde.
    Tu auras toujours des gens qui vont se plaindre de MS ou autre. De toutes les façons, si tu utilises Skype par exemple, tu as déjà des produits MS sur ton Linux.

    En revanche, dire que c'est uniquement pour ça que les gens râlent, c'est faire semblant de ne pas comprendre le problème: on t'ajoute un dépôt "en mode voleur" et la clé GPG qui va avec. Le piratage massif récent de Solar Wind a montré comment en affaiblissant un seul outil de la chaîne de distribution tu peux contaminer la totalité des agences qui utilisent une distribution derrière. Et c'est bien de ça qu'il s'agit: ajouter un dépôt tiers, de manière cachée. Le fait qu'il soit libre ou non ne change rien à l'ajout d'une brèche dans ton OS...

    Au passage, si tu penses qu'un ping chez Microsoft c'est anodin, alors regarde cette news d'hier: https://www.zdnet.com/article/micros...ivacy-problem/. En gros, Microsoft revend à Canonical les infos de qui spawn des VM Ubuntu sur Azure, malgré ce qu'ils disent dans leur EULA, et les commerciaux de Canonical ne se privent pas pour appeler les gens derrière.
  5. Avatar de goldbergg
    • |
    • permalink
    Citation Envoyé par kain_tn
    Remettons les choses dans l'ordre alors, pour ne pas faire dans la désinformation: les gens sur Reddit ont critiqué les pratiques de la RaspberryPI Foundation, et pas Microsoft lui-même. En effet, insérer un dépôt tiers (et sa clé) de manière cachée, ce n'est pas bien: c'est compromettre l'intégrité de la distribution. C'est à croire que les développeurs/mainteneurs de distributions ne retiennent rien des attaques comme sur Solar Winds Orion.
    Pas vraiment non, va sur le site de RPI tu verra que le problème c'est principalement MS et pas l'ajout de dépôt en lui même.
    Limite sa aurait été l'ajout sauvage de depot d'une fondation libriste sa n'aura pas spécialement posé de problème comme c'est la cas actuellement (il y aurait forcement eu des mécontent, mais pas a ce point).

    Même sur la news de developpez sa crache sur MS et VScode parce que pas libre (les binaire, pas le code)

    La principale raison évoqué c'est le ping qui sera fait au dépôt a chaque apt update (d'autre avance même la possibilité par MS de proposer des faux package...).

    Comme si pinger les dépôt MS une fois de temps en temps allait violer notre vis privé, vive la parano, a se niveaux la il vaux mieux ne plus allez sur internet car bou toute les méchante entreprise que l'on ping tous les jour a notre insu, a commencer par notre FAI.

    Au passage, RPI OS, c'est avant tous un OS fait pour tous le monde, avec une com très accès sur les jeunes, pour simplifier l'usage des RPI et non un OS qui se veut 100% libriste, il y a suffisamment des distro de compatible RPI pour satisfaire tous le monde.
  6. Avatar de kain_tn
    • |
    • permalink
    Citation Envoyé par JeremyJeanson
    "Surtout n'installez pas la distribution de la fondation Raspberry Pi, car elle contient des choses douteuses venant de chez Microsoft, et qui sont installées à l'insu de votre plein gré."

    Sérieusement?

    Oui la fondation raspberrypi a mal communiqué sur le sujet. Mais un lien vers un repository (que l'on peut désactiver) et une clé pour assurer la sécurité de bout en bout quand on utilise ce repository , ça n'a rien de douteux.
    Admettons que tu prennes une Ubuntu comme conseillé au début de l'article. Si tu ajoutes des PPA à torts et à travers (qui vont chacun venir avec leur propre clé, oui), alors c'est un problème en termes d'intégrité et de sécurité si un logiciel est présent sur plusieurs PPA. Ce n'est pas le miroir de Microsoft en soi, le problème, mais la méthode utilisée par la fondation Raspberry PI: tout ajout de dépôt devrait être visible directement par l'utilisateur, et non masqué à travers des scripts de post-install dans un paquet différent.

    Tu peux le désactiver car des gens l'ont remarqué et signalé. Les posts sur les forums de la fondation ont été modérés et le code de la MAJ n'a été poussé sur leur git public que plusieurs jours après la mise à jour, et sur demande d'un utilisateur, ce qui laisse à désirer sur l'aspect Open Source de cette distribution: c'est une rupture de la confiance qu'un utilisateur est en droit d'accorder à sa distribution.

    Citation Envoyé par JeremyJeanson
    Sans vouloir aller trop dans le détail (et pour éviter de passer pour un troll) : aujourd'hui il n'existe plus de distributions Linux sans aucun bout de code fourni par Microsoft (validé par les communautés et Linus Torvalds). De tête, il faut remonter plus de 10 ans dans le passé pour trouver un kernel sur lequel Microsoft n'a pas contribué. Le kernel n'est pas "douteux" pour autant.
    Oui, tu as raison. Et les contributions auxquelles tu fais allusion sont principalement liées à MS Hyper-V et cifs.

    À vue de nez un bon 80% si je regarde dans la dernière release (5.10.15) par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    $ grep Microsoft . | grep -i "(c)"
    ./drivers/hv/connection.c: * Copyright (c) 2009, Microsoft Corporation.
    ./drivers/hv/hv.c: * Copyright (c) 2009, Microsoft Corporation.
    ./drivers/hv/hv_snapshot.c: * Copyright (C) 2013, Microsoft, Inc.
    ./drivers/hv/hv_fcopy.c: * Copyright (C) 2014, Microsoft, Inc.
    ./drivers/hv/channel_mgmt.c: * Copyright (c) 2009, Microsoft Corporation.
    ./drivers/hv/channel.c: * Copyright (c) 2009, Microsoft Corporation.
    ./drivers/hv/vmbus_drv.c: * Copyright (c) 2009, Microsoft Corporation.
    ./drivers/hv/ring_buffer.c: * Copyright (c) 2009, Microsoft Corporation.
    ./drivers/hv/hv_util.c: * Copyright (c) 2010, Microsoft Corporation.
    ./drivers/hv/hv_balloon.c: * Copyright (c) 2012, Microsoft Corporation.
    ./drivers/hv/hyperv_vmbus.h: * Copyright (c) 2011, Microsoft Corporation.
    ./drivers/net/hyperv/netvsc_bpf.c:/* Copyright (c) 2019, Microsoft Corporation.
    ./drivers/net/hyperv/hyperv_net.h: * Copyright (c) 2011, Microsoft Corporation.
    ./drivers/net/hyperv/rndis_filter.c: * Copyright (c) 2009, Microsoft Corporation.
    ./drivers/net/hyperv/netvsc_drv.c: * Copyright (c) 2009, Microsoft Corporation.
    ./drivers/net/hyperv/netvsc.c: * Copyright (c) 2009, Microsoft Corporation.
    ./drivers/hid/hid-hyperv.c: *  Copyright (c) 2010, Microsoft Corporation.
    ./drivers/clocksource/hyperv_timer.c: * Copyright (C) 2019, Microsoft, Inc.
    ./drivers/video/fbdev/hyperv_fb.c: * Copyright (c) 2012, Microsoft Corporation.
    ./drivers/md/dm-verity-verify-sig.h: * Copyright (C) 2019 Microsoft Corporation.
    ./drivers/md/dm-verity-verify-sig.c: * Copyright (C) 2019 Microsoft Corporation.
    ./drivers/char/tpm/tpm_ftpm_tee.c: * Copyright (C) Microsoft Corporation
    ./drivers/char/tpm/tpm_ftpm_tee.h: * Copyright (C) Microsoft Corporation
    ./drivers/iommu/hyperv-iommu.c: * Copyright (C) 2019, Microsoft, Inc.
    ./drivers/uio/uio_hv_generic.c: * Copyright (c) 2016, Microsoft Corporation.
    ./drivers/scsi/storvsc_drv.c: * Copyright (c) 2009, Microsoft Corporation.
    ./drivers/input/serio/hyperv-keyboard.c: *  Copyright (c) 2013, Microsoft Corporation.
    ./drivers/pci/controller/pci-hyperv-intf.c: * Copyright (c) Microsoft Corporation.
    ./drivers/pci/controller/pci-hyperv.c: * Copyright (c) Microsoft Corporation.
    ./tools/hv/hv_fcopy_daemon.c: * Copyright (C) 2014, Microsoft, Inc.
    ./tools/hv/hv_vss_daemon.c: * Copyright (C) 2013, Microsoft, Inc.
    ./net/vmw_vsock/hyperv_transport.c: * Copyright (c) 2017, Microsoft Corporation.
    ./fs/cifs/smbdirect.c: *   Copyright (C) 2017, Microsoft Corporation.
    ./fs/cifs/trace.c: *   Copyright (C) 2018, Microsoft Corporation.
    ./fs/cifs/trace.h: *   Copyright (C) 2018, Microsoft Corporation.
    ./fs/cifs/fs_context.c: *   Copyright (C) 2020, Microsoft Corporation.
    ./fs/cifs/smbdirect.h: *   Copyright (C) 2017, Microsoft Corporation.
    ./fs/cifs/fs_context.h: *   Copyright (C) 2020, Microsoft Corporation.
    ./arch/x86/hyperv/hv_init.c: * Copyright (C) 2016, Microsoft, Inc.
    ./arch/x86/hyperv/nested.c: * Copyright (C) 2018, Microsoft, Inc.
    ./arch/x86/hyperv/hv_apic.c: * Copyright (C) 2018, Microsoft, Inc.
    ./arch/x86/crypto/curve25519-x86_64.c: * Copyright (c) 2016-2020 INRIA, CMU and Microsoft Corporation
    ./include/asm-generic/mshyperv.h: * Copyright (C) 2019, Microsoft, Inc.
    ./include/clocksource/hyperv_timer.h: * Copyright (C) 2019, Microsoft, Inc.
    ./include/linux/xarray.h: * Copyright (c) 2017 Microsoft Corporation
    ./include/linux/hyperv.h: * Copyright (c) 2011, Microsoft Corporation.
    ./include/uapi/linux/hyperv.h: * Copyright (c) 2011, Microsoft Corporation.
    ./Documentation/usb/linux.inf:;    Copyright (c) Microsoft Corporation
    ./Documentation/usb/linux-cdc-acm.inf:;     Copyright (c) 2000 Microsoft Corporation
    ./security/integrity/ima/ima_asymmetric_keys.c: * Copyright (C) 2019 Microsoft Corporation
    ./security/integrity/ima/ima_queue_keys.c: * Copyright (C) 2019 Microsoft Corporation
    ./lib/test_ida.c: * Copyright (c) 2016-2018 Microsoft Corporation
    ./lib/test_xarray.c: * Copyright (c) 2017-2018 Microsoft Corporation
    ./lib/crypto/curve25519-hacl64.c: * Copyright (C) 2016-2017 INRIA and Microsoft Corporation.
    ./lib/xarray.c: * Copyright (c) 2017-2018 Microsoft Corporation
    Il y a en revanche une différence majeure entre contribuer à un module du kernel que tu n'utilisera pas sur ton Raspberry PI, et ajouter un dépôt et sa clé qui donnent un accès potentiel à ce qui doit être installé sur ta machine. Un dépôt tiers n'est pas validé par la communauté de la distribution.

    Citation Envoyé par JeremyJeanson
    J'ai l'impression de lire un discours du siècle dernier où il faisait bon taper sur Microsoft. Sur un article aussi intéressant, c'est dommage.
    Remettons les choses dans l'ordre alors, pour ne pas faire dans la désinformation: les gens sur Reddit ont critiqué les pratiques de la RaspberryPI Foundation, et pas Microsoft lui-même. En effet, insérer un dépôt tiers (et sa clé) de manière cachée, ce n'est pas bien: c'est compromettre l'intégrité de la distribution. C'est à croire que les développeurs/mainteneurs de distributions ne retiennent rien des attaques comme sur Solar Winds Orion.
  7. Avatar de pemmore
    • |
    • permalink
    Bonjour,
    +Sur Ubuntu maintenant il y a une mauvaise gestion de mémoire et de la swap, si tu dépasses 75% de la ram utilisée ça part en swap.
    Mais que tu quittes l'appli gourmande, la swap ne retombe pas automatiquement à zéro, ça devient vite inutilisable, plantage et reset.
    Il y a bien une ligne de code fournie par de sympathiques internautes, mais ça repart dans la ram, pas le but du jeu.
    Mais c'est sur qu'avec 8 go de ram, quasiment aucun risque que ça arrive, et ça coûte pas bien plus cher à acheter au départ.
    L'époque n'est plus à 4 go de ram, faudrait 6 au minimum.
  8. Avatar de smartmobili
    • |
    • permalink
    Citation Envoyé par pierro78
    dac merci !

    tu es tjrs à 1.6Ghz ??
    si tu overclockes à 2Ghz tu arrives à 8664 * 2 / 1.6 = 10830 donc perfs équivalentes à PI OS 32 bits ! (et meme legerement meilleures car j ai overclocké à 2.05Ghz)
    Je te confirme j'ai testé a 2Ghz et j'obtiens 10067, par contre je me prends des coups de de jus désagreable quand je touche le ventirad de mon rpi.
    J'avais installé ubuntu car je voulais voir si un emulateur Switch pouvait etre compilé dessus mais ca ca n'est pas le cas donc je pense qu'a termeje vais repasser sur raspbian (32 ou 64 bits) car par exemple
    pour installer vnc server j'ai du prendre un package venant de raspbian (https://www.raspberrypi.org/forums/v...c.php?t=288769), et peut etre a cause de ca j'ai des crash intempestifs de gnome session je crois.
  9. Avatar de pierro78
    • |
    • permalink
    Citation Envoyé par smartmobili

    Pour en revenir au sujet, avec une version de chromium optimisée et trouvé sur le forum de raspberry.org(https://www.raspberrypi.org/forums/v...c.php?t=289433) j'ai une note Octane 2.0 de 8664.

    Je n'ai pas encore essayé de mettre a jour mesa ou DRM, d'ailleurs ca serait pas mal d'expliquer comment faire, est ce que je dois d'abord désinstaller la version installée ? est ce que les 2 peuvent coexister et comment on passe de l'une a l'autre ? Quand cela sera t'il integré de base a Ubuntu et si c'est dans trop longtemps est ce qu'il ne faudrait pas créer un repository de package pour ca pour éviter que les gens recompilent a chaque fois ?
    dac merci !

    tu es tjrs à 1.6Ghz ??
    si tu overclockes à 2Ghz tu arrives à 8664 * 2 / 1.6 = 10830 donc perfs équivalentes à PI OS 32 bits ! (et meme legerement meilleures car j ai overclocké à 2.05Ghz)
  10. Avatar de smartmobili
    • |
    • permalink
    Citation Envoyé par pierro78
    tiens c est bizarre : ici https://www.raspberrypi.org/forums/v...17228#p1817228 une personne dit que son RPi4 avec RPi OS 64bit, tous les reglages d origine, ne fait que 5349 sur octane v2 !
    Je possède un Rpi4 8Gb avec une ubuntu 20.10 64 bits fraichement installé et un boitier ventirad, d'ailleurs au passage ca me reste toujours en travers de la gorge la dissipation thermique de ce truc quand on voit ce que font les processeurs pours smartphone ou le dernier M1 d'Apple. Bon ca n'est pas le meme prix (un SingleBoadComputer basé sur un snapdagon coute au moins 200 euros) mais un tout petit effort aurait été sympa.
    Par contre c'est vrai que la remarque sur Microsoft m'a fait tiquer car le premier truc que j'ai installé sur le pi c'est justement visual code de Microsoft. Si je voulais etre un ayatollah du libre, il faudrait que je migre mes repository de github vers autre chose, que j'arrete d'utiliser visual code, que j'utlise une version d'Android sans le framework google, ...

    Pour en revenir au sujet, avec une version de chromium optimisée et trouvé sur le forum de raspberry.org(https://www.raspberrypi.org/forums/v...c.php?t=289433) j'ai une note Octane 2.0 de 8664.

    Je n'ai pas encore essayé de mettre a jour mesa ou DRM, d'ailleurs ca serait pas mal d'expliquer comment faire, est ce que je dois d'abord désinstaller la version installée ? est ce que les 2 peuvent coexister et comment on passe de l'une a l'autre ? Quand cela sera t'il integré de base a Ubuntu et si c'est dans trop longtemps est ce qu'il ne faudrait pas créer un repository de package pour ca pour éviter que les gens recompilent a chaque fois ?
  11. Avatar de pierro78
    • |
    • permalink
    tiens c est bizarre : ici https://www.raspberrypi.org/forums/v...17228#p1817228 une personne dit que son RPi4 avec RPi OS 64bit, tous les reglages d origine, ne fait que 5349 sur octane v2 !
  12. Avatar de JeremyJeanson
    • |
    • permalink
    "Surtout n'installez pas la distribution de la fondation Raspberry Pi, car elle contient des choses douteuses venant de chez Microsoft, et qui sont installées à l'insu de votre plein gré."

    Sérieusement?

    Oui la fondation raspberrypi a mal communiqué sur le sujet. Mais un lien vers un repository (que l'on peut désactiver) et une clé pour assurer la sécurité de bout en bout quand on utilise ce repository , ça n'a rien de douteux.

    Sans vouloir aller trop dans le détail (et pour éviter de passer pour un troll) : aujourd'hui il n'existe plus de distributions Linux sans aucun bout de code fourni par Microsoft (validé par les communautés et Linus Torvalds). De tête, il faut remonter plus de 10 ans dans le passé pour trouver un kernel sur lequel Microsoft n'a pas contribué. Le kernel n'est pas "douteux" pour autant.

    J'ai l'impression de lire un discours du siècle dernier où il faisait bon taper sur Microsoft. Sur un article aussi intéressant, c'est dommage.
  13. Avatar de pierro78
    • |
    • permalink
    PS : j ai recommencé octane v2 pour etre sur :
    1ere fois : 10050, 2eme fois : 10697, 3eme fois : 10916
  14. Avatar de ericb2
    • |
    • permalink
    Citation Envoyé par pierro78
    tres interessant ! merci !!
    Pas de quoi, et surtout merci pour le retour, parce que ça me permet de voir que ça ne va pas du tout comparé à ta machine (voir plus bas).

    Citation Envoyé par pierro78

    on dirait qu il y a eu du progres au niveau de l acceleration hardware pour le graphique ! (il faudrait que je réessaye Jellyfin sur mon RPi4 ... )
    Je ne suis pas sûr, mais au moins OpenGL fonctionne (au début, la machine OpenGL ne s'initialisait même pas)


    Citation Envoyé par pierro78

    moi j ai pas de souci avec le son sur la prise jack et l hdmi sur ma télé (j ai réglé ça avec alsamixer je crois ... je suis sur RPi OS 32bit)
    En fait, je n'ai pas trop insisté avec ça : j'arrive à utiliser mpv en plein écran, sans perte d'images, et ça me suffit.

    Par exemple, j'arrive à regarder un match de hand en 720p sur ehftv avec Firefox en plein écran, et c'est tout ce dont j'ai besoin. C'est pour l'USB que ça me semble limite (Logitech BRIO en 1080@24 fps, c'est un peu juste).


    Citation Envoyé par pierro78
    sinon pourrais tu aller sur https://chromium.github.io/octane/ et nous dire ton score octane s il te plait ???
    (moi je suis à environ 10800 avec mon RPi4 4GB, RPi OS 32bit, chromium, boitier flirc vertical sans les couvercles pour optimiser le refroidissement, overclock à 2.05Ghz)

    merci d avance pour ton score octane ! (que je sache si je passe en 64bit ou pas !)
    Je viens d'essayer, et j'ai un score minable (entre 4060 et 4265 sur plusieurs essais). Bouh :-/
    C'est donc loin d'être optimisé (et je ne sais pas pourquoi).

    Les pistes actuelles sont :

    - j'ai une partition chiffrée
    - j'utilise un noyau récent 5.8.0-1013-raspi (+ quelques nouvelle limitations dues à des pb de sécurité)
    - mon disque dur utilise l'USB 3.0 (peut-être seulement de de l'USB 2 ?) ou l'alimentation ne tient pas la charge ?
    - j'ai cloné l'ancien disque dur SSD sur le nouveau (Crucial MX500, interne) et je n'ai pas mis le nouvel ID (pas sûr que je doive en changer, mais je cherche d'où un tel écart de perfs pourrait venir)

    D'après dmesg, tout semble à peu près normal (je n'ai pas creusé). Et je viens de voir aussi un truc intéressant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    5.457075] systemd[1]: Started Journal Service.
    [    6.169977] rpivid-mem feb00000.hevc-decoder: rpivid-hevcmem initialised: Registers at 0xfeb00000 length 0x00010000
    [    6.170180] rpivid-mem feb10000.rpivid-local-intc: rpivid-intcmem initialised: Registers at 0xfeb10000 length 0x00001000
    [    6.170351] rpivid-mem feb20000.h264-decoder: rpivid-h264mem initialised: Registers at 0xfeb20000 length 0x00010000
    [    6.170507] rpivid-mem feb30000.vp9-decoder: rpivid-vp9mem initialised: Registers at 0xfeb30000 length 0x00010000
    [    6.228054] vc_sm_cma: module is from the staging directory, the quality is unknown, you have been warned.
    [    6.228445] vc_sm_cma: module verification failed: signature and/or required key missing - tainting kernel
    [    6.230824] bcm2835_vc_sm_cma_probe: Videocore shared memory driver

    P.S. : pendant que j'y suis, et si tu veux essayer, je produis une version armhf d'OOoLight (c'est un fork que j'ai fait d'OpenOffice il y a quelques années) et ça fonctionne super bien en 32bits. Pour la version 64 bits je suis en train de faire le port sur aarch64.

    Voir : http://adullact.net/frs/?group_id=717 (c'est un site lié aux administrations françaises, tout ce qu'il y a de plus officiel)

    Lien direct : http://adullact.net/frs/download.php....5-1_armhf.deb

    (sudo dpkg -i nom_de_l'archive.deb pour l'installer) et sudo apt-get remove nom_de_l'archive pour désinstaller)

    J'écris tous mes cours avec ( dépôt framagit )

    Bon, ben je vois que j'ai encore des réglages à faire ...
  15. Avatar de pierro78
    • |
    • permalink
    tres interessant ! merci !!

    on dirait qu il y a eu du progres au niveau de l acceleration hardware pour le graphique ! (il faudrait que je reessaye Jellyfin sur mon RPi4 ... )

    moi j ai pas de souci avec le son sur la prise jack et l hdmi sur ma télé (j ai réglé ça avec alsamixer je crois ... je suis sur RPi OS 32bit)

    sinon pourrais tu aller sur https://chromium.github.io/octane/ et nous dire ton score octane s il te plait ???
    (moi je suis à environ 10800 avec mon RPi4 4GB, RPi OS 32bit, chromium, boitier flirc vertical sans les couvercles pour optimiser le refroidissement, overclock à 2.05Ghz)

    merci d avance pour ton score octane ! (que je sache si je passe en 64bit ou pas !)
  16. Avatar de ericb2
    • |
    • permalink
    Citation Envoyé par MaximeCh
    merci
    Bonjour,

    C'est moi. Surtout, n'hésitez pas si vous avez des questions, car je ne suis pas certain d'avoir été très clair.

    Par ailleurs, j'attends un peu pour publier les parties suivantes (partie 3 à venir), parce que j'ai un peu l'impression de spammer le site ;-)
  17. Avatar de MaximeCh
    • |
    • permalink
    merci
  18. Avatar de ericb2
    • |
    • permalink
    Bonjour,

    Citation Envoyé par neuneutrinos
    Félicitation de proposer du contenu, moi je n'arrive pas à aller jusqu'au bout


    Tout d'abord, merci pour tes commentaires. En fait, c'est difficile de définir le bout d"un article. j'essaye de mettre à jour progressivement, et d'améliorer.





    Je vais revenir sur le code , et je te propose de mettre ton code dans un compilateur en ligne (ideone, repl.it par exemple)


    J'avoue ne pas avoir pensé à ça. ça marche même avec un Makefile ?






    Comme ça il sera plus simple de tester le code.

    Choisis entre l'anglais et le français pour les commentaires.


    Oui tu as raison : en fait j'ai assemblé du code que j'ai écrit pour d'autres projets, avec d'abord l'idée de réutiliser, et d'améliorer prochainement.






    scanf (fscanf , sscanf , etc ...) permettent la lecture formatée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    float x;
    char txt[] = "4e-4";
    sscanf(txt,"%f",&x);
    printf("%f\n",x);//affichera 0.000400
    Donc pas besoin de le recoder (sauf format particulier)
    Il faudra simplement faire attention au retour et à l'encadrement de tes valeurs

    Ce qui simplifiera grandement ton saisie.c



    Je ne sais plus pourquoi je l'avais utilisé, mais il y avait une (plusieurs même) bonne raison (s). Il me semble que j'avais séparé en 2 : pour la saisie d'une chaîne de caractères => fgets() et pour la saisie d'un nombre (à vérifier ensuite) : sscanf

    Parce que les risques de dépassement sont réels avec sscanf().







    utils.h

    Voici ta fonction strlcpy
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    /*
     * Copy src to string dst of size siz.  At most siz-1 characters
     * will be copied.  Always NUL terminates (unless siz == 0).
     * Returns strlen(src); if retval >= siz, truncation occurred.
     */
    size_t strlcpy(char *dst, const char *src, size_t siz)
    {
            char *d = dst;
            const char *s = src;
            size_t n = siz;
    
            /* Copy as many bytes as will fit */
            if (n != 0 && --n != 0) {
                    do {
                            if ((*d++ = *s++) == 0)
                                    break;
                    } while (--n != 0);
            }
    
            /* Not enough room in dst, add NUL and traverse rest of src */
            if (n == 0) {
                    if (siz != 0)
                            *d = '\0';                /* NUL-terminate dst */
                    while (*s++)
                            ;
            }
    
            return(s - src - 1);        /* count does not include NUL */
    }
    Je te propose une forme plus épurée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    size_t strlcpy(char *dst, const char *src, size_t siz)
    {
      size_t destLen=siz;
      char *buf=dst;
      if(siz!=0)//siz==0 ? on ne fait rien
      {
        while(*src!='\0' && --siz > 0)//for(;*src!='\0' && --siz > 0;dst++,src++) mais peut être moins lisible
        {
          *dst=*src;
          dst++;
          src++;
        }
        *dst = '\0';
        destLen=destLen-siz;
        //-1 à cause de la troncature.
        if(siz==0)destLen--;
        
      }
      return destLen;
    }


    Comme indiqué dans les sources, c'est du code sous licence BSD et je l'ai repris tel quel, mais si tu as mieux, ça ne me dérange pas d'intégrer ta contribution :-)





    Si tu mets tous tes MENU_ENTRY_X dans une enum énuméré par défaut , alors ce serait plus simple à utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    enum MenuEntry
    {
     MENU_ENTRY_1,
     MENU_ENTRY_2,
     //...
     MENU_ENTRY_NB
    };
    //MENU_ENTRY_NB correspondra au nombre de MENU_ENTRY , si j'en ajoute , ça se changera tout seul !

    Oui, oui, c'est juste que je n'ai ai pas pensé sur le moment. J'avais aussi une autre solution, comme celle que j'ai utilisée dans OSS San Baguette (un projet d'élève, que j'ai pas mal suivi)





    L'utilisation d'enum permet de faire plus simple.
    Mais il y a encore mieux si on prévoit des ajouts dans le menu. On pourrait prévoir un tableau de "MenuItem" par exemple (et pointeurs de fonction pour éviter de hardcoder un gros switch par exemple).

    'HASH' tout en majuscule , est curieuse par rapport au reste de ton code.
    'Hash' ou bien 'hash' serait mieux.


    Oui, je vais changer, ce n'est pas très propre. Merci pour la remarque.






    Ensuite, ta hashTable ... est une liste , pourquoi ne pas la renommer hashList ?

    Le "singleton" est assez étrange, ne serait-il pas intéressant de permettre l'utilisation de plusieurs tables de hashage ?


    C'est parce que ce n'est qu'un exemple. En réalité, je ne l'aurais pas codé en C si j'en avais eu besoin, et j'aurais créé une vraie classe C++, et j'aurais créé une instance par table.





    Simplement InitHashTable(Hash* hashTable); par exemple ?
    d'ailleurs certaines fonctions n'utilisent pas ce fameux "singleton" comme push , pop , etc ...

    Question idiote ... il n'y a pas de fonction de hashage ?


    Pour parler de fonction de hachage, il aurait fallu que je définisse une relation entre la clé et la valeur. Ce n'était pas le but ici : la clé et la valeur sont simplement indépendantes. C'est plutôt un dictionnaire que j'ai présenté, dans l'esprit d'un TP de 2h pour être précis.






    Dans le cas où tu n'as pas de collision, une table de hashage doit te retourner/ajouter un élément en O(1) voir O(log(n)).
    Là on est en O(n)...


    Quand la clé est connue, c'est du 0(1)

    Si on cherche une clé, c'est bien du O(n) oui. Mais c'est une table basique, dont le but est de comprendre le principe, sans prétention.






    On ne profite pas des avantages que l'on attend d'une table de hashage (même naïve).
    On se retrouve avec une liste simplement chainée avec un identifiant pour chaque élément...


    La table, on la crée à la main (de façon dynamique). Et c'est même plutôt un dictionnaire.

    Le but, plutôt pédagogique, c'était de vérifier que les fonctions marchent bien et que le cahier des charges était respecté.






    https://jipe.developpez.com/articles.../?page=theorie

    Si tu souhaites un peu d'aide , ce serait avec plaisir

    Avec plaisir : j'apprendrai plein de choses, et le code ne s'en portera que mieux.

    Que préfères-tu : forker le dépôt complet et faire une PR, ou tu crées une issue, et tu attaches un diff (en précisant la licence), et je le commite en ton nom ?

  19. Avatar de neuneutrinos
    • |
    • permalink
    Félicitation de proposer du contenu, moi je n'arrive pas à aller jusqu'au bout

    Je vais revenir sur le code , et je te propose de mettre ton code dans un compilateur en ligne (ideone, repl.it par exemple)
    Comme ça il sera plus simple de tester le code.

    Choisis entre l'anglais et le français pour les commentaires.

    scanf (fscanf , sscanf , etc ...) permettent la lecture formatée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    float x;
    char txt[] = "4e-4";
    sscanf(txt,"%f",&x);
    printf("%f\n",x);//affichera 0.000400
    Donc pas besoin de le recoder (sauf format particulier)
    Il faudra simplement faire attention au retour et à l'encadrement de tes valeurs

    Ce qui simplifiera grandement ton saisie.c

    utils.h

    Voici ta fonction strlcpy
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    /*
     * Copy src to string dst of size siz.  At most siz-1 characters
     * will be copied.  Always NUL terminates (unless siz == 0).
     * Returns strlen(src); if retval >= siz, truncation occurred.
     */
    size_t strlcpy(char *dst, const char *src, size_t siz)
    {
            char *d = dst;
            const char *s = src;
            size_t n = siz;
    
            /* Copy as many bytes as will fit */
            if (n != 0 && --n != 0) {
                    do {
                            if ((*d++ = *s++) == 0)
                                    break;
                    } while (--n != 0);
            }
    
            /* Not enough room in dst, add NUL and traverse rest of src */
            if (n == 0) {
                    if (siz != 0)
                            *d = '\0';                /* NUL-terminate dst */
                    while (*s++)
                            ;
            }
    
            return(s - src - 1);        /* count does not include NUL */
    }
    Je te propose une forme plus épurée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    size_t strlcpy(char *dst, const char *src, size_t siz)
    {
      size_t destLen=siz;
      char *buf=dst;
      if(siz!=0)//siz==0 ? on ne fait rien
      {
        while(*src!='\0' && --siz > 0)//for(;*src!='\0' && --siz > 0;dst++,src++) mais peut être moins lisible
        {
          *dst=*src;
          dst++;
          src++;
        }
        *dst = '\0';
        destLen=destLen-siz;
        //-1 à cause de la troncature.
        if(siz==0)destLen--;
        
      }
      return destLen;
    }
    Si tu mets tous tes MENU_ENTRY_X dans une enum énuméré par défaut , alors ce serait plus simple à utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    enum MenuEntry
    {
     MENU_ENTRY_1,
     MENU_ENTRY_2,
     //...
     MENU_ENTRY_NB
    };
    //MENU_ENTRY_NB correspondra au nombre de MENU_ENTRY , si j'en ajoute , ça se changera tout seul !
    L'utilisation d'enum permet de faire plus simple.
    Mais il y a encore mieux si on prévoit des ajouts dans le menu. On pourrait prévoir un tableau de "MenuItem" par exemple (et pointeurs de fonction pour éviter de hardcoder un gros switch par exemple).

    'HASH' tout en majuscule , est curieuse par rapport au reste de ton code.
    'Hash' ou bien 'hash' serait mieux.

    Ensuite, ta hashTable ... est une liste , pourquoi ne pas la renommer hashList ?

    Le "singleton" est assez étrange, ne serait-il pas intéressant de permettre l'utilisation de plusieurs tables de hashage ?
    Simplement InitHashTable(Hash* hashTable); par exemple ?
    d'ailleurs certaines fonctions n'utilisent pas ce fameux "singleton" comme push , pop , etc ...

    Question idiote ... il n'y a pas de fonction de hashage ?

    Dans le cas où tu n'as pas de collision, une table de hashage doit te retourner/ajouter un élément en O(1) voir O(log(n)).
    Là on est en O(n)...

    On ne profite pas des avantages que l'on attend d'une table de hashage (même naïve).
    On se retrouve avec une liste simplement chainée avec un identifiant pour chaque élément...

    https://jipe.developpez.com/articles.../?page=theorie

    Si tu souhaites un peu d'aide , ce serait avec plaisir
  20. Avatar de ericb2
    • |
    • permalink
    Citation Envoyé par lilivve
    Bonjour Eric,

    [Comme je te le disais ailleurs] j'ai trouvé difficile il y a quelques temps d'utiliser ffmpeg dans un projet en C++.

    Ma difficulté tenait à deux choses :
    - Utiliser une API en C, n'étant pas familier de la programmation en C. Même si c'est loin d'être insurmontable si on est habitué au C++, c'était quand même un peu déroutant.
    - Le manque de documentation concernant ffmpeg. J'ai peut-être raté quelque chose, mais je garde le souvenir d'avoir surtout trouvé des exemples (pas tant que cela) que j'essayais d'adapter, avec le sentiment d'être un peu dans l'obscurité. J'aurais aimé trouver une vue d'ensemble du fonctionnement et de la logique de ffmpeg sans avoir besoin de plonger direct dans son code. J'ai été très étonné de ne rien trouver de mieux, ffmpeg est un formidable outil, utilisé dans pas mal de logiciels, je me suis demandé comment s'en sortait les autres développeurs.

    J'ai l'impression que si un jour j'ai nouveau besoin de faire de l'encodage vidéo dans un programme ton wrapper pourra m"aider (je dis wrapper mais j'ai l'impression que c'est un peu plus non ?), d'autant plus qu'il est fourni avec de nombreux exemples. Je t'encourage donc à continuer, et merci pour ce partage.
    Pour être honnête, c'est surtout celui qui a créé ffmpeg-cpp qui a bien bossé. Mais la version Linux n'avançait pas (malgré les demandes) et le code n'est pas si clean (par exemple, pb de visibilité avec les contextes AVFormat, qui n'est toujours pas résolu , ce qui m'a forcé à utiliser 2 threads). Il reste aussi plein de warnings, avec des re-définitions excessives qui doivent encore causer quelques bugs.

    Mais tu as raison, ffmpeg est plus compliqué à utiliser sous forme C/C++ qu'en script. En ce qui me concerne, c'est en aidant plein de monde à corriger des warnings (par exemple : https://github.com/starkdg/phvideoca...8ac0520f86359c) et en faisant des essais que j'ai commencé à y voir plus clair. Remarque : ça fait quand même plus d'un an que je suis dedans.

    Et c'est le fait de pouvoir utiliser des "briques" pour extraire / associer du son, des images m'a décidé à l'utiliser, car quand on n'a plus à mettre les mains dans le cambouis, c'est un vrai plaisir.

    Si tu as besoin d'aide, pas de problème : attention, la plupart des démos fonctionnent bien, mais les résultats demandent quelques ajustement (en particulier MPEG2). En cas de besoin, tu ouvres une issue sur le framagit et je verrai si je peux aider. amha, le truc, c'est de bien définir ce que tu veux faire, et le reste, c'est normalement facile à faire.

    Ce qui m'impressionne le plus, ce sont les filtres :

    - rotation 90°, crop, zoom : ça fonctionne vraiment comme avec ffmpeg, mais dans le code (un vrai plaisir). Le gars qui a implémenté ça (ce n'est pas moi) a vraiment été bon.

    Pour la suite, je compte implémenter VAAPI : si j'ai bien compris, il me manque la création d'un contexte hardware, et l'accélération matérielle (Intel seulement) devrait fonctionner quasi directement, toujours avec les filtres.


    En tout cas, merci encore pour le retour et les encouragements :-)

    Edit : correction du lien
    Mis à jour 04/06/2020 à 17h03 par ericb2
Page 1 sur 2 12 DernièreDernière