Forum général.général Réflextion avec Xrandr

Posté par  (site web personnel) .
Étiquettes :
0
17
fév.
2011
Bonjour,

Je dois projeter un film dans une salle où le vidéo-projecteur est derrière l'écran, ainsi (V le vidéo-projecteur, | l'écran, P le public): V | P.

Dans ces conditions, les images sont toutes inversées, ce qui est normalement à gauche se retrouve à droite.

L'option --transform de xrandr me permet de remédier à ce problème, mais voici ce que m'indique man xrandr:


--transform a,b,c,d,e,f,g,h,i
Specifies a transformation matrix to apply on the output. Auto‐
matically a bilinear filter is selected. The mathematical form
corresponds to:
a b c
d e f
g h i
The transformation is based on homogeneous coordinates. The
matrix multiplied by the coordinate vector of a pixel of the
output gives the transformed coordinate vector of a pixel in the
graphic buffer. More precisely, the vector (x y) of the output
pixel is extended to 3 values (x y w), with 1 as the w coordi‐
nate and multiplied against the matrix. The final device coordi‐
nates of the pixel are then calculated with the so-called
homogenic division by the transformed w coordinate.
...


Je pourrais tatonner des heures et finir par trouver la solution qui va bien, mais malheureusement, je n'aurai accès au vidéo projecteur que quelques minutes avant la projection...

Ce pdf m'aide un peu à y voir un peu plus clair. Et après mûre réflexion, je me dis que la matrice suivante devrait faire l'affaire:

-1 0 0
0 1 0
0 0 1

J'ai bon?
  • # a defaut du videoprojecteur

    Posté par  . Évalué à 2.

    ca doit marcher avec un ecran externe (qui simule ton videoprojecteur)

    ainsi tu trouveras rapidement la bonne combinaison.
    • [^] # Re: a defaut du videoprojecteur

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

      Justement, je n'ai pas d'écran externe. Je n'ai qu'un ordinateur, c'est un portable.

      Je suis quand même heureux de constater que je ne suis pas le seul à ne rien y entendre en calcul matriciel!
      • [^] # Re: a defaut du videoprojecteur

        Posté par  . Évalué à 2.

        ouais, au debut j'ai cru qu'il suffisait de mettre les a,b,c,d,e,f dans l'ordre qui t'interesse

        ecran normal
        a,b,c
        d,e,f
        g,h,i

        ecran inversé gaucher<->droite
        c,b,a
        f,e,d
        i,h,g

        ecran inversé haut<->bas
        g,h,i
        d,e,f
        a,b,c

        mais j'y crois pas trop
  • # Selon moi...

    Posté par  . Évalué à 1.

    Je ne suis pas tellement un expert en maths ou calcul matriciel, mais après avoir regardé en vitesse le pdf que tu as mis ton idée semble bonne.


    -1 0 0
     0 1 0
     0 0 1


    Si j'ai bien compris ta matrice là fait juste une symétrie d'axe Y et l'image se retrouve de l'autre côté de l'axe, donc tu dois la déplacer d'une largeur d'écran pour qu'elle retrouve sa position initiale.

    Sans garantie, je te dirais d'essayer quelque chose de ce style:



    -1 0 tx
     0 1 0
     0 0 1

    Avec tx la largeur de ta résolution.


    Il te faut donc faire attention à mettre comme valeur à tx la largeur de ta résolution, sinon ton image se retrouverai (par rapport aux illustrations du pdf) à gauche de l'axe Y et donc hors du champ de ton écran.

    Mais je te conseillerai aussi de dégoter un écran externe et d'essayer cela avant parce que c'est typiquement le genre de truc qui ne marche jamais comme tu veux.
  • # --reflect

    Posté par  . Évalué à 5.

    un peu apres transform qui fait des choses tres complexe comme des rotations de 21° si tu en a envie

    seulement comme moi, les matrices, ca date un peu et y a plus simple :

    j'ai trouvé --reflect dans le man
    --reflect
    La symmétrie peut être 'normal', 'x', 'y' ou 'xy'.
    Ceci effectue une symmètrie par rapport aux axes indiqués.
    • [^] # Re: --reflect

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

      Oui, j'ai vu cette option aussi.

      Le problème, c'est qu'elle repose sur une version antérieure du protocole randr, et j'ai peur que ça grince un peu... Je lis le man concernant l'option --q12: "Forces the usage of the RandR version 1.2 protocol, even if the display does not report it as supported or a higher version is available".

      Du coup, je voulais savoir faire comment m'en sortir avec la matrice au cas où...

      (On n'est jamais trop prévoyant)
      • [^] # Re: --reflect

        Posté par  . Évalué à 1.

        La symétrie n'est qu'un type de transformation particulière. Je pense que Xrandr peut très bien la transformer en matrice lui-même.
      • [^] # Re: --reflect

        Posté par  . Évalué à 2.

        La matrice c'est également dans une version récente du protocole, il me semble.
  • # VLC

    Posté par  . Évalué à 6.

    SI ce n'est que pour projeter un film, vlc fait ça très bien

    Outils > Liste des effets et filtres >Effets vidéo > Transformation > Retournement horizontal
    • [^] # Re: VLC

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

      Ah, c'est une bonne idée!

      Il y a d'ailleurs une option du même goût dans mplayer:
      geq=equation. Par ex. 'p(W-X\,Y)' pour retourner l'image horizontalement.
  • # Prévu pour

    Posté par  . Évalué à 5.

    A mon avis, le projecteur est prévu pour retourner l'image lui-même. Sinon ça voudrait dire qu'aucune source vidéo "normale" ne peut être branchée dessus, ni aucun ordinateur non bricolé.
    • [^] # Re: Prévu pour

      Posté par  . Évalué à 1.

      Effectivement, c'est le boulot du vidéo-projecteur d'adapter l'image à l'installation ; car peu de sources sont capables de s'adapter, et de toute façon, ce n'est pas à elles à savoir comment est faite l'installation. Enfin, c'est comme ça sur tous les vidéo-projecteurs que j'ai pu voir.

  • # Merci à tous!

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

    Avec les options --q12 et --reflect tout a très bien fonctionné.

Suivre le flux des commentaires

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