예제 #1
0
void qtVlc::eventCallback(const libvlc_event_t *event, void *data)
{
    //static int i_first_time_media_player_time_changed = 0;
    //static bool b_media_player_title_changed = false;

    qtVlc *const that = static_cast<qtVlc *>(data);

    if (event->type != libvlc_MediaPlayerTimeChanged) qDebug() << "event:" << libvlc_event_type_name(event->type) << that->getUrl();

    // Media player events
    if (event->type == libvlc_MediaPlayerStopped) {
        //qDebug() << "event:" << libvlc_event_type_name(event->type) << that->getUrl();
        emit that->playerStopped();
    }

    if (event->type == libvlc_MediaPlayerTitleChanged) {
        qDebug() << "event:" << libvlc_event_type_name(event->type) << that->getUrl();
        //emit that->stateChanged(Phonon::BufferingState);
    }

    if (event->type == libvlc_MediaPlayerTimeChanged) {
        //qDebug() << "event:" << libvlc_event_type_name(event->type) << that->getUrl();
        emit that->timeChanged();
        //that->timeChanged();

    }
}
예제 #2
0
void VLCPlayer::handleEvent(const libvlc_event_t* pEvt, void * pUserData) {
    libvlc_time_t time;
    switch(pEvt->type) {
    case libvlc_MediaPlayerTimeChanged:
        time = libvlc_media_player_get_time(VLCPlayer::media_player);
        //qDebug() << "MediaPlayerTimeChanged " << time << " ms";
        break;
    case libvlc_MediaPlayerEndReached:
        qDebug() << "MediaPlayerEndReached";
        VLCPlayer::mutex.lock();
        VLCPlayer::playbackInProgress = false;
        VLCPlayer::mutex.unlock();
        break;
    default:
        printf("%s\n", libvlc_event_type_name(pEvt->type));
    }

    if (VLCPlayer::handler)
        VLCPlayer::handler -> handleEvent(pEvt, pUserData);
}
예제 #3
0
void VlcMediaListPlayerPrivate::event_cb(const libvlc_event_t *e, void *o)
{
    VlcMediaListPlayerPrivate *p = static_cast<VlcMediaListPlayerPrivate *>(o);

    emit p->libvlcEvent(e);

    switch(e->type)
    {
    case libvlc_MediaListPlayerPlayed:
        emit p->played();
        break;
    case libvlc_MediaListPlayerNextItemSet:
        emit p->nextItemSet(e->u.media_list_player_next_item_set.item);
        emit p->nextItemSet(VlcMedia(e->u.media_list_player_next_item_set.item));
        break;
    case libvlc_MediaListPlayerStopped:
        emit p->stopped();
        break;
    default:
        qDebug("VlcMediaListPlayer: unknown Event: %i (%s)", e->type, libvlc_event_type_name(e->type));
    }
}
예제 #4
0
파일: event.c 프로젝트: AsamQi/vlc
/**************************************************************************
 *       event_attach (internal) :
 *
 * Add a callback for an event.
 **************************************************************************/
static
int event_attach( libvlc_event_manager_t * p_event_manager,
                  libvlc_event_type_t event_type,
                  libvlc_callback_t pf_callback, void *p_user_data,
                  bool is_asynchronous )
{
    libvlc_event_listeners_group_t * listeners_group;
    libvlc_event_listener_t * listener;
    int i;

    listener = malloc(sizeof(libvlc_event_listener_t));
    if( unlikely(listener == NULL) )
        return ENOMEM;

    listener->event_type = event_type;
    listener->p_user_data = p_user_data;
    listener->pf_callback = pf_callback;
    listener->is_asynchronous = is_asynchronous;

    vlc_mutex_lock( &p_event_manager->object_lock );
    for( i = 0; i < vlc_array_count(&p_event_manager->listeners_groups); i++ )
    {
        listeners_group = vlc_array_item_at_index(&p_event_manager->listeners_groups, i);
        if( listeners_group->event_type == listener->event_type )
        {
            vlc_array_append( &listeners_group->listeners, listener );
            vlc_mutex_unlock( &p_event_manager->object_lock );
            return 0;
        }
    }
    vlc_mutex_unlock( &p_event_manager->object_lock );

    free(listener);
    fprintf( stderr, "This object event manager doesn't know about '%s' events",
             libvlc_event_type_name(event_type) );
    assert(0);
    return -1;
}
예제 #5
0
void VLCVideoWrapper::handleVLCEvents(const libvlc_event_t *pEvent, void *param)
{
   printf("receive event %s\n", libvlc_event_type_name(pEvent->type));
}
void VLCEventBridge::onVLCEvent( const libvlc_event_t * event, void * playerInstance ) {
    VLCMediaPlayer* p = ( VLCMediaPlayer* )playerInstance;

    switch( event->type ) {
        case libvlc_MediaPlayerPaused: {
                p->emitPaused();
                break;
            }

        case libvlc_MediaPlayerBuffering: {
                p->emitBuffering();
                break;
            }

        case libvlc_MediaPlayerPlaying: {
                p->emitPlaying();
                break;
            }

        case libvlc_MediaPlayerOpening: {
                p->emitOpening();
                break;
            }

        case libvlc_MediaPlayerStopped: {
                p->emitStopped();
                break;
            }

        case libvlc_MediaPlayerEndReached: {
                p->emitEnded();
                break;
            }

        case libvlc_MediaPlayerPausableChanged: {
                int newPausable = event->u.media_player_pausable_changed.new_pausable;
                p->emitPausable( newPausable == 1 );
                break;
            }

        case libvlc_MediaPlayerSeekableChanged: {
                int newSeekable = event->u.media_player_seekable_changed.new_seekable;
                p->emitSeekable( newSeekable == 1 );
                break;
            }

        case libvlc_MediaPlayerPositionChanged: {
                float newPosition = event->u.media_player_position_changed.new_position;
                p->emitPositionChanged( newPosition );
                break;
            }

        case libvlc_MediaPlayerTimeChanged: {
                libvlc_time_t newTime = event->u.media_player_time_changed.new_time;
                p->emitTimeChanged( newTime );
                break;
            }

        case libvlc_MediaPlayerEncounteredError: {
                p->emitEncounteredError();
                break;
            }

        case libvlc_MediaPlayerMediaChanged: {
                libvlc_media_t* newMedia = event->u.media_player_media_changed.new_media;
                p->handleMediaChanged( newMedia );
                break;
            }

        case libvlc_MediaPlayerSnapshotTaken: {
                char* pszFilename = event->u.media_player_snapshot_taken.psz_filename;
                QString fileName( pszFilename );
                p->emitSnapshotTaken( fileName );
                break;
            }

        default:
            qDebug() << "Unhandled EventType: " << libvlc_event_type_name( event->type );
    }
}
예제 #7
0
파일: VLCpp.hpp 프로젝트: Giladx/vlmc
 inline const char* eventName( libvlc_event_type_t event )
 {
     return libvlc_event_type_name( event );
 }