会议的传输协议说明

未结 0 165
纳入话题 标签: OpenRtcomm

/**
 * 发起的包
 */
public static class TRANSFER_AV_INFO extends IM_CONTENTU {
    //
    public byte ucbResp;
    /**
     *  任务类型:
     *         public final static int CONST_imTaskType_transferAvInfo = 25;  // 会议类型(点对点、组)
     *         public final static int CONST_imTaskType_shareScreen = 26;     //  共享屏幕
     *         public final static int CONST_imTaskType_remoteAssist = 27;    // 远程协助 (操作屏幕)
     *         public final static int CONST_imTaskType_shareMediaFile = 28;  // 共享媒体文件
     *         public final static int CONST_imTaskType_shareDynBmp = 29;     // 共享视频源
     *         public final static int CONST_imTaskType_viewDynBmp = 30;      // 查看视频源
     *         public final static int CONST_imTaskType_queryCustomerServiceOfficer = 31;  // 视频客服(已弃用)
     *         public final static int CONST_imTaskType_shareGps = 40;        // 共享Gps
     *         public final static int CONST_imTaskType_viewGps = 41;         // 查看Gps
     */
    public int uiTaskType;                            //

    /**
     * 汇款信息
     */
    public TRAN_conf_cfg confCfg = new TRAN_conf_cfg();

    //
    //public AV_TRAN_INFO   tranInfo;
    /**
     * 音视频信息(格式)
     */
    public AV_stream_simple ass = new AV_stream_simple();

    //  2014/11/07
    /**
     * 视频组合的信息
     * 1. video -> 发言人(视频)
     * 2. resource -> 屏幕共享
     */
    public MOSAIC_TRAN_INFO confMosaicTranInfo_video = new MOSAIC_TRAN_INFO();

    public MOSAIC_TRAN_INFO confMosaicTranInfo_resource = new MOSAIC_TRAN_INFO();

    /**
     * 属于TRANSFER_AV_INFO的一个子集,查看远程视频源的一些扩展信息
     */
    public TRANSFER_AV_INFO_viewDynBmp viewDynBmp = new TRANSFER_AV_INFO_viewDynBmp();                          //  2009/09/06

    /**
     * Talk的号,IdInfo
     */
    public qyDefs.QY_MESSENGER_ID idInfo_logicalPeer = new qyDefs.QY_MESSENGER_ID();                    //  2009/10/18

    public int uiTranNo_avTask_starter; // 暂时弃用          //  2014/11/22. 这个tranNo用来在会议和共享资料等任务里建立关联。

    //  2014/11/20
    public PROXIED_TRAN_INFO proxiedTranInfo = new PROXIED_TRAN_INFO(); // 弃用

    /**
     * 无用,用来标志上面的信息是发送的,下面的字段是临时(不发送的)
     */
    public Object pInternal = new Object();

    /**
     * 区分这个实时任务是不是组的还是联系人的
     */
    public boolean bGrpTask;

    public int tmp_usSubtype; // 已弃用

    // 记录一些信息
    public TRANSFER_AV_INFO_tmpInternal_streamInfo tmp_internal_streamInfo = new TRANSFER_AV_INFO_tmpInternal_streamInfo();

    public int tmp_internal_usCnt_consult_mems; // 暂时没用到,已弃用

    public AV_stream tmp_internal_tmpAs = new AV_stream(); // 临时记录的一些信息
}
/**
 * 响应的包
 */
public static class TRANSFER_AV_replyInfo extends IM_CONTENTU {                                   //  2007/07/06
    /**
     * tStartTime_org 和 uiTranNo_org 唯一表示一个包
     */
    public long tStartTime_org; // 发送的时间(秒级时间戳)
    public int uiTranNo_org; // 发送的序号
    public short usOp; // 表明会议(我)拒绝、允许
    public AV_TRAN_INFO tranInfo = new AV_TRAN_INFO();
    public TransferAvReplyInfo_viewDynBmpReply viewDynBmpReply = new TransferAvReplyInfo_viewDynBmpReply(); // 远程查看视频的时候响应包的一个辅助结构
    public Object pInternal = new Object(); // 标志位,上面的发送,下面的不发送,无用
    public int tmp_usSubtype;
    public TransferAvReplyInfo_tmp_internal tmp_internal = new TransferAvReplyInfo_tmp_internal();

}
    /**
     * 传输音频数据包
     */
    public static class TRANSFER_AUDIO_DATA extends IM_CONTENTU {
        /**
         * 唯一值,标识打开音频设备的序号
         */
        public int uiTranNo_openAvDev;
        public long tLastTime_showFrameInfo_020534; // 已弃用
        public short usCnt_pkts; // 暂时无用

        /**
         * 临时的变量, 不是很重要
         */
        public TRANSFER_AUDIO_DATA_tmpInternal tmpInternal = new TRANSFER_AUDIO_DATA_tmpInternal();

        /**
         * 计数器:下面几个成员
         */
        public short usCnt;

        /**
         * Member的结构体
         */
        TRANSFER_AUDIO_dataMemHead[] mems = new TRANSFER_AUDIO_dataMemHead[CONST_maxTransferAvDataMems];

        /**
         * 整个数据长度(上面的memes所有的帧的数据之和)
         */
        public int uiLen;                                 //  2009/05/20
        public ByteBuffer buf = ByteBuffer.allocateDirect(bufSize_transferAudioData);//[];    //  2009/05/20

    }
    /**
     * 传输视频包,同音频
     */
    public static class TRANSFER_VIDEO_DATA extends IM_CONTENTU {
        /**
         * 唯一值,标识打开视频设备的序号
         */
        public int uiTranNo_openAvDev;
        public TRANSFER_VIDEO_DATA_tmpInternal tmpInternal = new TRANSFER_VIDEO_DATA_tmpInternal(); // 临时的变量,不重要
        /**
         * 计数器:Members的数量(视频的每一帧)
         */
        public short usCnt;
        /**
         * 视频每一帧的头信息
         */
        public TRANSFER_VIDEO_dataMemHead[] mems = new TRANSFER_VIDEO_dataMemHead[CONST_maxTransferAvDataMems];
        /**
         * 数据总长度(上面mems之和)
         */
        public int uiLen;
        public ByteBuffer buf = ByteBuffer.allocateDirect(bufSize_transferVideoData);

    }
/**
 * 申请发言的包
 */
public static class TASK_INTERACTION_REQ extends IM_CONTENTU {
    /**
     * tStartTime_org(开始时间戳) + uiTranNo_org 用来标识唯一包
     */
    public long tStartTime_org;
    public int uiTranNo_org;
    /**
     * 申请发言操作:申请、取消
     */
    public short usOp;
    /**
     * 发言人的音视频参数
     */
    public AV_stream avStream = new AV_stream();
    /**
     * 发言人的显示信息(会场名称)
     */
    public String talkerDesc;
    /**
     * 一个请求里发送的时候,需要告诉这个请求时哪个组的
     * 用于标识这个发言请求时归哪个组的
     */
    public qyDefs.QY_MESSENGER_ID idInfo_imGrp_related = new qyDefs.QY_MESSENGER_ID();
}
     /**
     * 会议关键信息包
     */
    public static class CONF_KEY extends IM_CONTENTU {

        /**
         * 关联组
         */
        public qyDefs.QY_MESSENGER_ID idInfo_imGrp_related = new qyDefs.QY_MESSENGER_ID();               //  2009/02/23
        /**
         * 发言人的相关信息
         */
        VIDEO_CONFERENCE_MEM[] mems = new VIDEO_CONFERENCE_MEM[Consts.MAX_conf_activeMems];

        //
        public static class ConfKey_tmpInternal {
            public int usCnt_mems;

            public byte[] toByteArray() {
                int size = Integer.BYTES;
                ByteBuffer buffer = ByteBuffer.allocateDirect(size);
                buffer.putInt(usCnt_mems);
                return buffer.array();
            }
        }

        ;
        public ConfKey_tmpInternal tmpInternal = new ConfKey_tmpInternal();

        //
        public short usLayoutType_starter;               //  2010/12/29

        //
        public short usCnt;
        public CONF_requesting_mems requestingMems = new CONF_requesting_mems();
        public ConfLayoutParam confLayoutParam = new ConfLayoutParam();

    }
public static class IM_CONTENTU {
    public int uiType; // 类型,视频包、音频包
}
public static class TRAN_conf_cfg {

    public int usMaxSpeakers; // 最多几个发言人,发言前做判断

    public TRAN_conf_cfg_conf conf = new TRAN_conf_cfg_conf(); // 视频的一些信息(帧率、宽高、编码)

    public byte ucbVideoConference; // 是否是组会议

    public int usConfType; // 暂时没用

    public qyDefs.QY_MESSENGER_ID idInfo_initiator = new qyDefs.QY_MESSENGER_ID(); // 会议发起方(召集人)的id

    public CONF_hg_info hgInfo = new CONF_hg_info();  // 汇款信息

}
public static class AV_stream_simple {
    public RES_obj_simple resObj = new RES_obj_simple(); // 视频源类型
    public AV_TRAN_INFO tranInfo = new AV_TRAN_INFO(); // 音视频格式
}
public static class RES_obj_simple {
    public int uiObjType;     // 类型(屏幕共享、发言人)
    public int usIndex_obj;   // 索引用来区分ObjType
    public int usHelp_subIndex; // 用来区分不同的球机
}
public static class AV_TRAN_INFO {
    public AV_tranInfo_head head = new AV_tranInfo_head(); // 视频头信息
    public TRAN_audio audio = new TRAN_audio(); // 音频格式
    public TRAN_video video = new TRAN_video(); // 视频格式
    public TASK_av_props taskAvProps = new TASK_av_props(); // 视频的(扩展)属性
}
public static class AV_tranInfo_head {
    public short shClientVer;            // 客户端版本号的高4位  //  2014/09/23. 客户端版本号的高位
}
public static class TRAN_audio {
    public int uiTranNo_openAvDev; // 唯一性的值,用来标识打开音频设备的序号
    public qyCommProc_open.AUDIO_COMPRESSOR_cfgCommon_head compressor = new qyCommProc_open.AUDIO_COMPRESSOR_cfgCommon_head(); // 音频压缩信息
    public qyCommProc_open.QY_AUDIO_HEADER ah_compress = new qyCommProc_open.QY_AUDIO_HEADER(); // 音频压缩格式
    public qyCommProc_open.AH_stream ah_stream = new qyCommProc_open.AH_stream(); // 应该暂时弃用
    public qyCommProc_open.QY_AUDIO_HEADER ah_decompress = new qyCommProc_open.QY_AUDIO_HEADER(); // 原始格式
}
public static class AUDIO_COMPRESSOR_cfgCommon_head {
    /**
     * @see qmcVideoCapture.Consts
     * 音频只用 21
     */
    public byte ucCompressors; // 压缩的方式
    public int iAvgBitrateInKbps; // 码流 (平均码流 音频码流32K )
}
public static class AV_TRAN_INFO {
    public AV_tranInfo_head head = new AV_tranInfo_head(); // 视频头信息
    public TRAN_audio audio = new TRAN_audio(); // 音频格式
    public TRAN_video video = new TRAN_video(); // 视频格式
    public TASK_av_props taskAvProps = new TASK_av_props(); // 视频的(扩展)属性
}
public static class TRANSFER_AV_INFO_viewDynBmp {
    public byte ucbSaveVideo;  // 是否存储                //  2014/08/04
}
public static class QY_MESSENGER_ID {                               //
    public long ui64Id;
}
回复
去登录