Document sur le développement de mplayer

Posté par  (site web personnel) . Modéré par Fabien Penso.
Étiquettes :
0
3
jan.
2003
Audiovisuel
Árpád Gereöffy (A'rpi), le développeur principal de mplayer (un lecteur de vidéos), vient d'écrire un article très intéressant sur son développement qui a débuté il y a maintenant 2 ans.

Il a souligné l'apport important de l'open source à l'avancement du projet, à faire lire à tout ceux qui hésitent à mettre leurs logiciels sous licence libre.

(la dernière version est la 0.90rc2) On y apprend notamment l'extrême popularité de ce logiciel (1er sur les stats freshmeat devant le kernel) et comment SourceForge a gêné le développement.

Mais le point le plus important est certainement les informations concernant l'apport de l'open source au logiciel puisque après 1 an et demi pratiquement 30 développeurs travaillent sur MPlayer régulièrement et plus de 100 personnes ont envoyés des patchs ou des bug fixes !

De nombreuses parties de MPlayer ont été développées en commun ou reprises d'autres projects comme Avifile, Xine, FFMpeg, OMS, mpeg2dec...

D'un autre coté, malheureusement seulement 0.1% des utilisateurs ont écrit des bugreports utilisables.

Je recommande de faire lire ce document à tout ceux qui développent des logiciels de type freeware ou shareware pour qu'ils prennent conscience de l'apport de l'OpenSource sur le plan du développement d'un logiciel (et il y a bien sur beaucoup d'autres avantages tous aussi importants)

Aller plus loin

  • # MplayerXP fork de MPlayer avec support des threads

    Posté par  . Évalué à 5.

    C'est "MPlayer avec utilisation des threads". Ce n'est pas MPlayer qui fourni les threads.

    Sinon le multi-threading n'est pas très intéressant.

    Si mplayer est lancé avec l'option -cache [nombre] il y a deux proces mplayer. Un pour loader la video et un autre pour l'afficher.

    exemple :
    $ mplayer -vo x11 -cache 65536 toto.avi
    ...
    dans une autre console :
    $ ps ax | grep mplayer
    2359 pts/1 R 0:00 mplayer -vo x11 -cache 65536 toto.avi
    2361 pts/1 S 0:00 mplayer -vo x11 -cache 65536 toto.avi
    $ kill -SIGSTOP 2361

    La video continue tant que le buffer n'est pas vide.
    • [^] # Re: MplayerXP fork de MPlayer avec support des threads

      Posté par  (site web personnel) . Évalué à 10.

      "MplayerXP fork de MPlayer avec support des threads" ca veut dire que c'est une version qui supporte les threads, je vois vraiment pas en quoi ca pourrait etre interprete comme "fourni les threads" (c'est vraiment tire par les cheveux) meme si le mot utilisation est clairement plus jolie

      sinon c'est quoi l'interet de killer le processus a la video ? je vois vraiment pas !

      L'auteur de MplayerXP veut du multithread pour pouvoir "repartir" la charge : a des moment le cpu ne fait rien alors qu'a d'autre moment sur une machine peut puissante il va devoir dropper des frames, l'idee est donc de pre-calcule des frames.
      Donc c'est uniquement utile sur les petites becannes et/ou lorsque l'on fait fonctionner MplayerXP en meme temps que d'autres programmes.

      Arpi a tout simplement repondu que l'on pouvait pre-decompresse des frames sans avoir recourt aux threads (il deteste apparemment) qui posent plusieurs problemes (debug et profilage plus difficile, prend plus de ressources...)
      • [^] # Re: MplayerXP fork de MPlayer avec support des threads

        Posté par  . Évalué à -5.

        > c'est une version qui supporte les threads
        GNU/Linux supporte les threads via Linux et la libc. Si je veux faire tourner un programme qui utilise les threads, il faut que je cherche un OS qui supporte les threads.

        Et je ne peux pas faire tourner Apache 2 sur MPlayer même si selon toi MPlayer supporte les threads :-) . Si le fait d'utiliser quelque chose fait que tu le supportes alors on peut dire que MPlayer supporte les systèmes de fichier journalisé :-) .

        Si MPlayer lit du quicktime, c'est bien MPlayer qui fait le boulot et c'est donc bien lui qui donne un support pour quicktime.

        Je sais que l'on lit souvent :
        - la plate-forme Linux est supporté par tel programme.

        Ce qu'il faut comprendre dans ce cas, c'est que les développeurs supportent le programme sur cette plate forme.

        D'ailleur on a souvent :
        - "Unsupported plateforme but seems to work..."
    • [^] # Re: MplayerXP fork de MPlayer avec support des threads

      Posté par  . Évalué à 6.

      Qui est riche et a un P4 avec "hyperthreading" (beurk je déteste ce terme marketing)?

      Pour voir s'il y a une difference entre mplayer et mplayerXP sur cette machine..

      Dans sa présentation (très intéressante d'ailleurs), il dit que mplayer est rarement utilisée sur des machines SMP, ce qui doit etre vrai mais on peut penser que les machines SMT vont se généraliser:
      - Intel avec son hyperthreading
      - AMD a déposé un brevet sur le SMT, donc probablement dans le futur..
      • [^] # Re: MplayerXP fork de MPlayer avec support des threads

        Posté par  . Évalué à 7.

        Il dit aussi qu'un seul CPU (pas trop vieux) suffit à lire tous les médias.
        Donc l'optimisation pour les p4 hyperthréadés et autres quand la lecture d'un fichier vidéo en plein écran occupe moins de 5% du temps cpu, ca me parait pas être LA priorité.

        Il parle aussi d'un projet de rendre mplayer utilisable en temps que plugin pour les browsers web; je trouve l'idée très alléchante. Par exemple j'ai installé le plugin realvidéo mais il doit marcher sans bidouille sur un site sur 10. Et pour le quicktime ou les autres formats (winmedia etc.) il n'existe pas de solution, à part peut être le crossover plugin (qui est payant et non libre) et qui marchait pas mieux que le plugin real quand j'ai essayé la démo.
      • [^] # Re: MplayerXP fork de MPlayer avec support des threads

        Posté par  (site web personnel) . Évalué à 5.

        Pour l'instant, le SMT, c'est du SMP à 2 balles vu que les unités d'execution du CPU sont partagées entre les 2 CPU virtuels. C'est pour ça qu'a moins de lancer deux applis très différentes (genre un gros calcul en virgule flottante d'un côté et un calcul en entier de l'autre), on ne gagne pas grand chose. Ca peut même être plus lent dans certains cas.

        Mais bon, un SMT bien fait (avec plus d'unités d'execution disponibles par exemple), ça pourrait devenir intéressant...
        • [^] # Re: MplayerXP fork de MPlayer avec support des threads

          Posté par  . Évalué à 3.

          C'est vrai ce n'est pas cher en transistor le SMT, mais au lieu de voir cela comme du SMP bas de gamme, tu peux aussi voir cela comme l'évolution logique du superscalaire: pour utiliser le plus possible d'unité de traitement en paralléle, quand une thread ne suffit pas en utiliser plusieurs!

          Je ne suis pas tout a fait d'accord avec toi sur le fait qu'il faut lancer 2 applis différente pour que le gain soit intérressant: n'oublie pas que les unités d'execution sont aussi pipelinée: le SMT te permet de boucher les trous du pipeline..

          C'est vrai que le SMT peut etre plus lent dans certains cas comme quand il y a un conflit pour le cache par exemple or les caches du P4 ne sont pas énormes..
        • [^] # Re: MplayerXP fork de MPlayer avec support des threads

          Posté par  (site web personnel) . Évalué à 10.

          le SMT a 2 balles il permet tout de meme d'avoir 30% de perf en plus dans la plupart des cas

          faut que tu lises les tests, tout le monde est unanime pour dire que HyperThreading est une veritable reussite (tout comme ils etaient unanimes pour dire que le P4 1er generation c'etait de la merde)

          seulement 35% des unites de calculs sont occupes en utilisation courante sur un P4 normale, HyperThreading essaye simplement de combler ce probleme. et pour cela ils utilisent seulement 5% de la surface du die, donc ca coute que dalle, surtout par rapport a du SMP.

          A l'avenir Intel sortira le Prescot avec 4 processeurs logiques, 1 MB L2 et gravure 0.09µ

          Si tu veux mon avis, le SMP va pratiquement disparaitre dans un avenir proche. Quel sera l'interet de payer un truc beaucoup plus cher pour peu de performance en plus ?
          • [^] # Re: MplayerXP fork de MPlayer avec support des threads

            Posté par  . Évalué à 3.

            Hyperthreading 2 processeurs virtuels: 30% de performances en plus quand ça va bien.
            SMP 2 processeurs réels: 100% de performance en plus dans tous les cas.

            Et de toute façon, même en faisant 4 ou 8 processeurs virtuels, il n'y a jamais qu'un processeur réel, donc on peut au mieux l'utiliser à 100%, en SMP 4 processeurs c'est au mieux 400% d'un seul.

            Moi je le vois l'intérêt.
            • [^] # Re: MplayerXP fork de MPlayer avec support des threads

              Posté par  . Évalué à 2.

              Tu oublie un facteur: le prix.

              Le SMP coute nettement plus cher que le SMT!

              Si tu vois l'interet pourquoi tu n'utilise pas du SMP avec 64 processeur?
              Ah, c'est trop cher?

              Pour autant que je me souviennes le SMT tel qu'implémenté sur les P4 prends 5% de surface de Silicium en plus sur la partie logique du CPU: des clopinettes quand on compare au prix du SMP avec carte mere spéciale et tout.

              De plus tu peux tres bien utiliser du SMT en SMP, si tu as suffisamment de thread, ce n'est pas du tout incompatible..
              • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                Posté par  . Évalué à 1.

                Pour le SMT aussi il faut une carte mère spéciale (mais ça fait moins cher qu'une SMP bien sûr). Et vu la différence de performance je trouve la différence de prix normale. Et puis en SMP si tu augmente les nombre de processeurs ça augmente vraiment tes performances (en supposant une bonne utilisation du multitâche bien sûr), alors qu'augmenter les processeurs virtuels en SMT ne fait que te rapprocher des performances max d'un seul processeur. Enfin, j'ai peut-être mal compris, je suis pas un spécialiste non plus ;-)
                • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                  Posté par  (site web personnel) . Évalué à 3.

                  1er : le SMP, on est tous d'accord, c'est mieux au niveau performance que le SMT, c'est evident. Mais le SMP ne te donne pas 100% de perf en plus si tu rajoutes un proco, depuis le temps je croyais que tout le monde etait au courant. 2e : le SMT c'est loin d'etre un pauv truc marketing, le MMX, SSE truc muche en revanche c'est clairement que du marketing. d'ailleurs a l'epoque du 1er pentium MMX (le 166 et le 200MHz) ils avaient augmente la taille du cache L1 par rapport aux meme procs sans MMX alors forcement les cretins de journalistes attribuaient l'augmentation de perf aux instructions MMX. Ici le SMT permet d'obtenir le maximum du processeur (le P4 a ete dessine pour le SMT notamment la FPU). Pour moi c'est une evolution aussi importante que l'introduction du pipeline, du out of order, du branch prediction ect... moi je trouve que c'est une reelle innovation. Si pour l'instant c'est pas encore parfait, ca va s'ameliorer. Et ce gain de perf on l'obtient sans rien faire, sans devoir recompiler quoi que se soit, sans foutre des bouts de code en assembleur ou re-ecrire les compilos comme pour les MMX truc merde. Il suffit juste de faire fonctionner plusieurs threads en meme temps c'est tout : donc la meme condition que pour le SMP Y'a pas que les perfs dans la vie, y'a aussi le prix qui compte. Sinon tout le monde aurait des bi-procs le rapport qualite/prix ca a son importance et celui-ci est bien plus important pour le SMT que le SMP -> au revoir SMP, c'est la loi de la nature.
                  • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                    Posté par  (site web personnel) . Évalué à 4.

                    le MMX, SSE truc muche en revanche c'est clairement que du marketing.

                    Faut arréter les rideaux ! C'est pas bon pour la santé.
                    Les P4 arrivent à fumer les Athlons pour des applis comme le divx grace au SSE. Sinon la fpu x87 du P4 est 2x plus lente que celle de l'athlon.

                    Le problème des nouvelles instructions est qu'il faut les utiliser pour bénéficier de leurs avantages qui sont bien réelle.

                    "La première sécurité est la liberté"

                    • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                      Posté par  (site web personnel) . Évalué à 3.

                      Oui et le divx c'est sur, ca represente un gros pourcentage d'applications !

                      C'est ridicule parceque il faut coder specifiquement pour ces instructions or tous les proc ne les supportent pas et dans un avenir probablement plus aucun proc ne les supporteront, il n'y a aucune garantie. Tu achetes un proc pour les performances qu'ils apportent juste pour les divx ou pour toutes les applications restantes ? Libre a toi d'acheter un Pentium 4 parceque il y a SSE2 dedans et pas dans les autres procs, moi je trouve ca particulierement stupide.

                      Y'a un principe fondamental en architecture (et pas uniquement dans ce domaine) : optimiser le cas le plus courant et ne pas perdre de temps sur les cas qui ne le sont pas.
                      Or ici tu viens juste d'ecrire que c'est utile que pour quelques applications notamment le divx : bref ces instructions specifiques ne profitent qu'a un faible pourcentage.

                      Si on resume les instructions que tu cheries tant, elles sont :
                      - applicables qu'a un faible nombre de soft
                      - il faut re-ecrire des parties du soft pour en tirer profit
                      - on devient plus ou moins dependant de ces instructions et ca complique le code avec tous les problemes que ca comporte
                      - il y a aucune garantie de perenite

                      Donc oui au final c'est utile pour les divx ou les mp3, cool : mieux vaut avec que sans mais ca reste anecdotique et principalement du marketing.
                      En attendant HyperThreading ca ameliore la rapidite de tous les softs dans un environement multi-threade tout comme les innovations comme le risc, ooo, l'introduction du pipeline, le branch prediction etc... sans devoir bidouiller le code de ton programme.

                      Lis Computer Architecture A Quantitative Approach
                      C'est une reference dans le domaine et ensuite tu comprendras que c'est du pipo, il y a un court paragraphe dessus.

                      merci d'avoir participer.
                      • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                        Posté par  (site web personnel) . Évalué à 1.

                        Et moi, je te dis d'aller plus loin qu'un bouquin qui a plus de 10 ans dans un domaine qui est révolutionné tous les 4 ans...

                        optimiser le cas le plus courant et ne pas perdre de temps sur les cas qui ne le sont pas

                        Evidement ! Et quel sont les "killer" applications qui font vendre du pc puissant ? Les mp3, divx et autre jeux 3D. Et quelles sont les applications qui bénéficient des instructions SIMD ?

                        Sinon tu n'as jamais aucune garantie de pérénité pour aucun processeurs. Jamais. Par contre, si intel a gagné face au motorola et ses 68xxx puis power pc, c'est justement grâce à la compatibilité ascendante. Ils n'y toucheront donc jamais.

                        Donc oui au final c'est utile pour les divx ou les mp3, cool : mieux vaut avec que sans mais ca reste anecdotique et principalement du marketing.

                        Non, ce n'est pas du marketing ! A l'époque de la sortie du mmx, ce n'est pas de la faute d'Intel si les journalistes étaient trop incultes pour comprendre comment le MMX marchait.

                        De plus, tu as bien une augmentation des performances très substanciel des applications applicants des calculs lourds (3D, traitement du signal, traitement d'image,..). C'est une technique qui provient des supercalculateurs vectoriel, type Cray et autre Nec ESS (mais avec des vecteurs de centaines de nombre pas de 4). Ce n'est pas anécdotique du tout.

                        applicables qu'a un faible nombre de soft

                        Son, video, 3D, Simulation ... hum oui, tu as raison il manque juste la bureautique. Mais en wysiwyg, il y a souvent des rendus à faire...

                        - il faut re-ecrire des parties du soft pour en tirer profit

                        C'est le plus gros point noire. C'est aussi des instructions pas facile à utiliser (sinon tous les softs en bénéficieraient).

                        - on devient plus ou moins dependant de ces instructions et ca complique le code avec tous les problemes que ca comporte

                        Et alors ? C'est toujours le problème lorsque l'on veut des perfs (prefetch, strip mining, ...).

                        - il y a aucune garantie de perenite

                        Il n'y en a jamais eu sauf que l'histoire d'Intel fait qu'il ne joueront pas à ce jeu-là.

                        Sinon le SSE2, qui n'existe que sur le P4 et pas encore sur l'Athlon, apporte le support SIMD 64 bits (donc des double) qui sont très souvent utilisé dans les programmes scientifques car la précision 32 bits ne suffit souvent pas. C'est donc un progres dans l'utilisation d'instructions SIMD dans du code scientifique (Simulation, ...).

                        L'avantage du SIMD sur toute autre techniques est que tu augmentes le nombre d'opérations par cycle d'horloge sans augmenter d'une porte la complexité du circuit de control. C'est tous l'interret de la téchnique.

                        merci d'avoir participer.

                        nicO, f-cpueur.

                        "La première sécurité est la liberté"

                        • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                          Posté par  (site web personnel) . Évalué à 2.

                          Et moi, je te dis d'aller plus loin qu'un bouquin qui a plus de 10 ans dans un domaine qui est révolutionné tous les 4 ans...

                          c'est con de se discrediter comme ca
                          j'ai la derniere edition (3e, 15 mai 2002) et ca traite de tous les procs actuelles sur le marche et des toutes dernieres evolutions : t'as le P4 et les derniers Athlons dedans et pas juste sur une page.

                          et moi je te dis que dans 10 ans ton SSE2 ca fera longtemps qu'on utilisera plus.

                          Dans la realite il y a peu d'applications qui utilisent ces instructions, et si on fait des benchs je suis persuades que sur la majorite des softs qui les utilisent, on voit meme pas la difference.

                          rien que en 4 ans, il y a eu MMX, SSE, SEE2 et le truc de Motorola. meme si c'est souvent complementaire, c'est un element essentiel de marketing et les constructeurs jouent dessus. On va pas s'amuser a re-ecrire du code tous les 18 mois.

                          de toute facon je me te ferais pas changer d'avis et tu risques pas de me faire changer du mien.
                          • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                            Posté par  (site web personnel) . Évalué à 2.

                            Il a du sortir une nouvelle révision rescement alors. :)

                            Sinon MMX -> SIMD entier (assez pourris d'ailleurs non orthogonal et beaucoup 16 bits)
                            SSE -> SIMD float
                            SSE2 -> SIMD double
                            ALTIVEC -> SIMD pour Power PC, pourquoi voudrais-tu que cela soit compatible avec des instructions x86 ?

                            Donc les 4 ne sont pas vraiment équivalent entre eux !

                            et moi je te dis que dans 10 ans ton SSE2 ca fera longtemps qu'on utilisera plus.

                            Et moi, je dis que l'on utilisera plus que ça. Parce que des codes accèlère vraiment beaucoup avec et parce qu'il existe des instructions SSE scalaire que Gcc préfaire mille fois à la pile x87...
                            (c'est une mauvaise raison mais c'est sans doute la plus vrai)

                            Il y a 20 ans y'a beaucoup de monde qui trouvait que les 8086 ne valait pas grand chose devant les 68000.

                            et si on fait des benchs je suis persuadé que sur la majorité des softs qui les utilisent, on voit meme pas la difference.

                            Et bien tu te gourres lourdement ! Quand tu as un gros MAC à faire, qu'est-ce qu'il vaut mieux comme coeur de boucle :


                            MUL [V1] [V2] V3
                            Add V3 V4

                            V1, V2 coeff et donné, V3 donnés temporaires et V4 Accumulateur dont il faut ensuite additonner les 4 valeurs (chez intel) pour avoir le résultat final.

                            ou 4 fois la même chose en scalaire ?

                            Peut-être te rappelles-tu la fierté des Maceux dont les filtres Photoshop allait bien plus vite que ceux des PC ayant une fréquence quasi double ? Et bien, c'était juste grace à l'ALTIVEC bien mieux foutu que le MMX.

                            "La première sécurité est la liberté"

                            • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                              Posté par  (site web personnel) . Évalué à 1.

                              il existe des instructions SSE scalaire que Gcc préfaire mille fois à la pile x87

                              oui voila un point interessant.
                              A l'heure ou l'on programme en Java, actuellement c'est dans les applications clientes que l'on utilise ces instructions. C'est completement anachronique !
                              c'est le job du compilo. Tant que l'on devra se palucher le code a la mano et ben c'est de la rigolade et ca restera anecdotique.
                              la pile x87 dans 5 ans il en restera plus grand chose.

                              Il y a 20 ans y'a beaucoup de monde qui trouvait que les 8086 ne valait pas grand chose devant les 68000

                              et c'est toujours le cas
                              c'est pas toujours les meilleurs qui gagnent et la majorite n'a pas toujours raison : c'est injuste mais c'est la vie
            • [^] # Re: MplayerXP fork de MPlayer avec support des threads

              Posté par  . Évalué à 10.

              "2 processeurs réels: 100% de performance en plus dans tous les cas."

              dans tes rêves, petit, dans tes rêves...
          • [^] # Re: MplayerXP fork de MPlayer avec support des threads

            Posté par  . Évalué à 3.

            Pour appuyer le débat sur un exemple précis, je vais donner un test réel que j'ai fait sur un Bi-Xeon 2.4GHz avec/sans HyperThreading.

            Compilation d'un noyau avec 'make -j 4'
            avec HT : 365s
            SANS HT : 206s !!
            J'ai refait le test plusieurs fois, car tellement j'y croyais pas.

            Alors dites moi encore que le HT est un succes...
      • [^] # Re: MplayerXP fork de MPlayer avec support des threads

        Posté par  . Évalué à 2.

        J'ai un XP 1600 avec une carte video ATI Rage pro IIC. Aucune accélération video n'est utilisé. En 1024x768 j'utilise 50 % du cpu. Donc le multi-threading n'est pas une priorité. Sauf pour faire tourner sur du hardware rare comme des bi-pIII ...
        • [^] # Re: MplayerXP fork de MPlayer avec support des threads

          Posté par  . Évalué à 2.

          Y a des choses bizarres quand-meme suivant les formats d'encodage. J'ai un P3 866 avec GeForce2 MX, les drivers Nvidia et les videos plein ecran en 1600x1200 me prennent environ 22% du CPU en divx4 ou 5. En Xvid ca tombe a 7 ou 8%. Et dans certains cas, des formats identifies comme du xvid me donnent 2%, ce que j'ai beaucoup de peine a croire. Je suppose que l'acceleration video y est pour quelque-chose mais qu'est-ce qui explique des ecart si importants ?
          • [^] # Re: MplayerXP fork de MPlayer avec support des threads

            Posté par  . Évalué à 3.

            Hum, et tu compare des vidéos de même résolution codées avec le même bitrate et les mêmes paramètres de qualité?
            Sinon ta comparaison ne veut rien dire!
            • [^] # Re: MplayerXP fork de MPlayer avec support des threads

              Posté par  . Évalué à 1.

              Oui, il me semble que je suis suffisamment malin pour ne pas comparer la vitesse de decompression d'une video en 800kbps et une en 1600kbps, bien que sur ma machine ca ne fasse pas une grande difference question % de CPU. Toutes les options de mplayer sont les memes dans les deux cas.
              • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                Posté par  . Évalué à 0.

                le divx il n'aurait pas des b frame par hassard ?

                Et puis vu que le divx et xvid sont tous les 2 du mpeg4, je vois pas le rapport avec le format d'encodage, mais ça a plutot un rapport avec le "codec" utilisee pour la decompression, et la il se peut que certains comme xvid soit plus optimise pour ton processeur que d'autre (divx)....
          • [^] # Re: MplayerXP fork de MPlayer avec support des threads

            Posté par  . Évalué à 2.

            Quelle version de noyau tu as ?

            J'ai eu des valeurs similaire avec 2.4.17 . Je n'ai plus retrouvé de telle valeur avec un 2.4.18.
            • [^] # Re: MplayerXP fork de MPlayer avec support des threads

              Posté par  . Évalué à 1.

              J'ai un 2.4.18 de la Slack 8.1. A mon avis, la carte graphique joue beaucoup, mais est-ce que ca veut dire que certaines routines de decodage font plus appel a l'acceleration hard que d'autres, suivant le codec ?
              • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                Posté par  . Évalué à 1.

                Avec le 2.4.17 j'avais des valeurs de consomation de cpu ridicule. Par exemple pour un avi 720x576 j'avais 2 % de cpu utilisé (je n'ai aucune accélération video). Mais en utilisant une benckmark en parallèl à le lecture du fichier avi me montrait que mon cpu n'était pas dispo à 98 % pour le bench.

                Lorsque je suis passé sous 2.4.18 j'avais enfin des valeurs cohérentes.
                • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                  Posté par  . Évalué à 1.

                  D'accord. Il est possible que ce soit l'affichage des valeurs de CPU qui ne soit pas bon. Neanmoins il m'est arrive de ripper tout en regardant un divx sans voir de difference, donc je pense que le % ne doit pas etre trop sous-estime. Dans tous les cas, merci pour ces precisions.
          • [^] # Re: MplayerXP fork de MPlayer avec support des threads

            Posté par  . Évalué à 0.

            suivant les formats d'encodage Je rappelle qu'en bon français on dit "format de codage"; on dit aussi "coder" et "décoder", "message codé" (wismerhill a d'ailleurs employé la forme correcte plus haut, en réponse à ton commentaire).
      • [^] # Re: MplayerXP fork de MPlayer avec support des threads

        Posté par  . Évalué à 9.

        Hum, bon si on met a part le pipotron qu'est l'hyperthreading ( super j'ai mit autent de cache que sur un Xeon ou un itanium, mais vue que je veux pas concurencer le Xeon et l'itanium je le divise en 2 histoire bien diminuer les perfs ...).

        Le mainteneur de mplayer a été trés claire la dessus ( il a méme laisser partir l'un de ses meillieur dev faire son fork mplayerXP ), le multithreading n'apporterait rien ou presque a mplayer méme sur un systéme SMP, a moin que ce soit des 486 ! mplayer tourne largement sur un processeur méme peut puissant ( 500-600Mhz ), si ton systéme est bien foutue le shudler va equilibrer la charge et foutre mplayer sur l'un des processeur point barre, nul besoin d'utiliser les 2 via des thread puis que 1 est emplement suffisant.

        Niveau hypertrucmuche de intel ca prouve simplement gain de 50% de perfs c'est du pipo, et que cette technologie sert simplement a complet la perte de perf du a l'utilisation de trops nombreux threads via une gestion du cache astucieuse dans ce cas precis mais desastreuse pour les autres, mais la on entre dans des interet economique autres ( voir la new sur l'ecart croissant entre AMD et Intel ).
        • [^] # Re: MplayerXP fork de MPlayer avec support des threads

          Posté par  . Évalué à 6.

          Ben desole mais je pense au contraire que l'approche threadee est bien plus judicieuse.

          Ca permet de :

          1) Faire le boulot tant que tu as le temps, tu ne sais pas si dans les 2 minutes qui suivent toto ne va pas lancer une compile avec un make -j 25 pour le fun ou autre truc bourrin qui va etrangler ton mplayer niveau acces CPU

          2) Balancer la charge, plutot qu'avoir ton mplayer qui passe de 5 a 20% d'utilisation de temps en temps, la courbe d'utilisation CPU s'adoucit, ce qui est bien mieux point de vue temps de reponse

          3) Le design est plus propre, et tire parti au mieux des perfs du systeme. Parce qu'il faut bien se souvenir que les x% de cycles CPU utilises par mplayer pendant un moment donne(et qui auraient pu etre utilise avant quand il n'y avait pas urgence) sont x% de cycles que les autres softs ne peuvent pas utiliser, et peut-etre qu'ils en auraient besoin eux.
          • [^] # Re: MplayerXP fork de MPlayer avec support des threads

            Posté par  . Évalué à 6.

            1) Entre nous, tu lances pas un make -j 25 pendant que tu mates une video. On connait son systeme et ses limites, en general, et je doute que le multithreading permette des prouesses revolutionnaires.
            2) Je n'ai jamais constate de telles variations d'occupation du CPU, que ce soit pour
            lire du mpeg, du divx ou des DVDs. J'ai en permanence du 22% +ou- 3%. L'interet d'adoucir la courbe se trouve grandement reduit.
            3) Oui, mais comme 1)
            • [^] # Re: MplayerXP fork de MPlayer avec support des threads

              Posté par  . Évalué à 4.

              Toi non, mais si une autre personne branchee sur ta machine lance un truc un peu lourd, tu l'as dans le fion avec ton film.

              Et le fait est que l'on est en train de se diriger vers ce genre de chose pour les PC de maison aussi, avec genre une machine qui est au centre d'un tas de bordel qu'elle controle, et tout ca tourne en arriere plan, et tu n'as aucune idee de ce que tel periph voudra faire demain pendant que toi tu seras en train de regarder ton DivX ou autre, donc autant faire les choses bien des le debut plutot qu'avoir un design limite qui demandera encore plus de changements plus tard.
              • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                Posté par  . Évalué à 1.

                Toi non, mais si une autre personne branchee sur ta machine lance un truc un peu lourd, tu l'as dans le fion avec ton film.
                Je crains qu'en multithreads ça fasse la meme chose, si le truc un peu lourd dure un peu longtemps, et puis mplayer possede une option cache qui permet d'eviter d'avoir des pb si l'occupation du cpu est de courte durree...

                ...donc autant faire les choses bien des le debut plutot qu'avoir un design limite qui demandera encore plus de changements plus tard.
                oui, mais d'apres le developpeur de mplayer seul les noyeaux recents permetent une gestion correcte des threads et il faudra encore attendre le noyeau 2.5, pour que la frequence passe de 100Hz a 1000hz

                Enfin je prefere qu'ils se concentrent sur des choses plus importante (comme un meilleur support des cartes nvidia) avant de penser aux threads...
          • [^] # Re: MplayerXP fork de MPlayer avec support des threads

            Posté par  (site web personnel) . Évalué à 0.

            Tu m'épates là ! Tes arguments sont complétements à inverser.

            1/ Pour faire, la même tâche si tu utilises 2 threads au lieu d'un seul tu perds des cycles à passer de l'un à l'autre. Si TUX (serveur http noyau) déchire, c'est parce qu'il fait de la zero copie et qu'il n'a PAS un thread par utilisateur. Sur un monoprocesseur, à cause des changement de tâche, tu perds du temps. Si quelqu'un lance un gros boulot, le scheduler doit juste scheduler un thread de plus. Cela ne lui fait que perdre du temps.

            Sur un bi-pro (ou SMT), tu repartis la charge, genre 2% sur chaque cpu. Or les partages de mémoire font que les caches sont sous utilisé (en SMP) mais pas en SMT. Or en SMT, si des optimisations typé SMP sont utilisé (grosse séparation des flux mémoire pour éviter de trasher les caches) la pression sur les caches devient énorme (les caches miss s'envole aussi). Les optimisations SMT/SMP sont antagonistes sur la gestion des caches.

            2/ Vu que l'ordonanceur à un process/thread de plus à traiter, tu le ralentie. Si tu est sur un bi-pro, dans le cas monothread, un cpu est libre donc le temps de réponse est minimal à un événement extérieur. Ce n'est absoluement pas le cas en multi-thread.

            3/ Tu tire mieux parti d'un bi-pro certe mais au détriment du temps de réponse. Tu ne fais que perdre du temps sur un monoprocesseur. Le design est bien plus complexe à maintenir. Cela semble sans doute plus propre pour un serveur mais du point de vue performance c'est pas terrible du tout.

            Parce qu'il faut bien se souvenir que les x% de cycles CPU utilises par mplayer pendant un moment donne(et qui auraient pu etre utilise avant quand il n'y avait pas urgence) sont x% de cycles que les autres softs ne peuvent pas utiliser, et peut-etre qu'ils en auraient besoin eux.

            A tache égal, un multithread prendra toujours plus de cycle globalement qu'un monothread. Donc, je ne comprends pas ce que tu veux dire.

            "La première sécurité est la liberté"

            • [^] # Re: MplayerXP fork de MPlayer avec support des threads

              Posté par  . Évalué à 5.

              Tu n'as jamais du faire de softs multithreads pour dire un truc pareil.

              Un exemple tres simple pour mplayer, ce qu'il faut faire :
              1) lire les donnees
              2) les decoder
              3) les afficher

              Le point 1) implique des acces disque, chose EXTREMEMENT lente par rapport aux acces memoires et autres operations.
              Bref, si tu fais un soft monothread, ton soft passe son temps a lire, stopper, decoder, afficher, lire, stopper, decoder, afficher,...

              Si tu as 2 threads, tu as un thread qui s'occupe de lire les donnees du disque, pendant que l'autre s'occupe de decoder/afficher.

              Resultat des courses:
              - Ton soft multithread est plus rapide qu'un soft monothread, car mplayer ne se tourne pas les pouces pendant que les donnees sont lues depuis le disque.

              De meme, ce soft multithread pourra faire du boulot EN AVANCE, ce qui evite d'avoir besoin de ressources CPU plus tard, ce qui evite des saccades et autres dans le cas ou elles ne seraient pas disponibles,...

              La regle c'est : Fais le boulot quand tu as le temps plutot qu'attendre le derniere moment et te retrouver dans un cul de sac.

              Le multithread au total ca prend effectivement quelques cycles de plus, mais en temps, ca en prend moins, car ca gaspille moins de cycles, c'est ca le miracle.
              Les machines en general gaspillent un nombre de cycles enorme a ne rien faire, et les lenteurs viennent du fait que plusieurs softs demandent des ressources au meme moment, faire du travail a l'avance, ca evite ces problemes, faire du multithread pour des softs qui font pas mal de calculs sur des donnees lues depuis le disque, c'est gagner enormement en perfs.
              • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                Posté par  (site web personnel) . Évalué à 3.

                Ce que tu décris s'appelle les acces asynchrones ou non bloquant (asyncIO). Il me semble que la glibc sait faire ça depuis longtemps elle même et que linux 2.4 le prends en charge maintenant commeun grand.

                Il est donc parfaitement inutile de programmer un thread pour ça.

                De plus, lors d'acces io, si le temps est trop long, le scheduler peut décider de donner la main à un autre process (cela se voit facilement avec l'utilisation d'un lentissime printf). Tu ne perds donc aucun cycle.

                Si ta machine ne fait qu'une seule tache, un monothread sans io non bloquante étant bloqué à chaque io, tu perds des perf sur ce process-là uniquement. Mais globalement, ta machine peut faire d'autres trucs. Il n'y a pas de gaspillage.

                Si tu veux augmenter les perf c'est-à-dire parraléliser acces disque et calcul, et bien, les io asynchrones ou non bloquantes sont faites pour ça !

                "La première sécurité est la liberté"

                • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                  Posté par  . Évalué à 3.

                  Ce que tu décris s'appelle les acces asynchrones ou non bloquant (asyncIO). Il me semble que la glibc sait faire ça depuis longtemps elle même et que linux 2.4 le prends en charge maintenant commeun grand.

                  Il est donc parfaitement inutile de programmer un thread pour ça.


                  Non, ce que je decris c'est une methode naturelle d'utiliser au mieux les perfs, que ta machine soit SMP ou pas, le soft fera au mieux (rien n'interdit d'utiliser les async I/O dans un soft multithread, c'est meme conseille), tout en simplifiant le design.

                  De plus, lors d'acces io, si le temps est trop long, le scheduler peut décider de donner la main à un autre process (cela se voit facilement avec l'utilisation d'un lentissime printf). Tu ne perds donc aucun cycle.

                  Exact, ce qui revient a dire que pendant que l'acces I/O s'effectue, ton process qui est sense afficher une video est stoppe.
                  Hors le but ici ce n'est pas d'economiser au maximum des cycles, c'est d'avoir une video qui s'affiche de maniere fluide, et de faire du boulot en avance en prevision de problemes futurs.

                  Si les threads s'imposent de plus en plus comme le modele a suivre c'est pas pour rien, c'est definitevement plus efficace que le modele monothread.
                  • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                    Posté par  (site web personnel) . Évalué à 1.

                    ton process qui est sense afficher une video est stoppe.

                    euh ? oui, mais ce n'est pas forcément grave. Ce n'est important que si ton process ne tient pas ses deadlines dans tous les autres cas...

                    Si tu veux anticipé des brusques indisponnibilités du système, tu utilises des caches. Un asynch io fait le boulot que tu veux faire : lire le bloc suivant pendant que tu traites le bloc courant.

                    Les thread ne sont pas plus efficaces (sauf lors d'application vraiement interractive et qui ont des phases lente à faire laguer l'affichage comme certain client mail).

                    Ils sont juste plus facile à coder. L'exemple typique sont les serveurs multi-threadé qui enfle à chaque nouveau connecté. Si TUX (serveur web kernel plus rapide encore que khttpd) déchire tant c'est bien parce que il n'utilise pas un thread par connection !

                    "La première sécurité est la liberté"

                    • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                      Posté par  . Évalué à 1.

                      Ils sont juste plus facile à coder. L'exemple typique sont les serveurs multi-threadé qui enfle à chaque nouveau connecté. Si TUX (serveur web kernel plus rapide encore que khttpd) déchire tant c'est bien parce que il n'utilise pas un thread par connection ! On est bien d'accord qu'utiliser un thread par connection est une connerie, c'est un coup a se prendre un DoS a coup sur, mais c'est pour ca que le concept de thread pool existe. Mais si tu jettes un oeil sur la plupart des softs serveurs, les plus performants utilisent courramment plusieurs process ou plusieurs threads, ce qui revient plus ou moins au meme(qqe segments de memoire partagee par-ci par-la et c'est presque la meme chose). Ce n'est pas un hasard. SQL Server, Oracle, Zeus, Texis,... Tous ces softs utilisent plusieurs threads/process plutot qu'un seul thread, et ils n'ont pas ete ecrits par des manchots.
                  • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                    Posté par  . Évalué à 2.

                    je te conseille de lire ça: http://home.pacbell.net/ouster/threads.ppt Hors le but ici ce n'est pas d'economiser au maximum des cycles, c'est d'avoir une video qui s'affiche de maniere fluide, et de faire du boulot en avance en prevision de problemes futurs. C'est justement un argument contre les threads. Les threads ont une réponse temporelles contraintes par l'OS. Pour atteindre des temps de réaction très courts (inférieur à quelques millisecondes) dans un environnement multithreadé, c'est un vrai casse tête, il faut souvent se débrouiller pour "couper" la commutation de tâche comme en plaçant son thread en haute priorité. Problême, parfois, on emmène l'OS en enfer, particulièrement ceux de MS ! Si les threads s'imposent de plus en plus comme le modele a suivre c'est pas pour rien, c'est definitevement plus efficace que le modele monothread. on vit pas dans le même monde. Si dans les gros calculs ou des environnements graphiques, l'utilisation des threads est un plus malgrè les inconvénients, l'utilisation des threads est déconseillés ou même interdite dans l'embarqué.
                    • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                      Posté par  . Évalué à 2.

                      Ouais, de plus il faut rappeler que dans mplayer, la synchro est primordiale. On veut pas que le décodeur d'images continue si le décodeur s'arrete, par exemple. Et puis, ne pas avoir threadé mplayer permet de l'intégrer plus facilement à d'autres projets je pense (dans un thread par exemple).. Par contre, je trouve abusé que les textes d'Arpi donnent toujours l'impression d'un reglement de compte.. Ne pas meme avoir mentionné Nick ou mplayerxp, ou avoir mentioné gst parmis les projets non-actifs, c'est limite..
          • [^] # Re: MplayerXP fork de MPlayer avec support des threads

            Posté par  . Évalué à 3.

            le multi-threading ne répond pas aux :
            1)
            2)
            3)

            > Le desing est plus propre
            Il n'y a pas de raison à çà. La lecture de flux video est très séquencielle.

            > tire parti au mieux des perfs du systeme.
            Le temps de gestion des threads (verrouillage de ressources etc...) il faut bien le payer.

            Apache 2 a gagné en perfo en utilisant les threads par rapport à Apache 1.3 car il économisait des fork() . Le fork() étant plus couteux sous windows, c'est sous windows que le gain de perfo est important.
            Malheureusement, mplayer ne forke pas ...
            • [^] # Re: MplayerXP fork de MPlayer avec support des threads

              Posté par  . Évalué à 2.

              mplayer fait :
              1) lecture depuis le disque
              2) decodage
              3) affichage

              Vu le type d'operation effectue, il est evident qu'un model multithreade est plus efficace pour ce type de soft.

              Faire sequentiellement de la lecture(qui revient a s'arreter et attendre que le systeme d'I/O complete la requete), decodage, puis affichage, c'est perdre du temps.
              Tu peux tout a fait avoir un thread qui lit depuis le disque et stocke les buffer en RAM et d'autres threads qui s'occupent du decodage et de l'affichage pendant que l'operation d'I/O du/des buffers suivants est effectuee, ca c'est un modele qui optimise l'utilisation du CPU et qui te donne un player performant.

              J'aurais presque envie d'ajouter quelque mots sur les I/O completion ports, mais je vais aller dormir un peu avant :+)
              • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                Posté par  (site web personnel) . Évalué à 2.

                Non tu perds globalement des perfs sur ton système. Un process qui ne prends que 40 % de cpu se fout du temp passé dans la lecture du disque pour tenir ses deadlines. Dans les 60% non utilisé est compté le temps passé à attendre les io.
                Tu ne peux que gaspiller de la puissance dans la gestion des thread et le traching de mémoire cache en faisant plus compliqué.

                Tu aura peut-être plus de puissance pour tenir des deadline à 500 images/s mais ce n'est pas ça que l'on demande au codec.

                "La première sécurité est la liberté"

              • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                Posté par  . Évalué à 4.

                > Vu le type d'operation effectue, il est evident qu'un model multithreade est plus efficace pour ce type de soft.

                Je doit conclure que tout les programmes qui ont l'algo :
                1) lecture depuis le disque
                2) decodage (traitement)
                3 affichage (retour des informations)

                son plus rapide s'ils sont "multi-threadés". Vivement un grep/sed/awk... multi-thread alors ?

                > Faire sequentiellement de la lecture(qui revient a s'arreter et attendre que le systeme d'I/O complete la requete),

                Oui et non.

                Les lectures de disque sont lente mais ne consomme pas de cpu. De plus tu peux très bien faire des lectures non bloquante et c'est très très rapide.
                Lorsque tu fais un read() non bloquant et qu'il n'y a pas de donné dans le cache, les données seront lues par le noyau plus tard alors que ton programme est "ailleur". A çà tu ajoutes un buffer, peut-être l'utilisation de select() et l'affaire est plié.

                Actuellement mplayer utilise deux proces (et non deux threads !) :
                - un pour la lecture
                - un pour le décodade et affichage

                Les deux proces sont utilisés uniquement si l'option -cache est spécifié. L'utilisation de deux proces est intéressante pour un fichier avi sur le réseau (http://....(...)) car le noyau ne peut pas "bufferiser" ce qui est sur le réseau.
                • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                  Posté par  . Évalué à 0.

                  Actuellement mplayer utilise deux proces (et non deux threads !) : - un pour la lecture - un pour le décodade et affichage Les deux proces sont utilisés uniquement si l'option -cache est spécifié. L'utilisation de deux proces est intéressante pour un fichier avi sur le réseau (http://....) car le noyau ne peut pas "bufferiser" ce qui est sur le réseau. En gros, il fait deja ce que je recommande :+) Avoir 2 threads ou 2 process n'est pas tres different, avoir 2 process rend les choses un peu plus compliquees car il faut gerer soi-meme les segments de memoire partagee mais a part ca il n'y a pas grande difference, un thread est moins lourd a creer qu'un process sur la plupart des architectures(normal, il y a moins de boulot a faire). Sans compter qu'avoir 2 threads plutot que 2 process, ca permet d'utiliser des spin-locks(bcp + rapide que des mutex dans bcp de cas car pas de context-swtich) sans se casser la tronche a gerer soi-meme leur creation dans des segments de memoire partagee. Bref, mieux vaut avoir des threads au bout du compte, ca simplifie.
                  • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                    Posté par  . Évalué à 1.

                    > Bref, mieux vaut avoir des threads au bout du compte, ca simplifie. Le multi-threading est moins portable. De plus, dans ce cas précis avec mplayer l'utilisation d'ipc pour la mémoire partagé est suffisant et sans le moindre coût. L'utilisation dans ce cas précis de semaphore doit être superflux. Pour ce cas précis (je me répète :c| ) le multi-thread est sans intérêt...
                    • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                      Posté par  . Évalué à 1.

                      Le multi-threading est moins portable Ca je veux bien, c'est effectivement un probleme. De plus, dans ce cas précis avec mplayer l'utilisation d'ipc pour la mémoire partagé est suffisant et sans le moindre coût. L'utilisation dans ce cas précis de semaphore doit être superflux. Ca c'est faux pour la simple et bonne raison que les 2 process doivent se synchroniser l'un l'autre pour etre sur qu'un process ne lit pas trop, et que l'autre process ne decode pas trop, etc... Bref, utiliser des primitives de synchro est inevitable, et utiliser des spin-lock pour ca est bcp plus efficace qu'un semaphore qui implique un context-switch.
                      • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                        Posté par  (site web personnel) . Évalué à 1.

                        a mon avis c'est ca qui fait peur au devs de mplayer

                        c'est pas evident de passer à de la prog avec des threads sans avoir à reflechirs tout les problemes de sync.

                        Il y a à gagner en terme de perf (P4 & SMP), mais bon tout recoder avec des threads, les lock et companie ca doit les gonfler
                      • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                        Posté par  . Évalué à 1.

                        > Ca c'est faux pour la simple et bonne raison que les 2 process doivent se synchroniser

                        C'est que la gestion d'une fifo !

                        Il n'y a qu'un producteur et qu'un consommateur !

                        Donc le pointeur lecture courante est un mis à jour par un proces.
                        Le pointeur écriture courante est un mise à jour par un proces.
                        Il n'y a pas d'écriture d'une même zone mémoire par deux proces différents.

                        J'aimerai que tu me montres où il est nécessaire d'utilser des sémaphore, spin-lock ou autre !

                        Faut pas chercher midi à 14 heure.
                        • [^] # ???

                          Posté par  (site web personnel) . Évalué à 1.

                          Comment tu fais pour garantir que ce que doit lire le lecteurs est cohérent ? Comment garantir que le paquet de donné qu'il est en train de lire est été fini d'écrire par l'écrivain sans système d'exclusion mutuelle ?

                          "La première sécurité est la liberté"

                        • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                          Posté par  . Évalué à 1.

                          J'aimerai que tu me montres où il est nécessaire d'utilser des sémaphore, spin-lock ou autre !

                          A vrai dire c'est justement pour ce genre de situation que Dijkstra a introduit les sémaphores étant donné que la solution proposée par Peterson induisait des inversions de priorité et gachait du temps CPU. Ta solution ne garantit aucune exclusion mutuelle puisqu'il n'y a pas de protection de la mémoire en écriture. Au final, il y'a de très grandes chances pour que les données lues soient incorrectes.
                          Le problème consommateur/Producteur ne peut pratiquement se résoudre qu'à l'aide de sémaphores ou bien de moniteurs (mais bon c'est très anecdotique) donc, là, il faut chercher midi à 14 heure et utiliser les sémaphores.
                          • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                            Posté par  (site web personnel) . Évalué à 1.

                            ah si il y a un moyen qui utilise l'instruction compare-and-swap x86.

                            En gros, tu fonctionnes avec un tableau pointeur sur des paquets de donné.

                            - Tu sauves la valeur de pointeur
                            - Tu sauves les données à modifier
                            - Tu modifies les données (ou tu les créait)
                            - Tu utilise le compare and swap sur la vieille valeur du pointeur et le pointeur, si il a changé retour au début
                            - sinon, tu a updaté le pointeur.

                            A prioris, tu ne peux pas perdre de cohérence avec ça. Si tu utilises le même algo partout pour l'acces aux donnés du tableau de pointeurs.

                            "La première sécurité est la liberté"

                            • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                              Posté par  . Évalué à 1.

                              Je ne connaissais pas cette solution mais c'est vrai qu'elle fonctionne. En fait quand j'ai affirmé qu'il n'était pas possible de résoudre le problème Consommateur/Producteur sans sémaphores, j'excluais, de facto, des solutions "hard". Dans le même style, il existe une instruction TSL (Test and Set Lock) qui permet la lecture et ecriture de la mémoire de manière atomique, aucun autre process ne peut acceder à la mémoire tant que cette instruction n'est pas terminé mais là aussi, on retrouve le même problème qu'avec la solution de Peterson et puis on bloque le bus mémoire.
                              En tout cas je pense que si on reste à un niveau supérieur à l'assembleur (le C par exemple), les sémaphores sont l'unique solution à ce problème. Ce qui est drôle c'est que ce problème est assez vieux (les sémaphores datent de 1965, il me semble) mais on continue de chercher des solutions à ce problème :+)
                  • [^] # Re: MplayerXP fork de MPlayer avec support des threads

                    Posté par  . Évalué à 1.

                    Note que par défaut il n'y a qu'un proces... C'est donc suffisant dans la majorité des cas.
  • # Re: document sur le développement de mplayer

    Posté par  . Évalué à 2.

    Je m'excuse mais "Avifile, librairie et lecteur de videos" en bon français on dit BIBLIOTHEQUE et non librairie. Rhaaaaa c'est pas vrai ça (tudieu et les cours d'anglais ça ne sert pas qu'a jouer à la bataille navale) une librairie vend des bouquins, une bibliotheques les prete.... patati patata non sans dec' c'est pas que ça me gène faut rester coherent, enfin c'est une idée personnel.
    Excuser moi encore ça été plus fort que moi
    • [^] # Re: document sur le développement de mplayer

      Posté par  (site web personnel) . Évalué à 0.

      tient j'en rajoute une couche, on ne dit pas "je m'excuse" ni meme "excusez moi" mais "je vous pris de bien vouloir m'excuser" pourquoi ? parceque s'excusez soi meme tout le monde comprendra que c'est tres mal polie. de meme donnez un ordre avec un verbe a l'imperatif c'est pas mieux.
      • [^] # Re: document sur le développement de mplayer

        Posté par  (site web personnel) . Évalué à 1.

        Curieux, je pensais que telle était justement la fonction de l'impératif... D'autre part, des verbes à l'infinitif se terminant en "ez" sont pour moi choses nouvelles... (pour ne citer que les erreurs en relation directe avec le sujet ;-)) Bref, on ne s'en sort pas :-)
        • [^] # Re: document sur le développement de mplayer

          Posté par  (site web personnel) . Évalué à -2.

          Merci de corriger ce qui est tout a fait juste !

          si ca termine par "ez" c'est parceque c'est justement pas un infinitif.

          "excusez moi"
          le verbe est a l'imperatif, ce n'est pas un infinitif
          on donne un ordre a l'autre personne, on peut le reformuler par "tu dois m'excuser" et sous cette forme on voit clairement que c'est pas tres polie mais c'est desormais passe dans les moeurs et on y est habitue.
          si on remplace le verbe excuser par prendre on ne dit pas "prendre moi" mais "prenez moi" ba la c'est pareil on ecrit pas "excuser moi" mais "excusez moi" (on dit aussi "prend moi" ce qui donne "excuse moi")

          On ne s'excuse pas soi meme, on demande gentillement (donc sans imperatif) a la personne de nous excuser.

          Donc on s'en sort tres bien si on cherche pas des erreurs la ou il y en a pas. Il faut tremper 7 fois sa plume dans son encrier avant d'ecrire une connerie.

          Maintenant tu as le droit de repondre et de demander si je peux t'escuser avec une jolie phrase "je vous prie de bien vouloir m'excuser".
          • [^] # Re: document sur le développement de mplayer

            Posté par  (site web personnel) . Évalué à 1.

            Je faisais bien évidemment référence à ta phrase "parceque s'excusez soi meme tout le monde comprendra que c'est tres mal polie. de meme donnez un ordre avec un verbe a l'imperatif c'est pas mieux."

            Bref... je te renvoie au commentaire un peu plus bas qui est plus complet sur la question de l'orthographe. Il est déjà agaçant d'avoir des commentaires sur une malheureuse faute d'orthographe/grammaire, mais si ce dernier en contient 8 (sans compter les accents)...

            -1 (ah non merde ya plus, il serait bien utile pourtant)
      • [^] # Re: document sur le développement de mplayer

        Posté par  . Évalué à 2.

        Ta correction est bienvenue mais tu peux encore améliorer ton orthographe ;-)

        «tient j'en rajoute une couche, on ne dit pas "je m'excuse" ni meme "excusez moi" mais "je vous pris de bien vouloir m'excuser"»
        - "tient" -> "tiens"
        - "je vous pris" -> "je vous prie"
        - "excusez moi" -> "excusez-moi".

        «parceque s'excusez soi meme tout le monde comprendra que c'est tres mal polie. de meme donnez un ordre avec un verbe a l'imperatif c'est pas mieux»
        - "parceque" -> "parce que"
        - "s'excusez" -> "s'excuser"
        - "soi meme" -> "soi-même"
        - "c'est tres mal polie" -> "c'est très malpoli"
        Par ailleurs, il manque des virgules dans ton texte, que j'écrirais ainsi :
        "parce que s'excuser soi-même, tout le monde comprendra que c'est très malpoli. De même, donner un ordre avec un verbe à l'impératif, ce n'est pas mieux"
      • [^] # Re: document sur le développement de mplayer

        Posté par  . Évalué à 1.

        En ce qui me concerne j'ai plutôt tendance à dire "désolé", c'est court, ça remplis à peu près la même fonction que "veuillez m'excuser", ça ne demande rien à l'interlocuteur et ne dépend que de moi (je veut dire par là que je reconnais avoir commis une faute, le "veuillez m'excuser" en lui-même n'est pas une reconnaissance de faute, mais une demande à autrui de pardonner ce que lui considère comme une faute).
    • [^] # Re: document sur le développement de mplayer

      Posté par  . Évalué à 1.

      Tu as raison pour la question de bibliothèque, par contre j'en profite pour quelques remarques de français.

      "ça ne sert pas qu'a jouer à" -> "ça ne sert pas qu'à jouer à" (il y a un accent car il ne s'agit pas du verbe "avoir")

      "ça me gène
      " -> "ça me gêne"

      "une idée personnel" -> "une idée personnelle"

      Quand à "excuser moi", Tanguy Krotoff a déjà fait la correction mais incomplète car il a oublié le tiret : "excusez-moi".
      • [^] # Re: document sur le développement de mplayer

        Posté par  . Évalué à 1.

        rho vous êtes dur; je me suis pris -3 pour le coup. Tout cela pour vouloir apporter un peu de mon long et dure apprentissage de nevrosé de l'informatique dans des écoles française (veuillez svp remarquer le ç). Où de charmants professeurs on su à coup de règles en bois me faire passer l'envie de dire libraire en lieu et place de bibliotheque. Je m'attendais à de fortes réactions vis-à-vis de mon orthographe et pour cela j'avais bien relu 4 ou 5 fois mon texte, mais c'était sans compter mon esprit pernitieux semant le doute au plus profond de cette culture que jai française et laissant grande ouverte la voie aux fautes voir aux lamentables erreurs d'accentuation, ou de féminin (veuillez s'il vous plais mes dames me pardonner) que je trainerais tout au long de ma vie (que j'espere longue). Je vous remercie quand même pour ce doux souvenir de dictée où jamais je n'ai excéllé et où les histoires finissaient toujours par des -3. La prochaine fois promis je me munierais de mon bescherelle ainsi que de mon bled si vous consentez à vous munir de dictionnaire anglais-français, français-anglais.
        Merci encore.
        En esperant ne pas me ramasser un -5. :)

        ps:
        n'empeche que maintenant dans le titre de la nouvelle il y a bibliotheque. :)
        merci encore.
  • # KMPlayer

    Posté par  (site web personnel) . Évalué à 10.

    un soft qui a l'air bien sympa (j'ai pas teste)
    http://www.xs4all.nl/~jjvrieze/kmplayer.html(...)

    c'est un frontend pour MPlayer pour KDE et ca s'integre a Konqueror/khtml

    les commentaires et votes sur apps.kde sont positifs :
    http://apps.kde.com/fr/2/info/vid/8515?br=true&sid=dad585ad9dc1(...)
    • [^] # Re: KMPlayer

      Posté par  (site web personnel) . Évalué à 1.

      Je confirme il marche nickel

      L'association LinuxFr ne saurait être tenue responsable des propos légalement repréhensibles ou faisant allusion à l'évêque de Rome, au chef de l'Église catholique romaine ou au chef temporel de l'État du Vatican et se trouvant dans ce commentaire

      • [^] # Re: KMPlayer

        Posté par  . Évalué à 1.

        J'ai essayer hier soir, enfin ce matin, et ca marche impec mais est ce qu'il y a un moyen de voir les sites qui font des pop up de .rm ou autre avec ?
        Il faut mettre un type mime spécial?
  • # Re: Document sur le développement de mplayer

    Posté par  . Évalué à 3.

    Rappelons aussi cette astuce: mplayer lancé avec l'option -rootwin ou -wid 0 permet de faire afficher la vidéo dans le fond de l'écran Avec les options -fs (fullscreen) et -loop 0 c'est un régal !
    • [^] # Re: Document sur le développement de mplayer

      Posté par  . Évalué à 1.

      mplayer lancé avec l'option -rootwin ou -wid 0 permet de faire afficher la vidéo dans le fond de l'écran Pas chez moi avec la version 0.90pre10 ni avec la 0.90rc1, tu es sûr de ton option ? Elle n'est pas documentée dans l'aide en ligne de commande du programme ("mplayer -h").
      • [^] # Re: Document sur le développement de mplayer

        Posté par  . Évalué à 1.

        Je sais que ça fonctionne chez moi mais je me souviens plus si c'est -root ou -rootwin (suis pas chez moi :)
      • [^] # Re: Document sur le développement de mplayer

        Posté par  . Évalué à 2.

        Apprenons ensemble ;-) Dans une console: man mpalyer et quelques pages plus loin... -rootwin: Play movie in the root window (desktop background) instead of opening a new one. Works only with x11, xv, xmga and xvidix drivers. -wid <window> This tells MPlayer to use a X11 window, which is useful to embed MPlayer in a browser (with the plugger extension for instance). Attention cela ne fonctionne pas avec tous les WM, je n'ai par exemple jamais réussi avec KDE.
        • [^] # Re: Document sur le développement de mplayer

          Posté par  . Évalué à 3.

          C'est normal que sous KDE, l'affichage de mplayer ne marche pas car la fenêtre racine (root) est utilisée par KDE pour l'affichage des papiers peints. Pour que l'astuce marche il faut donc un gestionnaire qui ne gère pas directement cette fenêtre racine comme Enlightemnent, FVWN, ... On peut faire aussi une petite décoration avec les économiseurs d'écran en les lançant avec l'option "--root" soit par exemple sur une Mdk 9.0 :

          /usr/X11R6/lib/xscreensaver/ifs -root

          (le répertoire peut varier en fonction des distribs)

          A+
        • [^] # Re: Document sur le développement de mplayer

          Posté par  . Évalué à 3.

          Pour KDE il faut passer par l'intermédiaire du programme de fond d'écran de KDE (kdesktop). Regarde dans la configuration du fond d'écran, tu peut choisir un programme de fond d'écran et tu peut en ajouter d'autres.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.