Ignore:
Timestamp:
Jul 1, 2015 2:20:12 AM (7 years ago)
Author:
riza
Message:

Re #1863: Initial implementation of PJSUA2 Video Codec API and Video Device API.

  • Codec management (enum codec, set prio, get param, set param)
  • Device management (enum dev, dev count, dev info).
File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/include/pjsua2/media.hpp

    r5102 r5123  
    9090struct MediaFormatVideo : public MediaFormat 
    9191{ 
    92     unsigned            width;      /**< Video width.   */ 
    93     unsigned            height;     /**< Video height.  */ 
     92    unsigned            width;      /**< Video width.                   */ 
     93    unsigned            height;     /**< Video height.                  */ 
    9494    int                 fpsNum;     /**< Frames per second numerator.   */ 
    9595    int                 fpsDenum;   /**< Frames per second denumerator. */ 
    9696    pj_uint32_t         avgBps;     /**< Average bitrate.               */ 
    9797    pj_uint32_t         maxBps;     /**< Maximum bitrate.               */ 
     98 
     99    /** 
     100     * Construct from pjmedia_format. 
     101     */ 
     102    void fromPj(const pjmedia_format &format); 
     103 
     104    /** 
     105     * Export to pjmedia_format. 
     106     */ 
     107    pjmedia_format toPj() const; 
    98108}; 
    99109 
     
    15881598}; 
    15891599 
     1600/** 
     1601 * Video device information structure. 
     1602 */ 
     1603struct VideoDevInfo 
     1604{ 
     1605    /** 
     1606     * The device name 
     1607     */ 
     1608    string name; 
     1609 
     1610    /** 
     1611     * The underlying driver name 
     1612     */ 
     1613    string driver; 
     1614 
     1615    /** 
     1616     * The supported direction of the video device, i.e. whether it supports 
     1617     * capture only, render only, or both. 
     1618     */ 
     1619    pjmedia_dir dir; 
     1620 
     1621    /**  
     1622     * Device capabilities, as bitmask combination of #pjmedia_vid_dev_cap  
     1623     */ 
     1624    unsigned caps; 
     1625 
     1626    /** 
     1627     * Array of supported video formats. Some fields in each supported video 
     1628     * format may be set to zero or of "unknown" value, to indicate that the 
     1629     * value is unknown or should be ignored. When these value are not set 
     1630     * to zero, it indicates that the exact format combination is being used. 
     1631     */ 
     1632    MediaFormatVector fmt; 
     1633 
     1634    /** 
     1635     * Construct from pjmedia_vid_dev_info. 
     1636     */ 
     1637    void fromPj(const pjmedia_vid_dev_info &dev_info); 
     1638 
     1639    /** 
     1640     * Destructor. 
     1641     */ 
     1642    ~VideoDevInfo(); 
     1643}; 
     1644 
     1645/** Array of video device info */ 
     1646typedef std::vector<VideoDevInfo*> VideoDevInfoVector; 
     1647 
     1648/** 
     1649 * Video device manager. 
     1650 */ 
     1651class VidDevManager { 
     1652public: 
     1653    /** 
     1654     * Get the number of video devices installed in the system. 
     1655     * 
     1656     * @return          The number of devices. 
     1657     */ 
     1658    unsigned getDevCount(); 
     1659 
     1660    /** 
     1661     * Retrieve the video device info for the specified device index.      
     1662     * 
     1663     * @param dev_id    The video device id 
     1664     *  
     1665     * @return          The list of video device info 
     1666     */ 
     1667    VideoDevInfo getDevInfo(int dev_id) const throw(Error); 
     1668 
     1669    /** 
     1670     * Enum all video devices installed in the system. 
     1671     * 
     1672     * @return          The list of video device info 
     1673     */ 
     1674    const VideoDevInfoVector &enumDev() throw(Error); 
     1675 
     1676private: 
     1677    VideoDevInfoVector videoDevList; 
     1678 
     1679    void clearVideoDevList(); 
     1680 
     1681    /** 
     1682     * Constructor. 
     1683     */ 
     1684    VidDevManager(); 
     1685 
     1686    /** 
     1687     * Destructor. 
     1688     */ 
     1689    ~VidDevManager(); 
     1690 
     1691    friend class Endpoint; 
     1692}; 
     1693 
     1694 
    15901695/************************************************************************* 
    15911696* Codec management 
Note: See TracChangeset for help on using the changeset viewer.