VMR et OSD

Échanges entre les développeurs et les utilisateurs au sujet du développement logiciel de Pouchin TV Mod. Les participants sont présumés avoir des connaissances raisonnables en matière de programmation informatique.
Avatar du membre
Gingko
Administrateur du site et développeur
Messages : 1958
Enregistré le : 05 août 2007, 12:57
Carte Tuner : (champ trop court pour énumérer 8 tuners)
Êtes-vous un robot ? : Je ne suis pas un robot
Localisation : Pantin (IDF, 93)
Contact :

VMR et OSD

Message par Gingko » 29 déc. 2008, 15:39

Bonjour

Je viens de placer dans le SVN une version (r159) qui inclut une réécriture des fonctions VMR (inclut maintenant VMR7 et VMR9) et une réécriture de l'OSD (maintenant compatible Vista avec VMR9).

Merci aux développeurs de tester.

(attention à certaines incompatibilités au niveau des raccourcis programmables)

Gingko
Gingko
․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․
Tuners utilisés, sur 3 ordis : • USB : AverMedia HDTV DVB-T Volar (2×) • PCI : Hauppauge Nova-DT Dual DVB-T • Express Card : AverMedia Digi Express 54

Avatar du membre
lolo_32
Administrateur du site et développeur
Messages : 527
Enregistré le : 22 juil. 2007, 21:46
Carte Tuner : Hauppauge HVR-1300 et HVR-900, et EyeTV Diversity
Êtes-vous un robot ? : Je ne suis pas un robot
Localisation : Dans le pays du fois gras (Gers)
Contact :

Re: VMR et OSD

Message par lolo_32 » 29 déc. 2008, 19:23

Je viens de réécrire une grosse partie pour éviter ces problèmes de raccourcis.
Émetteur TNT: Toulouse - Pic du Midi
Cartes :
  • Hauppauge HVR-1300
  • HVR-900
  • EyeTV Diversity via les pilotes Pinnacle PCTV Dual DVB-T Diversity Stick (2001e)
Pouchin TV Mod : dernière version compilable et de développement

Avatar du membre
ronaldo1
Modo
Messages : 231
Enregistré le : 19 août 2007, 11:56
Carte Tuner : Pinnacle PCTV 3010iX BDA DVBT Tuner
Êtes-vous un robot ? : Je ne suis pas un robot
Contact :

Re: VMR et OSD

Message par ronaldo1 » 30 déc. 2008, 23:59

Salut,
Je n'ai pu faire qu'un petit test sous Vista 64Bits hier soir.
Premier point, je n'ai pas pu compilé en 64Bits (je n'ai regardé pas pourquoi) donc j'ai compilé en 32Bits.
Deuxième point: Lors de mes premiers test je n'ai eu le son moins une seconde d'une seconde mais je n'ai pas eu d'image (Pouchinbad.log)
Troisième point: En redémarrant le PC ça à fonctionné à merveille, rien n'a pu empêcher PTVMod de fonctionner (PouchinGood.log) :wink:

Edit: La consommation µP de PouchinTv 32Bits + ffdshow 32 Bits sous Vista 64Bits est véritablement excessif (3 fois plus importante qu'en temps normal).
Fichiers joints
pouchinGood.log
(7.58 Kio) Téléchargé 21 fois
pouchinBad.log
(10.34 Kio) Téléchargé 21 fois

Avatar du membre
lolo_32
Administrateur du site et développeur
Messages : 527
Enregistré le : 22 juil. 2007, 21:46
Carte Tuner : Hauppauge HVR-1300 et HVR-900, et EyeTV Diversity
Êtes-vous un robot ? : Je ne suis pas un robot
Localisation : Dans le pays du fois gras (Gers)
Contact :

Re: VMR et OSD

Message par lolo_32 » 31 déc. 2008, 15:57

ronaldo1 a écrit :Salut,
Je n'ai pu faire qu'un petit test sous Vista 64Bits hier soir.
Premier point, je n'ai pas pu compilé en 64Bits (je n'ai regardé pas pourquoi) donc j'ai compilé en 32Bits.
Je viens de tester : je n'ai aucun problème pour compiler en 64 bits
ronaldo1 a écrit :Deuxième point: Lors de mes premiers test je n'ai eu le son moins une seconde d'une seconde mais je n'ai pas eu d'image (Pouchinbad.log)
Troisième point: En redémarrant le PC ça à fonctionné à merveille, rien n'a pu empêcher PTVMod de fonctionner (PouchinGood.log) :wink:

Edit: La consommation µP de PouchinTv 32Bits + ffdshow 32 Bits sous Vista 64Bits est véritablement excessif (3 fois plus importante qu'en temps normal).

Est-ce qu'il n'y a pas eu un problème d'incompatibilité avec un logiciel fonctionnant, ou ayant fonctionné pour le problème du deuxième point ? Est-ce que le problème s'est reproduit ?
Émetteur TNT: Toulouse - Pic du Midi
Cartes :
  • Hauppauge HVR-1300
  • HVR-900
  • EyeTV Diversity via les pilotes Pinnacle PCTV Dual DVB-T Diversity Stick (2001e)
Pouchin TV Mod : dernière version compilable et de développement

Avatar du membre
ronaldo1
Modo
Messages : 231
Enregistré le : 19 août 2007, 11:56
Carte Tuner : Pinnacle PCTV 3010iX BDA DVBT Tuner
Êtes-vous un robot ? : Je ne suis pas un robot
Contact :

Re: VMR et OSD

Message par ronaldo1 » 31 déc. 2008, 17:21

Bonjour, en fait je n'utilise jamais Vista sauf pour faire des tests et à par Firefox rien y est installé. Ce que je présume après coup, c'est que la mise à jours de Vista (qui se faisait en même temps que le test) a dû perturber l'affichage de PouchinTv.

Je n'ai pas retesté depuis.

thorcyar
Messages : 50
Enregistré le : 04 nov. 2008, 18:42

Re: VMR et OSD

Message par thorcyar » 02 janv. 2009, 14:38

salut à tous

ça compile bien ici en 64 bits, no souci.

En ce qui concerne l'osd, ça s'affiche, quand même un peu pixélisé (c.f. capture jointe : je suis en 1920x1200 sur le bureau, ça fait un peu étrange mais c'est quand même bien ;) )




1 bug : si on active l'osd dans les menus sans redémarrer, la barre des tâches ne se met plus à jour pour le volume (très mineur)

2eme inconvénient : le changement de volume en quelques sortes "lague" si l'osd est activé.
Fichiers joints
Sans titre.jpg
Sans titre.jpg (10.82 Kio) Vu 14837 fois

Avatar du membre
Gingko
Administrateur du site et développeur
Messages : 1958
Enregistré le : 05 août 2007, 12:57
Carte Tuner : (champ trop court pour énumérer 8 tuners)
Êtes-vous un robot ? : Je ne suis pas un robot
Localisation : Pantin (IDF, 93)
Contact :

Re: VMR et OSD

Message par Gingko » 02 janv. 2009, 21:38

thorcyar a écrit :En ce qui concerne l'osd, ça s'affiche, quand même un peu pixélisé (c.f. capture jointe : je suis en 1920x1200 sur le bureau, ça fait un peu étrange mais c'est quand même bien ;) )


Normal. L'OSD en VMR9 est dessiné sur une image qui a les dimensions natives de la vidéo (sauf en mode "étirer la vidéo"), et qui est donc dilatée au prorata. Je pourrais sans doute faire plus grand, au prix de consommer davantage de mémoire. Je vais y réfléchir.

Il est vrai aussi que je n'ai pas testé sur plus grand que 1280 x 1024.

thorcyar a écrit :1 bug : si on active l'osd dans les menus sans redémarrer, la barre des tâches ne se met plus à jour pour le volume (très mineur)


Je jetterai un oeil à ça. Ca ne doit pas être un très gros problème.

thorcyar a écrit :2eme inconvénient : le changement de volume en quelques sortes "lague" si l'osd est activé.


C'est à cause d'une temporisation explicite que j'ai été obligé d'introduire : si je laissais l'OSD de volume en VMR9 se mettre à jour à la même vitesse qu'avant, il arrivait que ça "casse" la vidéo.

Gingko
Gingko
․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․
Tuners utilisés, sur 3 ordis : • USB : AverMedia HDTV DVB-T Volar (2×) • PCI : Hauppauge Nova-DT Dual DVB-T • Express Card : AverMedia Digi Express 54

MatMaul
Administrateur du site et développeur
Messages : 147
Enregistré le : 03 avr. 2007, 03:16

Re: VMR et OSD

Message par MatMaul » 04 janv. 2009, 22:32

trop bien merci beaucoup :)

MatMaul
Administrateur du site et développeur
Messages : 147
Enregistré le : 03 avr. 2007, 03:16

Re: VMR et OSD

Message par MatMaul » 07 janv. 2009, 17:49

petite question : pourquoi t'utilise le mode renderless avec le vmr7 ?
si je comprend bien le code t'utilise l'allocator presenter par défaut donc vaudrait mieux utiliser le mode windowless non ?
je viens de tester en mode windowless et j'ai aucun pb.

patch :

Code : Tout sélectionner

Index: rendering.cpp
===================================================================
--- rendering.cpp   (revision 162)
+++ rendering.cpp   (working copy)
@@ -580,7 +580,6 @@
 
    virtual HRESULT      CreateAndAdd();
    virtual HRESULT      Configure();
-   virtual HRESULT      PrepareSurface();
    virtual HRESULT      InitDeinterlace();   //!< \todo Voir \p CVideoMixingRenderer::InitDeinterlace
    virtual HRESULT      InitControl();
 
@@ -801,52 +800,17 @@
          TEXT("L'interface de configuration VMR n'est pas disponible"),
          E_NOINTERFACE);
 
-   HRESULT hr = pVMRConfig->SetRenderingMode(VMRMode_Renderless);
+   HRESULT hr = pVMRConfig->SetRenderingMode(VMRMode_Windowless);
 
-   if (SUCCEEDED(hr) && use_vmr_deinterlace)
-      hr = pVMRConfig->SetNumberOfStreams(1);
-   return hr;
-}
-
-HRESULT CVideoMixingRenderer7::PrepareSurface()
-{
-   CComQIPtr<IVMRSurfaceAllocatorNotify> pNotify(*this);
-
-   if (!pNotify)
-      return erreur(
-         TEXT("L'interface IVMRSurfaceAllocatorNotify n'a pas été trouvée"),
-         E_NOINTERFACE);
-
-   CComPtr<IVMRSurfaceAllocator> pSurfAlloc;
-
-   HRESULT hr = pSurfAlloc.CoCreateInstance(CLSID_AllocPresenter, NULL, CLSCTX_INPROC_SERVER);
-
-   if (FAILED(hr))
-      return erreur(TEXT("L'interface IVMRSurfaceAllocator n'a pas été trouvée"), hr);
-
-   {
-      CComQIPtr<IVMRImagePresenterConfig> pPresConf(pSurfAlloc);
-
-      if (!pPresConf)
-         return erreur(
-            TEXT("L'interface IVMRImagePresenterConfig n'a pas été trouvée"),
-            E_NOINTERFACE);
-
-      hr = pPresConf->SetRenderingPrefs(
-            is_vista ?
-            RenderPrefs_AllowOffscreen :
-            (RenderPrefs_ForceOverlays | RenderPrefs_DoNotRenderColorKeyAndBorder)
-         );
-
-      if (FAILED(hr))
-         return erreur(TEXT("Échec de SetRenderingPrefs"), hr);
+   if (SUCCEEDED(hr)) {
+      hr = pVMRConfig->SetRenderingPrefs(
+         is_vista ?
+         RenderPrefs_AllowOffscreen :
+         (RenderPrefs_ForceOverlays | RenderPrefs_DoNotRenderColorKeyAndBorder)
+      );
+      if (SUCCEEDED(hr) && use_vmr_deinterlace)
+         hr = pVMRConfig->SetNumberOfStreams(1);
    }
-
-   hr = pNotify->AdviseSurfaceAllocator(0x118218, pSurfAlloc);
-   myprintf(TEXT("%?erreur AdviseSurfaceAllocator, hr=0x%08x\n"), FAILED(hr), hr);
-   hr = pSurfAlloc->AdviseNotify(pNotify);
-   myprintf(TEXT("%?erreur AdviseNotify, hr=0x%08x\n"), FAILED(hr), hr);
-
    return hr;
 }
 
Index: res.rc
===================================================================
--- res.rc   (revision 162)
+++ res.rc   (working copy)
@@ -176,7 +176,7 @@
     GROUPBOX        "Audio",IDC_STATIC,7,62,276,30
     CONTROL         "Utiliser l'AC3 par défaut",IDC_AC3_DEF,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,75,262,10
     GROUPBOX        "Vidéo",IDC_STATIC,7,98,276,36
-    CONTROL         "Mode VMR7 “renderless”",IDC_USE_VMR7,"Button",BS_AUTORADIOBUTTON,14,108,120,10
+    CONTROL         "Mode VMR7 “windowless”",IDC_USE_VMR7,"Button",BS_AUTORADIOBUTTON,14,108,120,10
     CONTROL         "Mode VMR9 “windowless”",IDC_USE_VMR9,"Button",BS_AUTORADIOBUTTON,14,120,120,10
     CONTROL         "Utiliser l'OSD (On Screen Display\n = texte sur l'écran)",IDC_USE_OSD,
                     "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,161,110,120,17

Avatar du membre
Gingko
Administrateur du site et développeur
Messages : 1958
Enregistré le : 05 août 2007, 12:57
Carte Tuner : (champ trop court pour énumérer 8 tuners)
Êtes-vous un robot ? : Je ne suis pas un robot
Localisation : Pantin (IDF, 93)
Contact :

Re: VMR et OSD

Message par Gingko » 07 janv. 2009, 20:38

MatMaul a écrit :petite question : pourquoi t'utilise le mode renderless avec le vmr7 ?
si je comprend bien le code t'utilise l'allocator presenter par défaut donc vaudrait mieux utiliser le mode windowless non ?
je viens de tester en mode windowless et j'ai aucun pb.

Parce que c'est ce qui existait auparavant.

Je me suis attaché, en mode VMR7, à ne rien changer à l'existant, afin d'être sûr qu'en cas de problèmes avec le VMR9, l'utilisateur ait toujours la possibilité de se rabattre sur le mode de fonctionnement précédent.

Ceci étant dit, la manière dont j'ai implémenté la chose est maintenant éminemment extensible, ce qui veut dire qu'il est normalement possible, pour un coût de développement relativement minime (il suffit de créer les dérivations nécessaires à la classe CVideoMixingRenderer7), d'ajouter des modes de sortie supplémentaires, dont en particulier un mode VMR7 "windowless". J'ai même déjà réservé un code spécifique pour ça dans les items de configuration.

À terme, on pourrait même finir par décider avoir autant de modes de sortie qu'il y en a dans, par exemple, Media Player Classic ou Media Player Classic - Home Cinema.

Gingko
Gingko
․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․
Tuners utilisés, sur 3 ordis : • USB : AverMedia HDTV DVB-T Volar (2×) • PCI : Hauppauge Nova-DT Dual DVB-T • Express Card : AverMedia Digi Express 54

MatMaul
Administrateur du site et développeur
Messages : 147
Enregistré le : 03 avr. 2007, 03:16

Re: VMR et OSD

Message par MatMaul » 07 janv. 2009, 21:39

bin dans l'état actuel ca ma l'air strictement équivalent au windowless.
le renderless est utile quand on utilise un custom allocator presenter ce qui n'est pas le cas pour le moment.

je suis en train de rajouter l'EVR (bon ok c'est quasiment que du copier-coller du vmr9 :P) histoire qu'on supporte l'accélération matérielle sur vista quand pouchin aura le H264 de fonctionnel.

Avatar du membre
lolo_32
Administrateur du site et développeur
Messages : 527
Enregistré le : 22 juil. 2007, 21:46
Carte Tuner : Hauppauge HVR-1300 et HVR-900, et EyeTV Diversity
Êtes-vous un robot ? : Je ne suis pas un robot
Localisation : Dans le pays du fois gras (Gers)
Contact :

Re: VMR et OSD

Message par lolo_32 » 07 janv. 2009, 21:43

Par contre, je me pose une petite question :
pourquoi les zones noires (sur le pourtour de certaines chaînes) qui étaient totalement noire en VMR7 sont simplement gris sombre avec le rendu VMR9 ?
Émetteur TNT: Toulouse - Pic du Midi
Cartes :
  • Hauppauge HVR-1300
  • HVR-900
  • EyeTV Diversity via les pilotes Pinnacle PCTV Dual DVB-T Diversity Stick (2001e)
Pouchin TV Mod : dernière version compilable et de développement

MatMaul
Administrateur du site et développeur
Messages : 147
Enregistré le : 03 avr. 2007, 03:16

Re: VMR et OSD

Message par MatMaul » 07 janv. 2009, 21:50


Avatar du membre
Gingko
Administrateur du site et développeur
Messages : 1958
Enregistré le : 05 août 2007, 12:57
Carte Tuner : (champ trop court pour énumérer 8 tuners)
Êtes-vous un robot ? : Je ne suis pas un robot
Localisation : Pantin (IDF, 93)
Contact :

Re: VMR et OSD

Message par Gingko » 08 janv. 2009, 15:26

lolo_32 a écrit :Par contre, je me pose une petite question :
pourquoi les zones noires (sur le pourtour de certaines chaînes) qui étaient totalement noire en VMR7 sont simplement gris sombre avec le rendu VMR9 ?

Je ne constate pas ce problème, je crains que ça soit difficile à trouver.

Peut-être que l'image OSD incrustée (de dimensions égale à celle de la vidéo), qui a un fond transparent chez moi, ne l'est que partiellement chez toi, mais je ne sais pas pourquoi.

Normalement, c'est la constante colorKey qui détermine cette transparence.

Gingko
Gingko
․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․
Tuners utilisés, sur 3 ordis : • USB : AverMedia HDTV DVB-T Volar (2×) • PCI : Hauppauge Nova-DT Dual DVB-T • Express Card : AverMedia Digi Express 54

MatMaul
Administrateur du site et développeur
Messages : 147
Enregistré le : 03 avr. 2007, 03:16

Re: VMR et OSD

Message par MatMaul » 08 janv. 2009, 15:40

non c'est beaucoup plus "simple" que ca cf le lien que j'ai posté.
ca n'a rien à voir avec pouchin c'est un pb récurrent avec le vmr9, cf le lien pour les différentes solutions.

avec une nvidia c'est simple, MAJ des drivers puis :
NVIDIA Control Panel -> Video & Television -> Adjust video color settings -> Select "With the NVIDIA settings" -> Advanced tab -> Set Dynamic Range to "Full (0-255)".

Répondre