Page 1 of 1

contactar a xmanuel para consulta

PostPosted: Wed Mar 24, 2021 1:21 am
by carlos vargas
Hola, buenas,
Deseo poder contactar a xmanuel, ya que deseo hacerle unas preguntas, con relación a objetos en el api de C.
creo que talvez tenga la experiencia o por donde van los tiros.

a grandes rasgos la consulta es esta:

en una clase que he realizado llamada TVLC la cual estoy haciendo para manejar un player con el VLC, me es necesarao manejar Eventos,
vlc tiene una función en c para crear un manejador de eventos, lo caules se disparan por ejemplo cuando se hace Play, Stop, End, Mute, etc.
Code: Select all  Expand view

METHOD New( hWnd ) CLASS TVLC
    ::hWnd := hWnd
    ::hVLC := myvlc_new()
    IF !Empty( ::hVLC )
        ::hMediaPlayer := myvlc_media_player_new( ::hVLC )
        IF !Empty( ::hWnd ) .and. !Empty( ::hMediaPlayer )
            ::hEventManager := myvlc_media_player_event_manager( ::hMediaPlayer )
            IF !empty( ::hEventManager )
                myvlc_media_player_event_attach( ::hEventManager, QSelf() ) //aca envio el objeto a c
            ENDIF
 


en c
Code: Select all  Expand view


HB_FUNC( MYVLC_MEDIA_PLAYER_EVENT_MANAGER )
{
    libvlc_media_player_t *hMediaPlayer = (libvlc_media_player_t *) hb_parptr( 1 );
    if( hMediaPlayer )
    {
        libvlc_event_manager_t * hEventManager;
        hEventManager = libvlc_media_player_event_manager( hMediaPlayer );
        hb_retptr( (void *) hEventManager );
    }
}

/*---------------------------------------------------------------------------------------------*/

HB_FUNC( MYVLC_MEDIA_PLAYER_EVENT_ATTACH )
{
    libvlc_event_manager_t *hEventManager = (libvlc_event_manager_t *) hb_parptr( 1 );
    //PHB_ITEM pSelf = ACA NECESITO RECIVIR EL OBJETO SELF DE TVLC
       
    if( hEventManager )
    {
        libvlc_event_attach( hEventManager, libvlc_MediaPlayerPlaying        , vlc_mycallback, pSelf ); //ACA ENVIARLO A LA FUNCION CALLBACK
        /*
        libvlc_event_attach( hEventManager, libvlc_MediaPlayerMediaChanged   , vlc_mycallback, NULL );
        libvlc_event_attach( hEventManager, libvlc_MediaPlayerOpening        , vlc_mycallback, NULL );
        libvlc_event_attach( hEventManager, libvlc_MediaPlayerPlaying        , vlc_mycallback, NULL );
        libvlc_event_attach( hEventManager, libvlc_MediaPlayerPaused         , vlc_mycallback, NULL );
        libvlc_event_attach( hEventManager, libvlc_MediaPlayerStopped        , vlc_mycallback, NULL );
        libvlc_event_attach( hEventManager, libvlc_MediaPlayerEndReached     , vlc_mycallback, NULL );
        libvlc_event_attach( hEventManager, libvlc_MediaPlayerPositionChanged, vlc_mycallback, NULL );
        */

    }
}
 

Code: Select all  Expand view

void vlc_mycallback( const libvlc_event_t *event, void *param )
{
    switch ( event->type )
    {
        case libvlc_MediaPlayerMediaChanged:
            OutStr("--------------->MEDIA CHANGED");
            break;
        case libvlc_MediaPlayerNothingSpecial:
            OutStr("--------------->NOTHING");
            break;
        case libvlc_MediaPlayerOpening:
            OutStr("--------------->OPENING");
            break;
        case libvlc_MediaPlayerPlaying:
//ACA EJECUTAR UN METODO DEL OBJETO VLC
            OutStr("--------------->PLAYING");
            break;
        case libvlc_MediaPlayerPaused:
            OutStr("--------------->PAUSED");
            break;
        case libvlc_MediaPlayerStopped:
            OutStr("--------------->STOPPED");
            break;
        case libvlc_MediaPlayerEndReached:
            OutStr("--------------->END REACH");
            break;
        case libvlc_MediaPlayerTimeChanged:
            OutStr("--------------->TIME CHANGED");
            break;
        case libvlc_MediaPlayerPositionChanged:
            OutStr("--------------->POSITION CHANGED");
            break;
        case libvlc_MediaPlayerMuted:
            OutStr("--------------->MUTED");
            break;
        case libvlc_MediaPlayerUnmuted:
            OutStr("--------------->UNMUTED");
            break;
        case libvlc_MediaPlayerAudioVolume:
            OutStr("--------------->VOLUME");
            break;
    }
}
 

Re: contactar a xmanuel para consulta

PostPosted: Wed Mar 24, 2021 1:48 am
by carlos vargas
un poco de avance, creo que ya tengo el objeto en la parte c.
Code: Select all  Expand view

HB_FUNC( MYVLC_MEDIA_PLAYER_EVENT_ATTACH )
{
    libvlc_event_manager_t *hEventManager = (libvlc_event_manager_t *) hb_parptr( 1 );
    PHB_ITEM pItem = hb_param( 2, HB_IT_ANY );
   
    if( pItem )
    {
        HB_USHORT usClass = hb_objGetClass( pItem );       
        //HB_SYMBOL_UNUSED( usClass );
        DimeC( (char *) hb_objGetClsName( pItem ) ); //ME RETORNA TVLC :-)
        DimeN( usClass );
        if( hb_objHasMsg(pItem,"BONPLAY") )
        {
            DimeC("TIENE BONPLAY");
        }

    ....
 

Necesito saber como ejecutar el block ::bOnPlay :-(

Re: contactar a xmanuel para consulta

PostPosted: Wed Mar 24, 2021 6:11 am
by cnavarro
Intenta con hb_evalBlock

Re: contactar a xmanuel para consulta

PostPosted: Wed Mar 24, 2021 2:55 pm
by carlos vargas
Lo que necesito saber ahora es como ejecutar el block ::bOnPlay de la clase desde C.
Osea identificar la data del metodo y hacer un evalblock().

Re: contactar a xmanuel para consulta

PostPosted: Fri Mar 26, 2021 1:25 pm
by xmanuel
Hola Carlos perdona por el retraso.
Dale las gracias a Felix que me ha avisado de tu mensaje:

Tienes que usar la funcion:
Code: Select all  Expand view
extern HB_EXPORT PHB_ITEM hb_objSendMsg( PHB_ITEM pObj, const char *sMsg, HB_ULONG ulArg, ... );


Como puedes observa le tienes que pasar en el primer parámetro el objeto, luego el nombre del método como cadena, el numero de parámetros, y por ultimo los parámetros (son item capturados hb_param() por ejemplo)

Re: contactar a xmanuel para consulta

PostPosted: Fri Mar 26, 2021 5:17 pm
by carlos vargas
gracias...
procesando ...

Re: contactar a xmanuel para consulta

PostPosted: Fri Mar 26, 2021 5:18 pm
by carlos vargas
Manuel tienes algun contacto? si no es mucha molestia, tengo una consulta...
referente a el api, una duda que me gustaria explicar con mas detalle...

Mil Gracias...

Re: contactar a xmanuel para consulta

PostPosted: Fri Mar 26, 2021 7:05 pm
by xmanuel
Dime tu correo y te escribo :roll:

Re: contactar a xmanuel para consulta

PostPosted: Fri Mar 26, 2021 7:36 pm
by carlos vargas
karlos.vargas at gmail dot com

Re: contactar a xmanuel para consulta

PostPosted: Fri Mar 26, 2021 7:41 pm
by xmanuel
Ya te he escrito

Re: contactar a xmanuel para consulta

PostPosted: Thu Oct 12, 2023 11:04 pm
by jbrita
saludos. igual necesito hacer una consulta xmanuel
mi email jbricenotapia@gmail.com

saludos

Re: contactar a xmanuel para consulta

PostPosted: Fri Oct 13, 2023 8:51 pm
by xmanuel
Dime por aquí!!!

Re: contactar a xmanuel para consulta

PostPosted: Sun Oct 15, 2023 9:17 pm
by jbrita
Buenas Tarde manuel es posible desarrollar un wrapper largo para el api en C para
https://www.transbankdevelopers.cl/refe ... sintegrado

Esto es para trabajar con tarjetas de credito o debito en chile conectada la maquina a una computadora

Saludos