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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Api C++ pour video controllers


Sujet :

C++

  1. #1
    Membre confirm� Avatar de jagboys
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    166
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 166
    Par d�faut Api C++ pour video controllers
    Bonjour � tous,

    Je travaille sur un projet o� il faut r�cup�rer le stream d'une carte tuner tv usb.
    L'OS est Windows 10.

    Au d�but j'ai pens� pouvoir travaill� avec les API Media Foundation mais apr�s avoir pass� du temps � chercher sur MSDN j'ai trouv� qu'il ne supporte pas les cartes TV.
    L'api arrive � �num�rer les p�riph�riques de types webcam sans probl�mes mais pas les cartes TV.

    Je me suis donc rabattu vers DirectShow.
    L� encore j'arrive � �num�rer les p�riph�riques de types webcam mais pas les cartes TV.
    Apr�s recherche j'ai compris qu'il faut travailler avec les filtres et les couches d'acc�s BDA (Broadcast Driver Architecture). Cependant il n' y a pas vraiment de guide sous MSDN.

    Avez vous une id�e d'ou je pourrais trouver des exemples ou des guides ?
    Si vous d'autres id�es ou API je suis preneur pour exp�rimenter.

    Merci de vos conseils.

  2. #2
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    Que dit le site du constructeur de ta carte?

  3. #3
    Membre confirm� Avatar de jagboys
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    166
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 166
    Par d�faut
    Bonjour,
    A part les pilotes rien sur le sujet.
    Merci,

  4. #4
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 504
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 504
    Par d�faut
    Ces drivers sont-ils compatibles BDA ?
    Sinon, ils doivent bien impl�menter une API, non ?

  5. #5
    Expert confirm�

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Software Developer
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par d�faut
    Salut!

    En utilisant DirectShow, quelle m�thode as-tu suivi pour �num�rer les pr�riph�riques de capture pr�sents sur ta machine?
    Ta casrte TV fournit-elle des filtres DirectShow te permettant d'utiliser ce dernier? Ou juste une API propri�taire?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert � rien, mais qu'il est joli (des fois) : ProceduralGenerator (G�n�ration proc�durale d'images, et post-processing).

  6. #6
    Membre confirm� Avatar de jagboys
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    166
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 166
    Par d�faut
    Salut !

    Voici la m�thode que j'ai utilis� pour lister les p�riph�riques. (je l'ai prise du MSDN)
    Le r�sultat est qu'il trouve bien ma webcam mais pas la carte tv.

    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
     
            HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
    	if (SUCCEEDED(hr))
    	{
    		IEnumMoniker *pEnum;
     
    		hr = EnumerateDevices(AM_KSCATEGORY_TVTUNER, &pEnum);
    		if (SUCCEEDED(hr))
    		{
    			DisplayDeviceInformation(pEnum);
    			pEnum->Release();
    		}
    		hr = EnumerateDevices(CLSID_VideoInputDeviceCategory, &pEnum);
    		if (SUCCEEDED(hr))
    		{
    			DisplayDeviceInformation(pEnum);
    			pEnum->Release();
    		}
    		hr = EnumerateDevices(CLSID_AudioInputDeviceCategory, &pEnum);
    		if (SUCCEEDED(hr))
    		{
    			DisplayDeviceInformation(pEnum);
    			pEnum->Release();
    		}
    		CoUninitialize();
    	}
    Sur ma machine voila ce que j'ai comme p�riph�riques :

    Nom : tvtuner.png
Affichages : 268
Taille : 25,2 Ko

    Merci pour votre aide.

  7. #7
    Expert confirm�

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Software Developer
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par d�faut
    Ca ne dit pas si ton driver fournit des filtres DirectShow, et apparemment ce n'est pas le cas, vu que ton code d'�num�ration de devices a l'air correct.
    Pour savoir s'il y a des filtres DShow pour ta carte, tu peux tenter d'utiliser GraphEdit, et de regarder les filtres disponibles.

    Sinon, tu as un SDK, pour taper sur ta carte tuner?

    EDIT:

    On peut voir le code de DisplayDeviceInformation?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert � rien, mais qu'il est joli (des fois) : ProceduralGenerator (G�n�ration proc�durale d'images, et post-processing).

  8. #8
    Membre confirm� Avatar de jagboys
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    166
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 166
    Par d�faut
    Bonjour,

    Je ne connais pas bien cette partie. En cherchant j'ai trouv� GraphEdit et voila ce que j'ai comme filtres.

    Nom : bda_filter_1.png
Affichages : 252
Taille : 15,4 Ko

    Nom : bda_filter_2.png
Affichages : 264
Taille : 14,1 Ko

    Je ne vois pas de filtres sous DShow concernant cette carte.
    Au niveau API je n'ai rien non plus.

    Comment peut on faire ?

    Un logiciel comme PouchinTVMod arrive � voir cette carte. J'ai fouill� ces sources mais je n'arrive pas � tout comprendre.
    A aucun moment, il fait cet �num�ration.

    Sinon voici le code de DisplayDeviceInformation :

    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
    void DisplayDeviceInformation(IEnumMoniker *pEnum)
    {
        IMoniker *pMoniker = NULL;
     
        while (pEnum->Next(1, &pMoniker, NULL) == S_OK)
        {
            IPropertyBag *pPropBag;
            HRESULT hr = pMoniker->BindToStorage(0, 0, IID_PPV_ARGS(&pPropBag));
            if (FAILED(hr))
            {
                pMoniker->Release();
                continue;  
            } 
     
            VARIANT var;
            VariantInit(&var);
     
            // Get description or friendly name.
            hr = pPropBag->Read(L"Description", &var, 0);
            if (FAILED(hr))
            {
                hr = pPropBag->Read(L"FriendlyName", &var, 0);
            }
            if (SUCCEEDED(hr))
            {
                printf("%S\n", var.bstrVal);
                VariantClear(&var); 
            }
     
            hr = pPropBag->Write(L"FriendlyName", &var);
     
            // WaveInID applies only to audio capture devices.
            hr = pPropBag->Read(L"WaveInID", &var, 0);
            if (SUCCEEDED(hr))
            {
                printf("WaveIn ID: %d\n", var.lVal);
                VariantClear(&var); 
            }
     
            hr = pPropBag->Read(L"DevicePath", &var, 0);
            if (SUCCEEDED(hr))
            {
                // The device path is not intended for display.
                printf("Device path: %S\n", var.bstrVal);
                VariantClear(&var); 
            }
     
            pPropBag->Release();
            pMoniker->Release();
        }
    }
    Merci de votre aide.

  9. #9
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 504
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 504
    Par d�faut
    Il faut savoir doit vient "IEnumMoniker *pEnum" pass� en param�tre.

  10. #10
    Expert confirm�

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Software Developer
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par d�faut
    Il est r�cup�r� auparavant (dans un de ses messages pr�c�dents)
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert � rien, mais qu'il est joli (des fois) : ProceduralGenerator (G�n�ration proc�durale d'images, et post-processing).

  11. #11
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 504
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 504
    Par d�faut
    Oui, �a c'est dans son code, moi, c'est dans le code de "PouchinTVMod" qui lui r�cup�re le mistigris.

  12. #12
    Inactif  

    Homme Profil pro
    Ing�nieur test de performance
    Inscrit en
    D�cembre 2003
    Messages
    1 986
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur test de performance
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 1 986
    Par d�faut
    Bonjour.

    Cela ressemble � un cas particulier que je n'ai jamais rencontr�, surtout l'histoire du BDA.

    Voici deux liens en rapport avec BDA :

    https://msdn.microsoft.com/fr-fr/lib...(v=vs.85).aspx

    https://msdn.microsoft.com/fr-fr/lib...(v=vs.85).aspx

    Ce n'est pas tr�s document�, mais cela semble se rapprocher de votre probl�me. Dans tous les cas, c'est une piste que j'explorerais. Notamment ceci :

    If you are creating a digital TV graph manually (rather than using the Video Control), use CoCreateInstance and IFilterGraph::AddFilter to add this filter to the graph. The ICaptureGraphBuilder2 interface does not automatically add this filter to the graph.

  13. #13
    Membre confirm� Avatar de jagboys
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    166
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 166
    Par d�faut
    Bonsoir,

    Je commence � comprendre comment PouchinTvMod arrive � r�cup�rer ces infos.

    Il attaque directement la base des registres en cherchant par exemple les GUID suivant :

    HKLM\SYSTEM\ControlSet001\Control\DeviceClasses

    KSCATEGORY_BDA_NETWORK_TUNER = 71985F48-1CA1-11d3-9CC8-00C04F7971E0
    KSCATEGORY_BDA_RECEIVER_COMPONENT = FD0A5AF4-B41D-11d2-9C95-00C04F7971E0

    La base des registres donne le devicepath. Grace � ce devicepath, j'ai l'impression qu'il cr�e le Moniker.

    Je trouve que c'est un peu tordu dans le sens ou l'on utilise pas l'API DShow.

    Je vais de voir si l'on peut arriver � �num�rer avec la cat�gorie KSCATEGORY_BDA_NETWORK_TUNER.

    Bref c'est quoi la diff�rence de KSCATEGORY_BDA_NETWORK_TUNER par rapport � AM_KSCATEGORY_TVTUNER et CLSID_VideoInputDeviceCategory ?

    Si vous avez d'autres id�es ou conseils je suis preneur.

    Merci de votre aide.

  14. #14
    Inactif  

    Homme Profil pro
    Ing�nieur test de performance
    Inscrit en
    D�cembre 2003
    Messages
    1 986
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur test de performance
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 1 986
    Par d�faut
    Bonjour.

    Citation Envoy� par jagboys Voir le message
    Bonsoir,

    Je commence � comprendre comment PouchinTvMod arrive � r�cup�rer ces infos.

    Il attaque directement la base des registres en cherchant par exemple les GUID suivant :

    HKLM\SYSTEM\ControlSet001\Control\DeviceClasses

    KSCATEGORY_BDA_NETWORK_TUNER = 71985F48-1CA1-11d3-9CC8-00C04F7971E0
    KSCATEGORY_BDA_RECEIVER_COMPONENT = FD0A5AF4-B41D-11d2-9C95-00C04F7971E0

    La base des registres donne le devicepath. Grace � ce devicepath, j'ai l'impression qu'il cr�e le Moniker.

    Je trouve que c'est un peu tordu dans le sens ou l'on utilise pas l'API DShow.
    La r�ponse est ici : https://msdn.microsoft.com/fr-fr/lib...(v=vs.85).aspx

    The BDA Network Provider is the source filter for any digital television filter graph based on Microsoft Broadcast Driver Architecture (BDA).
    Visiblement, les d�veloppeurs de cette carte ont choisi ce syst�me de driver, et c'est pour cela que ce n'est pas �num�rable avec du DirectShow classique.

  15. #15
    Expert confirm�

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Software Developer
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par d�faut
    C'est �num�rable avec du Direct Show classique, car GraphEdit les liste, par contre il faut donc d�finir le GUID appropri� � la mano:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    // {71985F48-1CA1-11D3-9CC8-00C04F7971E0}
    DEFINE_GUID( KSCATEGORY_BDA_NETWORK_TUNER, 0x71985F48, 0x1CA1, 0x11D3, 0x9C, 0xC8, 0x00, 0xC0, 0x4F, 0x79, 0x71, 0xE0 );
     
    // {FD0A5AF4-B41D-11d2-9C95-00C04F7971E0}
    DEFINE_GUID( KSCATEGORY_BDA_RECEIVER_COMPONENT, 0xFD0A5AF4, 0xB41D, 0x11D2, 0x9C, 0x95, 0x00, 0xC0, 0x4F, 0x79, 0x71, 0xE0 );
    A partir de l�, il devrait �tre possible de les �num�rer de la m�me mani�re que les autres filtres DShow.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert � rien, mais qu'il est joli (des fois) : ProceduralGenerator (G�n�ration proc�durale d'images, et post-processing).

  16. #16
    Membre confirm� Avatar de jagboys
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    166
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 166
    Par d�faut
    Bonjour � tous,

    Voila ce que cel� donne :

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    #include <dshow.h>
    #include <ks.h>
    #include <ksmedia.h>
    #include <bdatypes.h>
    #include <bdamedia.h>
     
    #pragma comment(lib, "strmiids")
     
    HRESULT EnumerateDevices(REFGUID category, IEnumMoniker **ppEnum)
    {
    	// Create the System Device Enumerator.
    	ICreateDevEnum *pDevEnum;
    	HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL,
    		CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pDevEnum));
     
    	if (SUCCEEDED(hr))
    	{
    		// Create an enumerator for the category.
    		hr = pDevEnum->CreateClassEnumerator(category, ppEnum, 0);
    		if (hr == S_FALSE)
    		{
    			hr = VFW_E_NOT_FOUND;  // The category is empty. Treat as an error.
    		}
    		pDevEnum->Release();
    	}
    	return hr;
    }
     
    void DisplayDeviceInformation(IEnumMoniker *pEnum)
    {
    	IMoniker *pMoniker = NULL;
     
    	while (pEnum->Next(1, &pMoniker, NULL) == S_OK)
    	{
    		IPropertyBag *pPropBag;
    		HRESULT hr = pMoniker->BindToStorage(0, 0, IID_PPV_ARGS(&pPropBag));
    		if (FAILED(hr))
    		{
    			pMoniker->Release();
    			continue;
    		}
     
    		VARIANT var;
    		VariantInit(&var);
     
    		// Get description or friendly name.
    		hr = pPropBag->Read(L"Description", &var, 0);
    		if (FAILED(hr))
    		{
    			hr = pPropBag->Read(L"FriendlyName", &var, 0);
    		}
    		if (SUCCEEDED(hr))
    		{
    			printf("%S\n", var.bstrVal);
    			VariantClear(&var);
    		}
     
    		hr = pPropBag->Write(L"FriendlyName", &var);
     
    		// WaveInID applies only to audio capture devices.
    		hr = pPropBag->Read(L"WaveInID", &var, 0);
    		if (SUCCEEDED(hr))
    		{
    			printf("WaveIn ID: %d\n", var.lVal);
    			VariantClear(&var);
    		}
     
    		hr = pPropBag->Read(L"DevicePath", &var, 0);
    		if (SUCCEEDED(hr))
    		{
    			// The device path is not intended for display.
    			printf("Device path: %S\n", var.bstrVal);
    			VariantClear(&var);
    		}
     
    		pPropBag->Release();
    		pMoniker->Release();
    	}
    }
     
    int main()
    {
    	HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
    	if (SUCCEEDED(hr))
    	{
    		IEnumMoniker *pEnum;
     
    		hr = EnumerateDevices(KSCATEGORY_BDA_NETWORK_TUNER, &pEnum);
    		if (SUCCEEDED(hr))
    		{
    			DisplayDeviceInformation(pEnum);
    			pEnum->Release();
    		}
    		CoUninitialize();
    	}
    }
    Et le r�sultat :

    Nom : dev1.png
Affichages : 254
Taille : 5,8 Ko

    Merci encore � tous de m'avoir remis sur la bonne route.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Cherche API Java pour reconnaissance de caracteres (OCR) sur video
    Par yazidnes dans le forum EDI et Outils pour Java
    R�ponses: 0
    Dernier message: 08/05/2014, 14h06
  2. API Java pour manipuler fichier video
    Par jpgros dans le forum Multim�dia
    R�ponses: 1
    Dernier message: 03/10/2006, 23h57
  3. [Windows]Api win32 pour java
    Par cpanette dans le forum API standards et tierces
    R�ponses: 1
    Dernier message: 27/06/2005, 15h06
  4. Conseils sur une API simple pour Windows
    Par alejandro dans le forum Choisir un environnement de d�veloppement
    R�ponses: 4
    Dernier message: 28/04/2005, 18h12
  5. Est ce que �a existe une api java pour code barre ?
    Par miloud dans le forum Entr�e/Sortie
    R�ponses: 2
    Dernier message: 14/04/2005, 17h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo