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/sdl_dev.c

    r3401 r3420  
    9191struct sdl_stream 
    9292{ 
    93     pjmedia_vid_stream   base;              /**< Base stream           */ 
    94     pjmedia_vid_param    param;             /**< Settings              */ 
    95     pj_pool_t           *pool;              /**< Memory pool.          */ 
    96  
    97     pjmedia_vid_cb       vid_cb;            /**< Stream callback.      */ 
    98     void                *user_data;         /**< Application data.     */ 
    99  
    100     pj_thread_t         *sdl_thread;        /**< SDL thread.           */ 
    101     pj_bool_t            is_quitting; 
    102     pj_bool_t            is_running; 
    103     pj_bool_t            render_exited; 
    104     pj_status_t          status; 
    105  
    106     SDL_Rect             rect;              /**< Display rectangle.    */ 
    107     SDL_Surface         *screen;            /**< Display screen.       */ 
    108     SDL_Surface         *surf;              /**< RGB surface.          */ 
    109     SDL_Overlay         *overlay;           /**< YUV overlay.          */ 
     93    pjmedia_vid_dev_stream       base;              /**< Base stream        */ 
     94    pjmedia_vid_param            param;             /**< Settings           */ 
     95    pj_pool_t                   *pool;              /**< Memory pool.       */ 
     96 
     97    pjmedia_vid_cb               vid_cb;            /**< Stream callback.   */ 
     98    void                        *user_data;         /**< Application data.  */ 
     99 
     100    pj_thread_t                 *sdl_thread;        /**< SDL thread.        */ 
     101    pj_bool_t                    is_quitting; 
     102    pj_bool_t                    is_running; 
     103    pj_bool_t                    render_exited; 
     104    pj_status_t                  status; 
     105 
     106    SDL_Rect                     rect;              /**< Display rectangle. */ 
     107    SDL_Surface                 *screen;            /**< Display screen.    */ 
     108    SDL_Surface                 *surf;              /**< RGB surface.       */ 
     109    SDL_Overlay                 *overlay;           /**< YUV overlay.       */ 
    110110 
    111111    /* For frame conversion */ 
    112     pjmedia_converter       *conv; 
    113     pjmedia_conversion_param conv_param; 
    114     pjmedia_frame            conv_buf; 
     112    pjmedia_converter           *conv; 
     113    pjmedia_conversion_param    conv_param; 
     114    pjmedia_frame                conv_buf; 
    115115 
    116116    pjmedia_video_apply_fmt_param vafp; 
     
    129129                                             unsigned index, 
    130130                                             pjmedia_vid_param *param); 
    131 static pj_status_t sdl_factory_create_stream(pjmedia_vid_dev_factory *f, 
    132                                              const pjmedia_vid_param *param, 
    133                                              const pjmedia_vid_cb *cb, 
    134                                              void *user_data, 
    135                                              pjmedia_vid_stream **p_vid_strm); 
    136  
    137 static pj_status_t sdl_stream_get_param(pjmedia_vid_stream *strm, 
     131static pj_status_t sdl_factory_create_stream( 
     132                                        pjmedia_vid_dev_factory *f, 
     133                                        const pjmedia_vid_param *param, 
     134                                        const pjmedia_vid_cb *cb, 
     135                                        void *user_data, 
     136                                        pjmedia_vid_dev_stream **p_vid_strm); 
     137 
     138static pj_status_t sdl_stream_get_param(pjmedia_vid_dev_stream *strm, 
    138139                                        pjmedia_vid_param *param); 
    139 static pj_status_t sdl_stream_get_cap(pjmedia_vid_stream *strm, 
     140static pj_status_t sdl_stream_get_cap(pjmedia_vid_dev_stream *strm, 
    140141                                      pjmedia_vid_dev_cap cap, 
    141142                                      void *value); 
    142 static pj_status_t sdl_stream_set_cap(pjmedia_vid_stream *strm, 
     143static pj_status_t sdl_stream_set_cap(pjmedia_vid_dev_stream *strm, 
    143144                                      pjmedia_vid_dev_cap cap, 
    144145                                      const void *value); 
    145 static pj_status_t sdl_stream_put_frame(pjmedia_vid_stream *strm, 
     146static pj_status_t sdl_stream_put_frame(pjmedia_vid_dev_stream *strm, 
    146147                                        const pjmedia_frame *frame); 
    147 static pj_status_t sdl_stream_start(pjmedia_vid_stream *strm); 
    148 static pj_status_t sdl_stream_stop(pjmedia_vid_stream *strm); 
    149 static pj_status_t sdl_stream_destroy(pjmedia_vid_stream *strm); 
     148static pj_status_t sdl_stream_start(pjmedia_vid_dev_stream *strm); 
     149static pj_status_t sdl_stream_stop(pjmedia_vid_dev_stream *strm); 
     150static pj_status_t sdl_stream_destroy(pjmedia_vid_dev_stream *strm); 
    150151 
    151152/* Operations */ 
     
    160161}; 
    161162 
    162 static pjmedia_vid_stream_op stream_op = 
     163static pjmedia_vid_dev_stream_op stream_op = 
    163164{ 
    164165    &sdl_stream_get_param, 
     
    408409                        } 
    409410                    if (strm->is_running) 
    410                         pjmedia_vid_stream_stop(&strm->base); 
     411                        pjmedia_vid_dev_stream_stop(&strm->base); 
    411412                    else 
    412                         pjmedia_vid_stream_start(&strm->base); 
     413                        pjmedia_vid_dev_stream_start(&strm->base); 
    413414                    break; 
    414415                case SDL_VIDEORESIZE: 
     
    434435                     * To process PJMEDIA_EVENT_WINDOW_CLOSE event, 
    435436                     * application should do this in the on_event_cb callback: 
    436                      * 1. stop further calls to #pjmedia_vid_stream_put_frame() 
     437                     * 1. stop further calls to  
     438                     *    #pjmedia_vid_dev_stream_put_frame() 
    437439                     * 2. return PJ_SUCCESS 
    438440                     * Upon returning from the callback, SDL will destroy its 
     
    484486 
    485487/* API: create stream */ 
    486 static pj_status_t sdl_factory_create_stream(pjmedia_vid_dev_factory *f, 
    487                                              const pjmedia_vid_param *param, 
    488                                              const pjmedia_vid_cb *cb, 
    489                                              void *user_data, 
    490                                              pjmedia_vid_stream **p_vid_strm) 
     488static pj_status_t sdl_factory_create_stream( 
     489                                        pjmedia_vid_dev_factory *f, 
     490                                        const pjmedia_vid_param *param, 
     491                                        const pjmedia_vid_cb *cb, 
     492                                        void *user_data, 
     493                                        pjmedia_vid_dev_stream **p_vid_strm) 
    491494{ 
    492495    struct sdl_factory *sf = (struct sdl_factory*)f; 
     
    549552 
    550553/* API: Get stream info. */ 
    551 static pj_status_t sdl_stream_get_param(pjmedia_vid_stream *s, 
     554static pj_status_t sdl_stream_get_param(pjmedia_vid_dev_stream *s, 
    552555                                        pjmedia_vid_param *pi) 
    553556{ 
     
    568571 
    569572/* API: get capability */ 
    570 static pj_status_t sdl_stream_get_cap(pjmedia_vid_stream *s, 
     573static pj_status_t sdl_stream_get_cap(pjmedia_vid_dev_stream *s, 
    571574                                      pjmedia_vid_dev_cap cap, 
    572575                                      void *pval) 
     
    587590 
    588591/* API: set capability */ 
    589 static pj_status_t sdl_stream_set_cap(pjmedia_vid_stream *s, 
     592static pj_status_t sdl_stream_set_cap(pjmedia_vid_dev_stream *s, 
    590593                                      pjmedia_vid_dev_cap cap, 
    591594                                      const void *pval) 
     
    606609 
    607610/* API: Put frame from stream */ 
    608 static pj_status_t sdl_stream_put_frame(pjmedia_vid_stream *strm, 
     611static pj_status_t sdl_stream_put_frame(pjmedia_vid_dev_stream *strm, 
    609612                                        const pjmedia_frame *frame) 
    610613{ 
     
    665668 
    666669/* API: Start stream. */ 
    667 static pj_status_t sdl_stream_start(pjmedia_vid_stream *strm) 
     670static pj_status_t sdl_stream_start(pjmedia_vid_dev_stream *strm) 
    668671{ 
    669672    struct sdl_stream *stream = (struct sdl_stream*)strm; 
     
    678681 
    679682/* API: Stop stream. */ 
    680 static pj_status_t sdl_stream_stop(pjmedia_vid_stream *strm) 
     683static pj_status_t sdl_stream_stop(pjmedia_vid_dev_stream *strm) 
    681684{ 
    682685    struct sdl_stream *stream = (struct sdl_stream*)strm; 
     
    695698 
    696699/* API: Destroy stream. */ 
    697 static pj_status_t sdl_stream_destroy(pjmedia_vid_stream *strm) 
     700static pj_status_t sdl_stream_destroy(pjmedia_vid_dev_stream *strm) 
    698701{ 
    699702    struct sdl_stream *stream = (struct sdl_stream*)strm; 
Note: See TracChangeset for help on using the changeset viewer.