Ignore:
Timestamp:
Feb 24, 2011 7:47:55 AM (10 years ago)
Author:
nanang
Message:

Re #1182:

  • Added video stream interface in vid_stream.h, the video stream will be able to handle different video formats in encoding and decoding direction.
  • Renamed video device stream class identifiers from 'pjmedia_vid_stream*' to 'pjmedia_vid_dev_stream*' as 'pjmedia_vid_stream' is used by video stream interface.
  • Added ffmpeg video capability to be able to parse SDP format param for H263 and also decide video format for encoding direction based on remote preference and local format-capability setting.
  • Added some new APIs in jitter buffer for handling video stream: pjmedia_jbuf_put_frame3(), pjmedia_jbuf_get_frame3(), pjmedia_jbuf_peek_frame(), and pjmedia_jbuf_remove_frame().
  • Moved pjmedia_stream_info_from_sdp() from session to stream
File:
1 edited

Legend:

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

    r3402 r3420  
    9090struct dshow_stream 
    9191{ 
    92     pjmedia_vid_stream   base;              /**< Base stream           */ 
    93     pjmedia_vid_param    param;             /**< Settings              */ 
    94     pj_pool_t           *pool;              /**< Memory pool.          */ 
    95  
    96     pjmedia_vid_cb       vid_cb;            /**< Stream callback.     */ 
    97     void                *user_data;         /**< Application data.     */ 
    98  
    99     pj_bool_t            quit_flag; 
    100     pj_bool_t            rend_thread_exited; 
    101     pj_bool_t            cap_thread_exited; 
    102     pj_bool_t            cap_thread_initialized; 
    103     pj_thread_desc       cap_thread_desc; 
    104     pj_thread_t         *cap_thread; 
     92    pjmedia_vid_dev_stream   base;                  /**< Base stream        */ 
     93    pjmedia_vid_param        param;                 /**< Settings           */ 
     94    pj_pool_t               *pool;                  /**< Memory pool.       */ 
     95 
     96    pjmedia_vid_cb           vid_cb;                /**< Stream callback.   */ 
     97    void                    *user_data;             /**< Application data.  */ 
     98 
     99    pj_bool_t                quit_flag; 
     100    pj_bool_t                rend_thread_exited; 
     101    pj_bool_t                cap_thread_exited; 
     102    pj_bool_t                cap_thread_initialized; 
     103    pj_thread_desc           cap_thread_desc; 
     104    pj_thread_t             *cap_thread; 
    105105 
    106106    struct dshow_graph 
     
    127127                                               unsigned index, 
    128128                                               pjmedia_vid_param *param); 
    129 static pj_status_t dshow_factory_create_stream(pjmedia_vid_dev_factory *f, 
    130                                                const pjmedia_vid_param *param, 
    131                                                const pjmedia_vid_cb *cb, 
    132                                                void *user_data, 
    133                                                pjmedia_vid_stream **p_vid_strm); 
    134  
    135 static pj_status_t dshow_stream_get_param(pjmedia_vid_stream *strm, 
     129static pj_status_t dshow_factory_create_stream( 
     130                                        pjmedia_vid_dev_factory *f, 
     131                                        const pjmedia_vid_param *param, 
     132                                        const pjmedia_vid_cb *cb, 
     133                                        void *user_data, 
     134                                        pjmedia_vid_dev_stream **p_vid_strm); 
     135 
     136static pj_status_t dshow_stream_get_param(pjmedia_vid_dev_stream *strm, 
    136137                                          pjmedia_vid_param *param); 
    137 static pj_status_t dshow_stream_get_cap(pjmedia_vid_stream *strm, 
     138static pj_status_t dshow_stream_get_cap(pjmedia_vid_dev_stream *strm, 
    138139                                        pjmedia_vid_dev_cap cap, 
    139140                                        void *value); 
    140 static pj_status_t dshow_stream_set_cap(pjmedia_vid_stream *strm, 
     141static pj_status_t dshow_stream_set_cap(pjmedia_vid_dev_stream *strm, 
    141142                                        pjmedia_vid_dev_cap cap, 
    142143                                        const void *value); 
    143 static pj_status_t dshow_stream_start(pjmedia_vid_stream *strm); 
    144 static pj_status_t dshow_stream_put_frame(pjmedia_vid_stream *strm, 
     144static pj_status_t dshow_stream_start(pjmedia_vid_dev_stream *strm); 
     145static pj_status_t dshow_stream_put_frame(pjmedia_vid_dev_stream *strm, 
    145146                                          const pjmedia_frame *frame); 
    146 static pj_status_t dshow_stream_stop(pjmedia_vid_stream *strm); 
    147 static pj_status_t dshow_stream_destroy(pjmedia_vid_stream *strm); 
     147static pj_status_t dshow_stream_stop(pjmedia_vid_dev_stream *strm); 
     148static pj_status_t dshow_stream_destroy(pjmedia_vid_dev_stream *strm); 
    148149 
    149150/* Operations */ 
     
    158159}; 
    159160 
    160 static pjmedia_vid_stream_op stream_op = 
     161static pjmedia_vid_dev_stream_op stream_op = 
    161162{ 
    162163    &dshow_stream_get_param, 
     
    396397    /* Set the device capabilities here */ 
    397398    param->clock_rate = DEFAULT_CLOCK_RATE; 
    398     param->frame_rate.num = DEFAULT_FPS; 
    399     param->frame_rate.denum = 1; 
     399    //param->frame_rate.num = DEFAULT_FPS; 
     400    //param->frame_rate.denum = 1; 
    400401    param->flags = PJMEDIA_VID_DEV_CAP_FORMAT; 
    401402 
     
    439440 
    440441/* API: Put frame from stream */ 
    441 static pj_status_t dshow_stream_put_frame(pjmedia_vid_stream *strm, 
     442static pj_status_t dshow_stream_put_frame(pjmedia_vid_dev_stream *strm, 
    442443                                          const pjmedia_frame *frame) 
    443444{ 
     
    698699 
    699700/* API: create stream */ 
    700 static pj_status_t dshow_factory_create_stream(pjmedia_vid_dev_factory *f, 
    701                                                const pjmedia_vid_param *param, 
    702                                                const pjmedia_vid_cb *cb, 
    703                                                void *user_data, 
    704                                                pjmedia_vid_stream **p_vid_strm) 
     701static pj_status_t dshow_factory_create_stream( 
     702                                        pjmedia_vid_dev_factory *f, 
     703                                        const pjmedia_vid_param *param, 
     704                                        const pjmedia_vid_cb *cb, 
     705                                        void *user_data, 
     706                                        pjmedia_vid_dev_stream **p_vid_strm) 
    705707{ 
    706708    struct dshow_factory *df = (struct dshow_factory*)f; 
     
    753755  
    754756on_error: 
    755     dshow_stream_destroy((pjmedia_vid_stream *)strm); 
     757    dshow_stream_destroy((pjmedia_vid_dev_stream *)strm); 
    756758    return PJ_EUNKNOWN; 
    757759} 
    758760 
    759761/* API: Get stream info. */ 
    760 static pj_status_t dshow_stream_get_param(pjmedia_vid_stream *s, 
     762static pj_status_t dshow_stream_get_param(pjmedia_vid_dev_stream *s, 
    761763                                          pjmedia_vid_param *pi) 
    762764{ 
     
    777779 
    778780/* API: get capability */ 
    779 static pj_status_t dshow_stream_get_cap(pjmedia_vid_stream *s, 
     781static pj_status_t dshow_stream_get_cap(pjmedia_vid_dev_stream *s, 
    780782                                        pjmedia_vid_dev_cap cap, 
    781783                                        void *pval) 
     
    797799 
    798800/* API: set capability */ 
    799 static pj_status_t dshow_stream_set_cap(pjmedia_vid_stream *s, 
     801static pj_status_t dshow_stream_set_cap(pjmedia_vid_dev_stream *s, 
    800802                                        pjmedia_vid_dev_cap cap, 
    801803                                        const void *pval) 
     
    817819 
    818820/* API: Start stream. */ 
    819 static pj_status_t dshow_stream_start(pjmedia_vid_stream *strm) 
     821static pj_status_t dshow_stream_start(pjmedia_vid_dev_stream *strm) 
    820822{ 
    821823    struct dshow_stream *stream = (struct dshow_stream*)strm; 
     
    843845 
    844846/* API: Stop stream. */ 
    845 static pj_status_t dshow_stream_stop(pjmedia_vid_stream *strm) 
     847static pj_status_t dshow_stream_stop(pjmedia_vid_dev_stream *strm) 
    846848{ 
    847849    struct dshow_stream *stream = (struct dshow_stream*)strm; 
     
    869871 
    870872/* API: Destroy stream. */ 
    871 static pj_status_t dshow_stream_destroy(pjmedia_vid_stream *strm) 
     873static pj_status_t dshow_stream_destroy(pjmedia_vid_dev_stream *strm) 
    872874{ 
    873875    struct dshow_stream *stream = (struct dshow_stream*)strm; 
Note: See TracChangeset for help on using the changeset viewer.