Ignore:
Timestamp:
Jul 12, 2011 3:05:35 AM (13 years ago)
Author:
bennylp
Message:

Initial implementation of re #1284 (Event Framework). Current event has been converted to the new framework. Next to convert is codec event

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/branches/projects/2.0-dev/pjmedia/src/pjmedia/vid_port.c

    r3615 r3617  
    2121#include <pjmedia/converter.h> 
    2222#include <pjmedia/errno.h> 
     23#include <pjmedia/event.h> 
    2324#include <pjmedia/vid_codec.h> 
    2425#include <pj/log.h> 
     
    5657    pjmedia_conversion_param conv_param; 
    5758 
     59    pjmedia_event_publisher  epub; 
     60    pjmedia_event_subscription esub_dev; 
     61 
    5862    pjmedia_clock           *clock; 
    59  
    6063    pjmedia_clock_src        clocksrc; 
    6164 
     
    8689                                       void *user_data, 
    8790                                       pjmedia_frame *frame); 
    88 static pj_status_t vidstream_event_cb(pjmedia_vid_dev_stream *stream, 
    89                                       void *user_data, 
    90                                       pjmedia_vid_event *event); 
     91static pj_status_t vidstream_event_cb(pjmedia_event_subscription *esub, 
     92                                      pjmedia_event *event); 
    9193 
    9294static void enc_clock_cb(const pj_timestamp *ts, void *user_data); 
     
    152154    vp->dir = prm->vidparam.dir; 
    153155//    vp->cap_size = vfd->size; 
     156    pjmedia_event_publisher_init(&vp->epub); 
    154157 
    155158    vparam = prm->vidparam; 
     
    203206    vid_cb.capture_cb = &vidstream_cap_cb; 
    204207    vid_cb.render_cb = &vidstream_render_cb; 
    205     vid_cb.on_event_cb = &vidstream_event_cb; 
    206208 
    207209    status = pjmedia_vid_dev_stream_create(&vparam, &vid_cb, vp, 
     
    216218              vparam.fmt.det.vid.size.w, vparam.fmt.det.vid.size.h, 
    217219              vparam.fmt.det.vid.fps.num, vparam.fmt.det.vid.fps.denum)); 
     220 
     221    /* Subscribe to device's events */ 
     222    pjmedia_event_subscription_init(&vp->esub_dev, vidstream_event_cb, vp); 
     223    pjmedia_event_subscribe( 
     224            pjmedia_vid_dev_stream_get_event_publisher(vp->strm), 
     225            &vp->esub_dev); 
    218226 
    219227    if (vp->dir & PJMEDIA_DIR_CAPTURE) { 
     
    339347} 
    340348 
     349PJ_DEF(pjmedia_event_publisher*) 
     350pjmedia_vid_port_get_event_publisher(pjmedia_vid_port *vid_port) 
     351{ 
     352    PJ_ASSERT_RETURN(vid_port, NULL); 
     353    return &vid_port->epub; 
     354} 
     355 
    341356PJ_DEF(pjmedia_vid_dev_stream*) 
    342357pjmedia_vid_port_get_stream(pjmedia_vid_port *vp) 
     
    498513*/ 
    499514 
    500 static pj_status_t vidstream_event_cb(pjmedia_vid_dev_stream *stream, 
    501                                       void *user_data, 
    502                                       pjmedia_vid_event *event) 
    503 { 
    504     pjmedia_vid_port *vp = (pjmedia_vid_port*)user_data; 
     515static pj_status_t vidstream_event_cb(pjmedia_event_subscription *esub, 
     516                                      pjmedia_event *event) 
     517{ 
     518    pjmedia_vid_port *vp = (pjmedia_vid_port*)esub->user_data; 
    505519     
    506     if (vp->strm_cb.on_event_cb) 
    507         return (*vp->strm_cb.on_event_cb)(stream, vp->strm_cb_data, event); 
    508     return PJ_SUCCESS; 
     520    /* Just republish the event to our client */ 
     521    return pjmedia_event_publish(&vp->epub, event); 
    509522} 
    510523 
     
    530543    if (frame->bit_info & PJMEDIA_VID_CODEC_EVENT_FMT_CHANGED) { 
    531544        const pjmedia_video_format_detail *vfd; 
    532         pjmedia_vid_event pevent; 
     545        pjmedia_event pevent; 
    533546        pj_status_t status; 
    534547 
     
    593606 
    594607        /* Notify application of the format change. */ 
    595         pevent.event_type = PJMEDIA_EVENT_FMT_CHANGED; 
    596         pjmedia_format_copy(&pevent.event_desc.fmt_change.new_format, 
     608        pjmedia_event_init(&pevent, PJMEDIA_EVENT_FMT_CHANGED, NULL, &vp->epub); 
     609        pjmedia_format_copy(&pevent.data.fmt_changed.new_fmt, 
    597610                            &vp->client_port->info.fmt); 
    598         if (vp->strm_cb.on_event_cb) 
    599             (*vp->strm_cb.on_event_cb)(vp->strm, vp->strm_cb_data, &pevent); 
     611        pjmedia_event_publish(&vp->epub, &pevent); 
    600612 
    601613        pjmedia_vid_port_start(vp); 
Note: See TracChangeset for help on using the changeset viewer.