Changeset 3425 for pjproject


Ignore:
Timestamp:
Feb 28, 2011 6:59:47 PM (14 years ago)
Author:
nanang
Message:

Re #1182:

  • Renamed vstreamutil.c to vid_steamutil.c just for filename format consistency reason.
  • Updated sample app simpleua.c and vid_streamutil.c to sync with updated API, e.g: strip session usage, two media ports exported video streams for each dir.
  • Added vid_streamutil.c capability to be able to stream video file (involving transcoding when video codec used in the file different to the video stream codec), also updated AVI player and ffmpeg codecs to be able to read and decode XVID/MPEG4 codec.
  • Fixed bug wrong media type check in stream.c and vid_stream.c in creating stream info from SDP.
  • Minor update: docs, logs, app samples makefiles.
Location:
pjproject/branches/projects/2.0-dev
Files:
1 added
1 deleted
18 edited

Legend:

Unmodified
Added
Removed
  • pjproject/branches/projects/2.0-dev/pjmedia/include/pjmedia/config.h

    r3420 r3425  
    981981/** 
    982982 * Maximum video frame size. 
    983  * Default: 16kB 
    984  */ 
    985 #ifndef PJMEDIA_MAX_VIDEO_FRAME_SIZE                     
    986 #  define PJMEDIA_MAX_VIDEO_FRAME_SIZE                  (1<<14) 
     983 * Default: 128kB 
     984 */ 
     985#ifndef PJMEDIA_MAX_VIDEO_ENC_FRAME_SIZE 
     986#  define PJMEDIA_MAX_VIDEO_ENC_FRAME_SIZE          (1<<17) 
    987987#endif 
    988988 
  • pjproject/branches/projects/2.0-dev/pjmedia/include/pjmedia/format.h

    r3401 r3425  
    182182    PJMEDIA_FORMAT_H261     = PJMEDIA_FORMAT_PACK('H', '2', '6', '1'), 
    183183    PJMEDIA_FORMAT_H263     = PJMEDIA_FORMAT_PACK('H', '2', '6', '3'), 
     184    PJMEDIA_FORMAT_H263P    = PJMEDIA_FORMAT_PACK('P', '2', '6', '3'), 
    184185 
    185186    PJMEDIA_FORMAT_MJPEG    = PJMEDIA_FORMAT_PACK('M', 'J', 'P', 'G'), 
     
    187188    PJMEDIA_FORMAT_MPEG2VIDEO = PJMEDIA_FORMAT_PACK('M', 'P', '2', 'V'), 
    188189    PJMEDIA_FORMAT_MPEG4    = PJMEDIA_FORMAT_PACK('M', 'P', 'G', '4'), 
     190    PJMEDIA_FORMAT_XVID     = PJMEDIA_FORMAT_PACK('x', 'v', 'i', 'd'), 
    189191 
    190192} pjmedia_format_id; 
  • pjproject/branches/projects/2.0-dev/pjmedia/include/pjmedia/vid_codec.h

    r3420 r3425  
    8686 
    8787/** 
     88 * Duplicate video codec parameter. 
     89 * 
     90 * @param pool      The pool. 
     91 * @param src       The video codec parameter to be duplicated. 
     92 * 
     93 * @return          Duplicated codec parameter. 
     94 */ 
     95PJ_DECL(pjmedia_vid_codec_param*) pjmedia_vid_codec_param_clone( 
     96                                        pj_pool_t *pool,  
     97                                        const pjmedia_vid_codec_param *src); 
     98 
     99/** 
    88100 * Enumeration of video codec events. 
    89101 */ 
     
    517529                                            unsigned *prio); 
    518530 
     531 
    519532/** 
    520533 * Get codec info for the specified static payload type. 
     
    531544                                      unsigned pt, 
    532545                                      const pjmedia_vid_codec_info **info); 
     546 
     547 
     548/** 
     549 * Get codec info for the specified format ID. 
     550 * 
     551 * @param mgr       The codec manager instance. If NULL, the default codec 
     552 *                  manager instance will be used. 
     553 * @param fmt_id    Format ID. See #pjmedia_format_id 
     554 * @param info      Pointer to receive codec info. 
     555 * 
     556 * @return          PJ_SUCCESS on success. 
     557 */ 
     558PJ_DECL(pj_status_t)  
     559pjmedia_vid_codec_mgr_get_codec_info2(pjmedia_vid_codec_mgr *mgr, 
     560                                      pjmedia_format_id fmt_id, 
     561                                      const pjmedia_vid_codec_info **info); 
     562 
    533563 
    534564/** 
  • pjproject/branches/projects/2.0-dev/pjmedia/include/pjmedia/vid_stream.h

    r3420 r3425  
    8989                                         will be calculated from RTP.       */ 
    9090    unsigned            tx_pt;      /**< Outgoing codec paylaod type.       */ 
     91    unsigned            rx_pt;      /**< Incoming codec paylaod type.       */ 
    9192    pj_uint32_t         ssrc;       /**< RTP SSRC.                          */ 
    9293    pj_uint32_t         rtp_ts;     /**< Initial RTP timestamp.             */ 
     
    221222 
    222223/** 
     224 * Get the stream statistics. See also #pjmedia_stream_get_stat_jbuf() 
     225 * 
     226 * @param stream        The video stream. 
     227 * @param stat          Media stream statistics. 
     228 * 
     229 * @return              PJ_SUCCESS on success. 
     230 */ 
     231PJ_DECL(pj_status_t) pjmedia_vid_stream_get_stat( 
     232                                            const pjmedia_vid_stream *stream, 
     233                                            pjmedia_rtcp_stat *stat); 
     234 
     235/** 
     236 * Reset the video stream statistics. 
     237 * 
     238 * @param stream        The video stream. 
     239 * 
     240 * @return              PJ_SUCCESS on success. 
     241 */ 
     242PJ_DECL(pj_status_t) pjmedia_vid_stream_reset_stat(pjmedia_vid_stream *stream); 
     243 
     244 
     245/** 
     246 * Get current jitter buffer state. See also #pjmedia_stream_get_stat() 
     247 * 
     248 * @param stream        The video stream. 
     249 * @param state         Jitter buffer state. 
     250 * 
     251 * @return              PJ_SUCCESS on success. 
     252 */ 
     253PJ_DECL(pj_status_t) pjmedia_vid_stream_get_stat_jbuf( 
     254                                            const pjmedia_vid_stream *stream, 
     255                                            pjmedia_jb_state *state); 
     256 
     257 
     258/** 
     259 * Get the stream info. 
     260 * 
     261 * @param stream        The video stream. 
     262 * @param info          Video stream info. 
     263 * 
     264 * @return              PJ_SUCCESS on success. 
     265 */ 
     266PJ_DECL(pj_status_t) pjmedia_vid_stream_get_info( 
     267                                            const pjmedia_vid_stream *stream, 
     268                                            pjmedia_vid_stream_info *info); 
     269 
     270 
     271/** 
    223272 * Start the video stream. This will start the appropriate channels 
    224273 * in the video stream, depending on the video direction that was set 
     
    233282 
    234283/** 
    235  * Get the stream statistics. See also #pjmedia_stream_get_stat_jbuf() 
    236  * 
    237  * @param stream        The video stream. 
    238  * @param stat          Media stream statistics. 
    239  * 
    240  * @return              PJ_SUCCESS on success. 
    241  */ 
    242 PJ_DECL(pj_status_t) pjmedia_vid_stream_get_stat( 
    243                                             const pjmedia_vid_stream *stream, 
    244                                             pjmedia_rtcp_stat *stat); 
    245  
    246 /** 
    247  * Reset the video stream statistics. 
    248  * 
    249  * @param stream        The video stream. 
    250  * 
    251  * @return              PJ_SUCCESS on success. 
    252  */ 
    253 PJ_DECL(pj_status_t) pjmedia_vid_stream_reset_stat(pjmedia_vid_stream *stream); 
    254  
    255  
    256 /** 
    257  * Get current jitter buffer state. See also #pjmedia_stream_get_stat() 
    258  * 
    259  * @param stream        The video stream. 
    260  * @param state         Jitter buffer state. 
    261  * 
    262  * @return              PJ_SUCCESS on success. 
    263  */ 
    264 PJ_DECL(pj_status_t) pjmedia_vid_stream_get_stat_jbuf( 
    265                                             const pjmedia_vid_stream *stream, 
    266                                             pjmedia_jb_state *state); 
    267  
    268  
    269 PJ_DECL(pj_status_t) pjmedia_vid_stream_get_param( 
    270                                             const pjmedia_vid_stream *stream, 
    271                                             pjmedia_rtcp_stat *stat); 
    272  
    273 /** 
    274284 * Pause the individual channel in the stream. 
    275285 * 
  • pjproject/branches/projects/2.0-dev/pjmedia/src/pjmedia-codec/ffmpeg_codecs.c

    r3420 r3425  
    206206    /* Predefined info */ 
    207207    pjmedia_vid_codec_info       info; 
     208    pjmedia_format_id            base_fmt_id; 
    208209    func_packetize               packetize; 
    209210    func_unpacketize             unpacketize; 
     
    246247{ 
    247248    { 
    248         {PJMEDIA_FORMAT_H263,   {"H263",4},     PJMEDIA_RTP_PT_H263}, 
     249        {PJMEDIA_FORMAT_H263P,  {"H263-1998",9},    PJMEDIA_RTP_PT_H263}, 
     250        PJMEDIA_FORMAT_H263, 
    249251        &h263_packetize, &h263_unpacketize, &h263_parse_fmtp, 
    250252        {2, { {{"CIF",3}, {"2",1}}, {{"QCIF",4}, {"1",1}}, } }, 
    251253    }, 
    252254    { 
    253         {PJMEDIA_FORMAT_H261,   {"H261",4},     PJMEDIA_RTP_PT_H261}, 
     255        {PJMEDIA_FORMAT_H263,   {"H263",4},         PJMEDIA_RTP_PT_H263}, 
     256        0, 
     257        &h263_packetize, &h263_unpacketize, &h263_parse_fmtp, 
     258        {2, { {{"CIF",3}, {"2",1}}, {{"QCIF",4}, {"1",1}}, } }, 
    254259    }, 
    255260    { 
    256         {PJMEDIA_FORMAT_MJPEG,  {"JPEG",4},     PJMEDIA_RTP_PT_JPEG}, 
     261        {PJMEDIA_FORMAT_H261,   {"H261",4},         PJMEDIA_RTP_PT_H261}, 
     262    }, 
     263    { 
     264        {PJMEDIA_FORMAT_MJPEG,  {"JPEG",4},         PJMEDIA_RTP_PT_JPEG}, 
     265    }, 
     266    { 
     267        {PJMEDIA_FORMAT_MPEG4,  {"MP4V",4},         PJMEDIA_RTP_PT_MPV}, 
     268    }, 
     269    { 
     270        {PJMEDIA_FORMAT_XVID,   {"XVID",4},         PJMEDIA_RTP_PT_MPV}, 
     271        PJMEDIA_FORMAT_MPEG4, 
    257272    }, 
    258273}; 
     
    448463 
    449464 
    450 static const ffmpeg_codec_desc* find_codec_info( 
     465static const ffmpeg_codec_desc* find_codec_desc_by_info( 
    451466                        const pjmedia_vid_codec_info *info) 
    452467{ 
     
    469484 
    470485 
    471 static int find_codec_info_idx_by_fmt_id(pjmedia_format_id fmt_id) 
     486static int find_codec_idx_by_fmt_id(pjmedia_format_id fmt_id) 
    472487{ 
    473488    int i; 
     
    490505    AVCodec *c; 
    491506    pj_status_t status; 
     507    unsigned i; 
    492508 
    493509    if (ffmpeg_factory.pool != NULL) { 
     
    533549         */ 
    534550 
     551        //PJ_LOG(3, (THIS_FILE, "%s", c->name)); 
    535552        status = CodecID_to_pjmedia_format_id(c->id, &fmt_id); 
    536553        /* Skip if format ID is unknown */ 
     
    538555            continue; 
    539556 
    540         codec_info_idx = find_codec_info_idx_by_fmt_id(fmt_id); 
     557        codec_info_idx = find_codec_idx_by_fmt_id(fmt_id); 
    541558        /* Skip if codec is unwanted by this wrapper (not listed in  
    542559         * the codec info array) 
     
    635652    } 
    636653 
     654    /* Init unassigned encoder/decoder description from base codec */ 
     655    for (i = 0; i < PJ_ARRAY_SIZE(codec_desc); ++i) { 
     656        ffmpeg_codec_desc *desc = &codec_desc[i]; 
     657 
     658        if (desc->base_fmt_id && (!desc->dec || !desc->enc)) { 
     659            ffmpeg_codec_desc *base_desc = NULL; 
     660            int base_desc_idx; 
     661            pjmedia_dir copied_dir = PJMEDIA_DIR_NONE; 
     662 
     663            base_desc_idx = find_codec_idx_by_fmt_id(desc->base_fmt_id); 
     664            if (base_desc_idx != -1) 
     665                base_desc = &codec_desc[base_desc_idx]; 
     666            if (!base_desc || !base_desc->enabled) 
     667                continue; 
     668 
     669            /* Copy description from base codec */ 
     670            if (!desc->info.dec_fmt_id_cnt) { 
     671                desc->info.dec_fmt_id_cnt = base_desc->info.dec_fmt_id_cnt; 
     672                pj_memcpy(desc->info.dec_fmt_id, base_desc->info.dec_fmt_id,  
     673                          sizeof(pjmedia_format_id)*desc->info.dec_fmt_id_cnt); 
     674            } 
     675            if (!desc->info.fps_cnt) { 
     676                desc->info.fps_cnt = base_desc->info.fps_cnt; 
     677                pj_memcpy(desc->info.fps, base_desc->info.fps,  
     678                          sizeof(desc->info.fps[0])*desc->info.fps_cnt); 
     679            } 
     680            if (!desc->info.clock_rate) { 
     681                desc->info.clock_rate = base_desc->info.clock_rate; 
     682            } 
     683            if (!desc->dec && base_desc->dec) { 
     684                copied_dir |= PJMEDIA_DIR_DECODING; 
     685                desc->dec = base_desc->dec; 
     686            } 
     687            if (!desc->enc && base_desc->enc) { 
     688                copied_dir |= PJMEDIA_DIR_ENCODING; 
     689                desc->enc = base_desc->enc; 
     690            } 
     691 
     692            desc->info.dir |= copied_dir; 
     693            desc->enabled = (desc->info.dir != PJMEDIA_DIR_NONE); 
     694 
     695            if (copied_dir != PJMEDIA_DIR_NONE) { 
     696                const char *dir_name[] = {NULL, "encoder", "decoder", "codec"}; 
     697                PJ_LOG(5, (THIS_FILE, "The %.*s %s is using base codec (%.*s)", 
     698                           desc->info.encoding_name.slen, 
     699                           desc->info.encoding_name.ptr, 
     700                           dir_name[copied_dir], 
     701                           base_desc->info.encoding_name.slen, 
     702                           base_desc->info.encoding_name.ptr)); 
     703            } 
     704        } 
     705    } 
     706 
    637707    /* Register codec factory to codec manager. */ 
    638708    status = pjmedia_vid_codec_mgr_register_factory(mgr,  
     
    691761    PJ_ASSERT_RETURN(info, PJ_EINVAL); 
    692762 
    693     desc = find_codec_info(info); 
     763    desc = find_codec_desc_by_info(info); 
    694764    if (!desc) { 
    695765        return PJMEDIA_CODEC_EUNSUP; 
     
    711781    PJ_ASSERT_RETURN(info && attr, PJ_EINVAL); 
    712782 
    713     desc = find_codec_info(info); 
     783    desc = find_codec_desc_by_info(info); 
    714784    if (!desc) { 
    715785        return PJMEDIA_CODEC_EUNSUP; 
     
    742812                                       pjmedia_vid_codec_info codecs[]) 
    743813{ 
    744     unsigned i; 
     814    unsigned i, max_cnt; 
    745815 
    746816    PJ_ASSERT_RETURN(codecs && *count > 0, PJ_EINVAL); 
    747817    PJ_ASSERT_RETURN(factory == &ffmpeg_factory.base, PJ_EINVAL); 
    748818 
    749     *count = PJ_MIN(*count, PJ_ARRAY_SIZE(codec_desc)); 
    750  
    751     for (i=0; i<*count; ++i) { 
    752         pj_memcpy(&codecs[i], &codec_desc[i].info,  
    753                   sizeof(pjmedia_vid_codec_info)); 
     819    max_cnt = PJ_MIN(*count, PJ_ARRAY_SIZE(codec_desc)); 
     820    *count = 0; 
     821 
     822    for (i=0; i<max_cnt; ++i) { 
     823        if (codec_desc[i].enabled) { 
     824            pj_memcpy(&codecs[*count], &codec_desc[i].info,  
     825                      sizeof(pjmedia_vid_codec_info)); 
     826            (*count)++; 
     827        } 
    754828    } 
    755829 
     
    773847    PJ_ASSERT_RETURN(factory == &ffmpeg_factory.base, PJ_EINVAL); 
    774848 
    775     desc = find_codec_info(info); 
     849    desc = find_codec_desc_by_info(info); 
    776850    if (!desc) { 
    777851        return PJMEDIA_CODEC_EUNSUP; 
     
    9281002 
    9291003            /* Decoding only attributes */ 
    930             // this setting will be automatically fetched from the bitstream. 
    931             //ctx->coded_width = ff->param.dec_fmt.det.vid.size.w; 
    932             //ctx->coded_height = ff->param.dec_fmt.det.vid.size.h; 
     1004 
     1005            /* Width/height may be overriden by ffmpeg after first decoding. */ 
     1006            ctx->width = ctx->coded_width = ff->param.dec_fmt.det.vid.size.w; 
     1007            ctx->height = ctx->coded_height = ff->param.dec_fmt.det.vid.size.h; 
    9331008 
    9341009            /* For decoder, be more flexible */ 
     
    11991274 
    12001275    /* Validate output buffer size */ 
    1201     PJ_ASSERT_RETURN(ff->dec_vafp.framebytes <= output_buf_len, PJ_ETOOSMALL); 
     1276    //PJ_ASSERT_RETURN(ff->dec_vafp.framebytes <= output_buf_len, PJ_ETOOSMALL); 
    12021277 
    12031278    /* Init frame to receive the decoded data, the ffmpeg codec context will 
     
    13111386 
    13121387        /* Check provided buffer size after format changed */ 
    1313         if (vafp->framebytes > output_buf_len) 
    1314             return PJ_ETOOSMALL; 
     1388        //if (vafp->framebytes > output_buf_len) 
     1389            //return PJ_ETOOSMALL; 
    13151390 
    13161391        /* Get the decoded data */ 
  • pjproject/branches/projects/2.0-dev/pjmedia/src/pjmedia/avi_player.c

    r3402 r3425  
    340340            if (avi_hdr.strl_hdr[i].flags & AVISF_VIDEO_PALCHANGES || 
    341341                (avi_hdr.strl_hdr[i].codec != PJMEDIA_FORMAT_MJPEG && 
     342                 avi_hdr.strl_hdr[i].codec != PJMEDIA_FORMAT_XVID && 
    342343                 avi_hdr.strl_hdr[i].codec != PJMEDIA_FORMAT_UYVY && 
    343344                 avi_hdr.strl_hdr[i].codec != PJMEDIA_FORMAT_YUY2 && 
  • pjproject/branches/projects/2.0-dev/pjmedia/src/pjmedia/ffmpeg_util.c

    r3392 r3425  
    5252} ffmpeg_codec_table[] = 
    5353{ 
    54     {PJMEDIA_FORMAT_H261,  CODEC_ID_H261}, 
    55     {PJMEDIA_FORMAT_H263,  CODEC_ID_H263}, 
    56     {PJMEDIA_FORMAT_MPEG1VIDEO,  CODEC_ID_MPEG1VIDEO}, 
    57     {PJMEDIA_FORMAT_MPEG2VIDEO,  CODEC_ID_MPEG2VIDEO}, 
    58     {PJMEDIA_FORMAT_MPEG4,  CODEC_ID_MPEG4},     
    59     {PJMEDIA_FORMAT_MJPEG,  CODEC_ID_MJPEG}, 
     54    {PJMEDIA_FORMAT_H261,       CODEC_ID_H261}, 
     55    {PJMEDIA_FORMAT_H263,       CODEC_ID_H263}, 
     56    {PJMEDIA_FORMAT_H263P,      CODEC_ID_H263P}, 
     57    {PJMEDIA_FORMAT_MPEG1VIDEO, CODEC_ID_MPEG1VIDEO}, 
     58    {PJMEDIA_FORMAT_MPEG2VIDEO, CODEC_ID_MPEG2VIDEO}, 
     59    {PJMEDIA_FORMAT_MPEG4,      CODEC_ID_MPEG4}, 
     60    {PJMEDIA_FORMAT_MJPEG,      CODEC_ID_MJPEG}, 
     61#if LIBAVCODEC_VERSION_MAJOR < 53 
     62    {PJMEDIA_FORMAT_XVID,       CODEC_ID_XVID}, 
     63#endif 
    6064}; 
    6165 
  • pjproject/branches/projects/2.0-dev/pjmedia/src/pjmedia/stream.c

    r3420 r3425  
    30353035 
    30363036    /* Media type must be audio */ 
    3037     if (pj_stricmp(&local_m->desc.media, &ID_AUDIO) == 0) 
     3037    if (pj_stricmp(&local_m->desc.media, &ID_AUDIO) != 0) 
    30383038        return PJMEDIA_EINVALIMEDIATYPE; 
    30393039 
  • pjproject/branches/projects/2.0-dev/pjmedia/src/pjmedia/vid_codec.c

    r3420 r3425  
    6969 
    7070/* 
     71 * Duplicate video codec parameter. 
     72 */ 
     73PJ_DEF(pjmedia_vid_codec_param*) pjmedia_vid_codec_param_clone( 
     74                                        pj_pool_t *pool,  
     75                                        const pjmedia_vid_codec_param *src) 
     76{ 
     77    pjmedia_vid_codec_param *p; 
     78    unsigned i; 
     79 
     80    PJ_ASSERT_RETURN(pool && src, NULL); 
     81 
     82    p = PJ_POOL_ZALLOC_T(pool, pjmedia_vid_codec_param); 
     83 
     84    /* Update codec param */ 
     85    pj_memcpy(p, src, sizeof(pjmedia_vid_codec_param)); 
     86    for (i = 0; i < src->dec_fmtp.cnt; ++i) { 
     87        pj_strdup(pool, &p->dec_fmtp.param[i].name,  
     88                  &src->dec_fmtp.param[i].name); 
     89        pj_strdup(pool, &p->dec_fmtp.param[i].val,  
     90                  &src->dec_fmtp.param[i].val); 
     91    } 
     92    for (i = 0; i < src->enc_fmtp.cnt; ++i) { 
     93        pj_strdup(pool, &p->enc_fmtp.param[i].name,  
     94                  &src->enc_fmtp.param[i].name); 
     95        pj_strdup(pool, &p->enc_fmtp.param[i].val,  
     96                  &src->enc_fmtp.param[i].val); 
     97    } 
     98 
     99    return p; 
     100} 
     101 
     102/* 
    71103 * Initialize codec manager. 
    72104 */ 
     
    306338 
    307339 
     340PJ_DEF(pj_status_t) pjmedia_vid_codec_mgr_get_codec_info2( 
     341                                    pjmedia_vid_codec_mgr *mgr, 
     342                                    pjmedia_format_id fmt_id, 
     343                                    const pjmedia_vid_codec_info **p_info) 
     344{ 
     345    unsigned i; 
     346 
     347    PJ_ASSERT_RETURN(p_info, PJ_EINVAL); 
     348 
     349    if (!mgr) mgr = def_vid_codec_mgr; 
     350    PJ_ASSERT_RETURN(mgr, PJ_EINVAL); 
     351 
     352    pj_mutex_lock(mgr->mutex); 
     353 
     354    for (i=0; i<mgr->codec_cnt; ++i) { 
     355        if (mgr->codec_desc[i].info.fmt_id == fmt_id) { 
     356            *p_info = &mgr->codec_desc[i].info; 
     357 
     358            pj_mutex_unlock(mgr->mutex); 
     359            return PJ_SUCCESS; 
     360        } 
     361    } 
     362 
     363    pj_mutex_unlock(mgr->mutex); 
     364 
     365    return PJMEDIA_CODEC_EUNSUP; 
     366} 
     367 
     368 
    308369/* 
    309370 * Convert codec info struct into a unique codec identifier. 
     
    633694    } 
    634695 
    635     p = PJ_POOL_ZALLOC_T(pool, pjmedia_vid_codec_param); 
    636     p = codec_desc->def_param; 
    637  
    638     /* Update codec param */ 
    639     pj_memcpy(p, param, sizeof(pjmedia_vid_codec_param)); 
    640     for (i = 0; i < param->dec_fmtp.cnt; ++i) { 
    641         pj_strdup(pool, &p->dec_fmtp.param[i].name,  
    642                   &param->dec_fmtp.param[i].name); 
    643         pj_strdup(pool, &p->dec_fmtp.param[i].val,  
    644                   &param->dec_fmtp.param[i].val); 
    645     } 
    646     for (i = 0; i < param->enc_fmtp.cnt; ++i) { 
    647         pj_strdup(pool, &p->enc_fmtp.param[i].name,  
    648                   &param->enc_fmtp.param[i].name); 
    649         pj_strdup(pool, &p->enc_fmtp.param[i].val,  
    650                   &param->enc_fmtp.param[i].val); 
    651     } 
     696    /* Update codec default param */ 
     697    p = pjmedia_vid_codec_param_clone(pool, param); 
     698    if (!p) 
     699        return PJ_EINVAL; 
     700    codec_desc->def_param = p; 
    652701 
    653702    pj_mutex_unlock(mgr->mutex); 
  • pjproject/branches/projects/2.0-dev/pjmedia/src/pjmedia/vid_stream.c

    r3420 r3425  
    8585    pjmedia_endpt           *endpt;         /**< Media endpoint.            */ 
    8686    pjmedia_vid_codec_mgr   *codec_mgr;     /**< Codec manager.             */ 
     87    pjmedia_vid_stream_info  info;          /**< Stream info.               */ 
    8788 
    8889    pjmedia_vid_channel     *enc;           /**< Encoding channel.          */ 
     
    129130 
    130131#if TRACE_JB 
    131     pj_oshandle_t           trace_jb_fd;            /**< Jitter tracing file handle.*/ 
    132     char                   *trace_jb_buf;           /**< Jitter tracing buffer.     */ 
     132    pj_oshandle_t            trace_jb_fd;   /**< Jitter tracing file handle.*/ 
     133    char                    *trace_jb_buf;  /**< Jitter tracing buffer.     */ 
    133134#endif 
    134135 
    135     pjmedia_vid_codec       *codec;                 /**< Codec instance being used. */ 
    136     pjmedia_vid_codec_info   codec_info;           /**< Codec param.                */ 
    137     pjmedia_vid_codec_param  codec_param;          /**< Codec param.                */ 
    138  
    139     pjmedia_vid_stream_info     info; 
     136    pjmedia_vid_codec       *codec;         /**< Codec instance being used. */ 
    140137}; 
    141138 
     
    627624        status = pjmedia_jbuf_reset(stream->jb); 
    628625        PJ_LOG(4,(channel->port.info.name.ptr, "Jitter buffer reset")); 
    629  
    630626    } else { 
    631  
    632         /* Video stream */ 
    633  
    634627        /* Just put the payload into jitter buffer */ 
    635628        pjmedia_jbuf_put_frame3(stream->jb, payload, payloadlen, 0,  
     
    928921    if (frame->bit_info & PJMEDIA_VID_CODEC_EVENT_FMT_CHANGED) { 
    929922        /* Update param from codec */ 
    930         stream->codec->op->get_param(stream->codec, &stream->codec_param); 
     923        stream->codec->op->get_param(stream->codec, stream->info.codec_param); 
    931924 
    932925        /* Update decoding channel port info */ 
    933         stream->dec->port.info.fmt = stream->codec_param.dec_fmt; 
     926        pjmedia_format_copy(&stream->dec->port.info.fmt, 
     927                            &stream->info.codec_param->dec_fmt); 
    934928    } 
    935929     
     
    965959    /* Init vars */ 
    966960    if (dir==PJMEDIA_DIR_DECODING) { 
    967         type_name = "vstrmdec"; 
     961        type_name = "vstdec"; 
    968962        fmt = &info->codec_param->dec_fmt; 
    969963    } else { 
    970         type_name = "vstrmenc"; 
     964        type_name = "vstenc"; 
    971965        fmt = &info->codec_param->enc_fmt; 
    972966    } 
     
    10541048    PJ_ASSERT_RETURN(stream != NULL, PJ_ENOMEM); 
    10551049 
     1050    /* Copy stream info */ 
     1051    pj_memcpy(&stream->info, info, sizeof(*info)); 
     1052 
    10561053    /* Get codec manager */ 
    10571054    stream->codec_mgr = pjmedia_vid_codec_mgr_instance(); 
     
    10641061 
    10651062    /* Create and initialize codec: */ 
    1066     stream->codec_info = info->codec_info; 
    10671063    status = pjmedia_vid_codec_mgr_alloc_codec(stream->codec_mgr,  
    10681064                                               &info->codec_info, 
     
    10731069 
    10741070    /* Get codec param: */ 
    1075     if (info->codec_param) 
    1076         stream->codec_param = *info->codec_param; 
    1077     else { 
     1071    if (info->codec_param) { 
     1072        stream->info.codec_param = pjmedia_vid_codec_param_clone( 
     1073                                                        pool, 
     1074                                                        info->codec_param); 
     1075    } else { 
     1076        pjmedia_vid_codec_param def_param; 
     1077 
    10781078        status = pjmedia_vid_codec_mgr_get_default_param(stream->codec_mgr,  
    10791079                                                         &info->codec_info, 
    1080                                                          &stream->codec_param); 
     1080                                                         &def_param); 
    10811081        if (status != PJ_SUCCESS) 
    10821082            return status; 
     1083        stream->info.codec_param = pjmedia_vid_codec_param_clone( 
     1084                                                        pool, 
     1085                                                        &def_param); 
     1086        pj_assert(stream->info.codec_param); 
    10831087    } 
    10841088 
    10851089    vfd_enc = pjmedia_format_get_video_format_detail( 
    1086                                             &stream->codec_param.enc_fmt, 1); 
     1090                                        &stream->info.codec_param->enc_fmt, 
     1091                                        PJ_TRUE); 
    10871092 
    10881093    /* Init stream: */ 
     
    11171122 
    11181123    /* Init codec param */ 
    1119     stream->codec_param.dir = info->dir; 
    1120     stream->codec_param.enc_mtu = PJMEDIA_MAX_MTU - sizeof(pjmedia_rtp_hdr); 
     1124    stream->info.codec_param->dir = info->dir; 
     1125    stream->info.codec_param->enc_mtu = PJMEDIA_MAX_MTU -  
     1126                                        sizeof(pjmedia_rtp_hdr); 
    11211127 
    11221128    /* Init and open the codec. */ 
     
    11241130    if (status != PJ_SUCCESS) 
    11251131        return status; 
    1126     status = stream->codec->op->open(stream->codec, &stream->codec_param); 
     1132    status = stream->codec->op->open(stream->codec, stream->info.codec_param); 
    11271133    if (status != PJ_SUCCESS) 
    11281134        return status; 
     
    11401146    /* Validate the frame size */ 
    11411147    if (stream->frame_size == 0 ||  
    1142         stream->frame_size > PJMEDIA_MAX_VIDEO_FRAME_SIZE) 
     1148        stream->frame_size > PJMEDIA_MAX_VIDEO_ENC_FRAME_SIZE) 
    11431149    { 
    1144         stream->frame_size = PJMEDIA_MAX_VIDEO_FRAME_SIZE; 
     1150        stream->frame_size = PJMEDIA_MAX_VIDEO_ENC_FRAME_SIZE; 
    11451151    } 
    11461152 
     
    11511157    /* Create decoder channel */ 
    11521158    status = create_channel( pool, stream, PJMEDIA_DIR_DECODING,  
    1153                              info->codec_info.pt, info, &stream->dec); 
     1159                             info->rx_pt, info, &stream->dec); 
    11541160    if (status != PJ_SUCCESS) 
    11551161        return status; 
     
    14081414 
    14091415/* 
     1416 * Get stream statistics. 
     1417 */ 
     1418PJ_DEF(pj_status_t) pjmedia_vid_stream_get_stat( 
     1419                                            const pjmedia_vid_stream *stream, 
     1420                                            pjmedia_rtcp_stat *stat) 
     1421{ 
     1422    PJ_ASSERT_RETURN(stream && stat, PJ_EINVAL); 
     1423 
     1424    pj_memcpy(stat, &stream->rtcp.stat, sizeof(pjmedia_rtcp_stat)); 
     1425    return PJ_SUCCESS; 
     1426} 
     1427 
     1428 
     1429/* 
     1430 * Reset the stream statistics in the middle of a stream session. 
     1431 */ 
     1432PJ_DEF(pj_status_t) pjmedia_vid_stream_reset_stat(pjmedia_vid_stream *stream) 
     1433{ 
     1434    PJ_ASSERT_RETURN(stream, PJ_EINVAL); 
     1435 
     1436    pjmedia_rtcp_init_stat(&stream->rtcp.stat); 
     1437 
     1438    return PJ_SUCCESS; 
     1439} 
     1440 
     1441 
     1442#if defined(PJMEDIA_HAS_RTCP_XR) && (PJMEDIA_HAS_RTCP_XR != 0) 
     1443/* 
     1444 * Get stream extended statistics. 
     1445 */ 
     1446PJ_DEF(pj_status_t) pjmedia_stream_get_stat_xr( 
     1447                                            const pjmedia_vid_stream *stream, 
     1448                                            pjmedia_rtcp_xr_stat *stat) 
     1449{ 
     1450    PJ_ASSERT_RETURN(stream && stat, PJ_EINVAL); 
     1451 
     1452    if (stream->rtcp.xr_enabled) { 
     1453        pj_memcpy(stat, &stream->rtcp.xr_session.stat, 
     1454                  sizeof(pjmedia_rtcp_xr_stat)); 
     1455        return PJ_SUCCESS; 
     1456    } 
     1457    return PJ_ENOTFOUND; 
     1458} 
     1459#endif 
     1460 
     1461/* 
     1462 * Get jitter buffer state. 
     1463 */ 
     1464PJ_DEF(pj_status_t) pjmedia_vid_stream_get_stat_jbuf( 
     1465                                            const pjmedia_vid_stream *stream, 
     1466                                            pjmedia_jb_state *state) 
     1467{ 
     1468    PJ_ASSERT_RETURN(stream && state, PJ_EINVAL); 
     1469    return pjmedia_jbuf_get_state(stream->jb, state); 
     1470} 
     1471 
     1472 
     1473/* 
     1474 * Get the stream info. 
     1475 */ 
     1476PJ_DEF(pj_status_t) pjmedia_vid_stream_get_info( 
     1477                                            const pjmedia_vid_stream *stream, 
     1478                                            pjmedia_vid_stream_info *info) 
     1479{ 
     1480    PJ_ASSERT_RETURN(stream && info, PJ_EINVAL); 
     1481    pj_memcpy(info, &stream->info, sizeof(*info)); 
     1482    return PJ_SUCCESS; 
     1483} 
     1484 
     1485 
     1486/* 
    14101487 * Start stream. 
    14111488 */ 
     
    14341511} 
    14351512 
    1436  
    1437 /* 
    1438  * Get stream statistics. 
    1439  */ 
    1440 PJ_DEF(pj_status_t) pjmedia_vid_stream_get_stat( 
    1441                                             const pjmedia_vid_stream *stream, 
    1442                                             pjmedia_rtcp_stat *stat) 
    1443 { 
    1444     PJ_ASSERT_RETURN(stream && stat, PJ_EINVAL); 
    1445  
    1446     pj_memcpy(stat, &stream->rtcp.stat, sizeof(pjmedia_rtcp_stat)); 
    1447     return PJ_SUCCESS; 
    1448 } 
    1449  
    1450  
    1451 /* 
    1452  * Reset the stream statistics in the middle of a stream session. 
    1453  */ 
    1454 PJ_DEF(pj_status_t) pjmedia_vid_stream_reset_stat(pjmedia_vid_stream *stream) 
    1455 { 
    1456     PJ_ASSERT_RETURN(stream, PJ_EINVAL); 
    1457  
    1458     pjmedia_rtcp_init_stat(&stream->rtcp.stat); 
    1459  
    1460     return PJ_SUCCESS; 
    1461 } 
    1462  
    1463  
    1464 #if defined(PJMEDIA_HAS_RTCP_XR) && (PJMEDIA_HAS_RTCP_XR != 0) 
    1465 /* 
    1466  * Get stream extended statistics. 
    1467  */ 
    1468 PJ_DEF(pj_status_t) pjmedia_stream_get_stat_xr( 
    1469                                             const pjmedia_vid_stream *stream, 
    1470                                             pjmedia_rtcp_xr_stat *stat) 
    1471 { 
    1472     PJ_ASSERT_RETURN(stream && stat, PJ_EINVAL); 
    1473  
    1474     if (stream->rtcp.xr_enabled) { 
    1475         pj_memcpy(stat, &stream->rtcp.xr_session.stat, 
    1476                   sizeof(pjmedia_rtcp_xr_stat)); 
    1477         return PJ_SUCCESS; 
    1478     } 
    1479     return PJ_ENOTFOUND; 
    1480 } 
    1481 #endif 
    1482  
    1483 /* 
    1484  * Get jitter buffer state. 
    1485  */ 
    1486 PJ_DEF(pj_status_t) pjmedia_vid_stream_get_stat_jbuf( 
    1487                                             const pjmedia_vid_stream *stream, 
    1488                                             pjmedia_jb_state *state) 
    1489 { 
    1490     PJ_ASSERT_RETURN(stream && state, PJ_EINVAL); 
    1491     return pjmedia_jbuf_get_state(stream->jb, state); 
    1492 } 
    14931513 
    14941514/* 
     
    15791599     */ 
    15801600    pt = pj_strtoul(&local_m->desc.fmt[0]); 
     1601    si->rx_pt = pt; 
    15811602    if (pt < 96) { 
    15821603        const pjmedia_vid_codec_info *p_info; 
     
    16601681 
    16611682    /* Get local fmtp for our decoder. */ 
    1662     pjmedia_stream_info_parse_fmtp(pool, local_m, pt, 
     1683    pjmedia_stream_info_parse_fmtp(pool, local_m, si->rx_pt, 
    16631684                                   &si->codec_param->dec_fmtp); 
    16641685 
     
    17181739 
    17191740    /* Media type must be audio */ 
    1720     if (pj_stricmp(&local_m->desc.media, &ID_VIDEO) == 0) 
     1741    if (pj_stricmp(&local_m->desc.media, &ID_VIDEO) != 0) 
    17211742        return PJMEDIA_EINVALIMEDIATYPE; 
    17221743 
  • pjproject/branches/projects/2.0-dev/pjmedia/src/test/vid_codec_test.c

    r3392 r3425  
    2121{ 
    2222    codec_port_data_t *port_data = (codec_port_data_t*)port->port_data.pdata; 
    23     pjmedia_vid_codec *codec = port_data->codec; 
    24     pjmedia_frame enc_frame; 
    2523    pj_status_t status; 
    2624 
    27     enc_frame.buf = port_data->enc_buf; 
    28     enc_frame.size = port_data->enc_buf_size; 
    29  
    3025#if !BYPASS_CODEC 
    31     status = codec->op->encode(codec, frame, enc_frame.size, &enc_frame); 
    32     if (status != PJ_SUCCESS) goto on_error; 
    33     status = codec->op->decode(codec, &enc_frame, frame->size, frame); 
    34     if (status != PJ_SUCCESS) goto on_error; 
     26    { 
     27        pjmedia_vid_codec *codec = port_data->codec; 
     28        pjmedia_frame enc_frame; 
     29 
     30        enc_frame.buf = port_data->enc_buf; 
     31        enc_frame.size = port_data->enc_buf_size; 
     32 
     33        status = codec->op->encode(codec, frame, enc_frame.size, &enc_frame); 
     34        if (status != PJ_SUCCESS) goto on_error; 
     35        status = codec->op->decode(codec, &enc_frame, frame->size, frame); 
     36        if (status != PJ_SUCCESS) goto on_error; 
     37    } 
    3538#endif 
    3639 
     
    8891                              pjmedia_format_id raw_fmt_id) 
    8992{ 
     93    const pj_str_t port_name = {"codec", 5}; 
    9094 
    9195    pjmedia_vid_codec *codec=NULL; 
     
    163167    } 
    164168 
     169    /* Prepare codec */ 
     170    { 
     171        pj_str_t codec_id_st; 
     172        unsigned info_cnt = 1; 
     173        const pjmedia_vid_codec_info *codec_info; 
     174 
     175        /* Lookup codec */ 
     176        pj_cstr(&codec_id_st, codec_id); 
     177        status = pjmedia_vid_codec_mgr_find_codecs_by_id(NULL, &codec_id_st,  
     178                                                         &info_cnt,  
     179                                                         &codec_info, NULL); 
     180        if (status != PJ_SUCCESS) { 
     181            rc = 245; goto on_return; 
     182        } 
     183        status = pjmedia_vid_codec_mgr_get_default_param(NULL, codec_info, 
     184                                                         &codec_param); 
     185        if (status != PJ_SUCCESS) { 
     186            rc = 246; goto on_return; 
     187        } 
     188 
     189#if !BYPASS_CODEC 
     190 
     191        /* Open codec */ 
     192        status = pjmedia_vid_codec_mgr_alloc_codec(NULL, codec_info, 
     193                                                   &codec); 
     194        if (status != PJ_SUCCESS) { 
     195            rc = 250; goto on_return; 
     196        } 
     197 
     198        status = codec->op->init(codec, pool); 
     199        if (status != PJ_SUCCESS) { 
     200            rc = 251; goto on_return; 
     201        } 
     202 
     203        codec_param.dec_fmt.id = raw_fmt_id; 
     204        status = codec->op->open(codec, &codec_param); 
     205        if (status != PJ_SUCCESS) { 
     206            rc = 252; goto on_return; 
     207        } 
     208 
     209#endif /* !BYPASS_CODEC */ 
     210    } 
     211 
     212 
    165213    pjmedia_vid_port_param_default(&vport_param); 
    166214 
     
    171219        rc = 220; goto on_return; 
    172220    } 
     221    pjmedia_format_copy(&vport_param.vidparam.fmt, &codec_param.dec_fmt); 
    173222    vport_param.vidparam.fmt.id = raw_fmt_id; 
    174223    vport_param.vidparam.dir = PJMEDIA_DIR_CAPTURE; 
     
    201250    } 
    202251 
    203     /* Prepare codec */ 
    204     { 
    205         pj_str_t codec_id_st; 
    206         unsigned info_cnt = 1; 
    207         const pjmedia_vid_codec_info *codec_info; 
    208         pj_str_t port_name = {"codec", 5}; 
    209         pj_uint8_t *enc_buf = NULL; 
    210         pj_size_t enc_buf_size = 0; 
    211  
    212  
    213         /* Lookup codec */ 
    214         pj_cstr(&codec_id_st, codec_id); 
    215         status = pjmedia_vid_codec_mgr_find_codecs_by_id(NULL, &codec_id_st,  
    216                                                          &info_cnt,  
    217                                                          &codec_info, NULL); 
    218         if (status != PJ_SUCCESS) { 
    219             rc = 245; goto on_return; 
    220         } 
    221         status = pjmedia_vid_codec_mgr_get_default_param(NULL, codec_info, 
    222                                                          &codec_param); 
    223         if (status != PJ_SUCCESS) { 
    224             rc = 246; goto on_return; 
    225         } 
    226  
    227         pjmedia_format_copy(&codec_param.dec_fmt, &vport_param.vidparam.fmt); 
    228  
    229 #if !BYPASS_CODEC 
    230  
    231         /* Open codec */ 
    232         status = pjmedia_vid_codec_mgr_alloc_codec(NULL, codec_info, 
    233                                                    &codec); 
    234         if (status != PJ_SUCCESS) { 
    235             rc = 250; goto on_return; 
    236         } 
    237  
    238         status = codec->op->init(codec, pool); 
    239         if (status != PJ_SUCCESS) { 
    240             rc = 251; goto on_return; 
    241         } 
    242  
    243         status = codec->op->open(codec, &codec_param); 
    244         if (status != PJ_SUCCESS) { 
    245             rc = 252; goto on_return; 
    246         } 
    247  
    248         /* Alloc encoding buffer */ 
    249         enc_buf_size =  codec_param.dec_fmt.det.vid.size.w * 
    250                         codec_param.dec_fmt.det.vid.size.h * 4 
    251                         + 16; /*< padding, just in case */ 
    252         enc_buf = pj_pool_alloc(pool,enc_buf_size); 
    253  
    254 #endif /* !BYPASS_CODEC */ 
    255  
    256         /* Init codec port */ 
    257         pj_bzero(&codec_port, sizeof(codec_port)); 
    258         status = pjmedia_port_info_init2(&codec_port.info, &port_name, 0x1234, 
    259                                          PJMEDIA_DIR_ENCODING,  
    260                                          &codec_param.dec_fmt); 
    261         if (status != PJ_SUCCESS) { 
    262             rc = 260; goto on_return; 
    263         } 
    264         codec_port_data.codec = codec; 
    265         codec_port_data.dn_port = pjmedia_vid_port_get_passive_port(renderer); 
    266         codec_port_data.enc_buf = enc_buf; 
    267         codec_port_data.enc_buf_size = enc_buf_size; 
    268  
    269         codec_port.put_frame = &codec_put_frame; 
    270         codec_port.port_data.pdata = &codec_port_data; 
    271     } 
    272  
     252    /* Init codec port */ 
     253    pj_bzero(&codec_port, sizeof(codec_port)); 
     254    status = pjmedia_port_info_init2(&codec_port.info, &port_name, 0x1234, 
     255                                     PJMEDIA_DIR_ENCODING,  
     256                                     &codec_param.dec_fmt); 
     257    if (status != PJ_SUCCESS) { 
     258        rc = 260; goto on_return; 
     259    } 
     260 
     261    codec_port_data.codec = codec; 
     262    codec_port_data.dn_port = pjmedia_vid_port_get_passive_port(renderer); 
     263    codec_port_data.enc_buf_size = codec_param.dec_fmt.det.vid.size.w * 
     264                                   codec_param.dec_fmt.det.vid.size.h * 4; 
     265    codec_port_data.enc_buf = pj_pool_alloc(pool,  
     266                                            codec_port_data.enc_buf_size); 
     267 
     268    codec_port.put_frame = &codec_put_frame; 
     269    codec_port.port_data.pdata = &codec_port_data; 
    273270 
    274271    /* Connect capture to codec port */ 
     
    280277    } 
    281278 
    282     PJ_LOG(3, (THIS_FILE, "  starting codec test:  %c%c%c%c<->%s %dx%d", 
     279#if BYPASS_CODEC 
     280    PJ_LOG(3, (THIS_FILE, "  starting loopback test: %c%c%c%c %dx%d", 
     281        ((raw_fmt_id & 0x000000FF) >> 0), 
     282        ((raw_fmt_id & 0x0000FF00) >> 8), 
     283        ((raw_fmt_id & 0x00FF0000) >> 16), 
     284        ((raw_fmt_id & 0xFF000000) >> 24), 
     285        codec_param.dec_fmt.det.vid.size.w, 
     286        codec_param.dec_fmt.det.vid.size.h 
     287        )); 
     288#else 
     289    PJ_LOG(3, (THIS_FILE, "  starting codec test: %c%c%c%c<->%.*s %dx%d", 
    283290        ((codec_param.dec_fmt.id & 0x000000FF) >> 0), 
    284291        ((codec_param.dec_fmt.id & 0x0000FF00) >> 8), 
    285292        ((codec_param.dec_fmt.id & 0x00FF0000) >> 16), 
    286293        ((codec_param.dec_fmt.id & 0xFF000000) >> 24), 
    287         codec_id,  
     294        codec_info->encoding_name.slen, 
     295        codec_info->encoding_name.ptr, 
    288296        codec_param.dec_fmt.det.vid.size.w, 
    289297        codec_param.dec_fmt.det.vid.size.h 
    290298        )); 
     299#endif 
    291300 
    292301    /* Start streaming.. */ 
     
    328337    int rc = 0; 
    329338    pj_status_t status; 
     339    int orig_log_level; 
     340     
     341    orig_log_level = pj_log_get_level(); 
     342    pj_log_set_level(6); 
    330343 
    331344    PJ_LOG(3, (THIS_FILE, "Performing video codec tests..")); 
     
    345358        goto on_return; 
    346359 
    347     rc = encode_decode_test(pool, "mjpeg", 0); 
     360    rc = encode_decode_test(pool, "h263", 0); 
    348361    if (rc != 0) 
    349362        goto on_return; 
     
    353366    pjmedia_vid_subsys_shutdown(); 
    354367    pj_pool_release(pool); 
     368    pj_log_set_level(orig_log_level); 
    355369 
    356370    return rc; 
  • pjproject/branches/projects/2.0-dev/pjmedia/src/test/vid_dev_test.c

    r3401 r3425  
    5858} 
    5959 
    60 static pj_status_t vid_event_cb(pjmedia_vid_stream *stream, 
     60static pj_status_t vid_event_cb(pjmedia_vid_dev_stream *stream, 
    6161                                void *user_data, 
    6262                                pjmedia_vid_event *event) 
  • pjproject/branches/projects/2.0-dev/pjproject-vs8.sln

    r3394 r3425  
    109109Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpjproject", "pjsip-apps\build\libpjproject.vcproj", "{23D7679C-764C-4E02-8B29-BB882CEEEFE2}" 
    110110        ProjectSection(ProjectDependencies) = postProject 
     111                {2BB84911-C1B4-4747-B93D-36AA82CC5031} = {2BB84911-C1B4-4747-B93D-36AA82CC5031} 
     112                {2A3F241E-682C-47E1-9543-DC28708B406A} = {2A3F241E-682C-47E1-9543-DC28708B406A} 
     113                {4BF51C21-5A30-423B-82FE-1ED410E5769D} = {4BF51C21-5A30-423B-82FE-1ED410E5769D} 
     114                {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4} = {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4} 
     115                {4281CA5E-1D48-45D4-A991-2718A454B4BA} = {4281CA5E-1D48-45D4-A991-2718A454B4BA} 
     116                {FE07F272-AE7F-4549-9E9F-EF9B80CB1693} = {FE07F272-AE7F-4549-9E9F-EF9B80CB1693} 
     117                {6794B975-4E84-4F49-B2DC-C31F2224E03E} = {6794B975-4E84-4F49-B2DC-C31F2224E03E} 
     118                {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65} = {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65} 
     119                {3CF9FFA9-8387-4635-9D1B-E7944CBEFEAA} = {3CF9FFA9-8387-4635-9D1B-E7944CBEFEAA} 
     120                {4B059DBA-CD9C-4D0F-BE8C-FFB4EFD498E9} = {4B059DBA-CD9C-4D0F-BE8C-FFB4EFD498E9} 
     121                {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B} = {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B} 
     122                {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0} = {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0} 
     123                {B8719FD5-E8A6-4A36-943C-891D07F5DD21} = {B8719FD5-E8A6-4A36-943C-891D07F5DD21} 
     124                {DA0E03ED-53A7-4050-8A85-90541C5509F8} = {DA0E03ED-53A7-4050-8A85-90541C5509F8} 
     125                {B5FE16F8-3EDB-4110-BD80-B4238CC01E8D} = {B5FE16F8-3EDB-4110-BD80-B4238CC01E8D} 
     126                {E53AA5FF-B737-40AA-BD13-387EFA99023D} = {E53AA5FF-B737-40AA-BD13-387EFA99023D} 
     127                {A1989FF3-9894-40F4-B5A6-6EA364476E45} = {A1989FF3-9894-40F4-B5A6-6EA364476E45} 
    111128                {F0DBAA03-1BA3-4E3B-A2CA-727E3D3AB858} = {F0DBAA03-1BA3-4E3B-A2CA-727E3D3AB858} 
    112                 {A1989FF3-9894-40F4-B5A6-6EA364476E45} = {A1989FF3-9894-40F4-B5A6-6EA364476E45} 
    113                 {E53AA5FF-B737-40AA-BD13-387EFA99023D} = {E53AA5FF-B737-40AA-BD13-387EFA99023D} 
    114                 {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37} = {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37} 
    115                 {B5FE16F8-3EDB-4110-BD80-B4238CC01E8D} = {B5FE16F8-3EDB-4110-BD80-B4238CC01E8D} 
    116                 {DA0E03ED-53A7-4050-8A85-90541C5509F8} = {DA0E03ED-53A7-4050-8A85-90541C5509F8} 
    117                 {B8719FD5-E8A6-4A36-943C-891D07F5DD21} = {B8719FD5-E8A6-4A36-943C-891D07F5DD21} 
    118                 {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0} = {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0} 
    119                 {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B} = {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B} 
    120                 {4B059DBA-CD9C-4D0F-BE8C-FFB4EFD498E9} = {4B059DBA-CD9C-4D0F-BE8C-FFB4EFD498E9} 
    121                 {3CF9FFA9-8387-4635-9D1B-E7944CBEFEAA} = {3CF9FFA9-8387-4635-9D1B-E7944CBEFEAA} 
    122                 {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65} = {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65} 
    123                 {6794B975-4E84-4F49-B2DC-C31F2224E03E} = {6794B975-4E84-4F49-B2DC-C31F2224E03E} 
    124                 {FE07F272-AE7F-4549-9E9F-EF9B80CB1693} = {FE07F272-AE7F-4549-9E9F-EF9B80CB1693} 
    125                 {4281CA5E-1D48-45D4-A991-2718A454B4BA} = {4281CA5E-1D48-45D4-A991-2718A454B4BA} 
    126                 {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4} = {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4} 
    127                 {4BF51C21-5A30-423B-82FE-1ED410E5769D} = {4BF51C21-5A30-423B-82FE-1ED410E5769D} 
    128                 {2A3F241E-682C-47E1-9543-DC28708B406A} = {2A3F241E-682C-47E1-9543-DC28708B406A} 
    129                 {2BB84911-C1B4-4747-B93D-36AA82CC5031} = {2BB84911-C1B4-4747-B93D-36AA82CC5031} 
    130129        EndProjectSection 
    131130EndProject 
  • pjproject/branches/projects/2.0-dev/pjsip-apps/build/Samples-vc.mak

    r3401 r3425  
    8989          $(BINDIR)\strerror.exe \ 
    9090          $(BINDIR)\tonegen.exe \ 
    91           $(BINDIR)\vstreamutil.exe 
     91          $(BINDIR)\vid_streamutil.exe 
    9292 
    9393 
  • pjproject/branches/projects/2.0-dev/pjsip-apps/build/Samples.mak

    r3401 r3425  
    4141           strerror \ 
    4242           tonegen \ 
    43            vstreamutil 
     43           vid_streamutil 
    4444 
    4545EXES := $(foreach file, $(SAMPLES), $(BINDIR)/$(file)$(HOST_EXE)) 
  • pjproject/branches/projects/2.0-dev/pjsip-apps/build/samples.vcproj

    r3401 r3425  
    137137                </Configuration> 
    138138                <Configuration 
     139                        Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" 
     140                        OutputDirectory=".\output\$(ProjectName)-wm6std-$(PlatformName)-vs8-$(ConfigurationName)" 
     141                        IntermediateDirectory="$(OutDir)" 
     142                        ConfigurationType="0" 
     143                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
     144                        UseOfMFC="0" 
     145                        ATLMinimizesCRunTimeLibraryUsage="false" 
     146                        BuildLogFile="" 
     147                        > 
     148                        <Tool 
     149                                Name="VCNMakeTool" 
     150                                BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8" 
     151                                ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8 /a" 
     152                                CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8 clean" 
     153                                Output="All samples" 
     154                                PreprocessorDefinitions="" 
     155                                IncludeSearchPath="" 
     156                                ForcedIncludes="" 
     157                                AssemblySearchPath="" 
     158                                ForcedUsingAssemblies="" 
     159                                CompileAsManaged="" 
     160                        /> 
     161                        <Tool 
     162                                Name="VCCLCompilerTool" 
     163                                ExecutionBucket="7" 
     164                        /> 
     165                        <Tool 
     166                                Name="VCCodeSignTool" 
     167                        /> 
     168                        <DeploymentTool 
     169                                ForceDirty="-1" 
     170                                RemoteDirectory="" 
     171                                RegisterOutput="0" 
     172                                AdditionalFiles="" 
     173                        /> 
     174                        <DebuggerTool 
     175                        /> 
     176                </Configuration> 
     177                <Configuration 
     178                        Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" 
     179                        OutputDirectory=".\output\$(ProjectName)-wm6pro-$(PlatformName)-vs8-$(ConfigurationName)" 
     180                        IntermediateDirectory="$(OutDir)" 
     181                        ConfigurationType="0" 
     182                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
     183                        UseOfMFC="0" 
     184                        ATLMinimizesCRunTimeLibraryUsage="false" 
     185                        BuildLogFile="" 
     186                        > 
     187                        <Tool 
     188                                Name="VCNMakeTool" 
     189                                BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8" 
     190                                ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8 /a" 
     191                                CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8 clean" 
     192                                Output="All samples" 
     193                                PreprocessorDefinitions="" 
     194                                IncludeSearchPath="" 
     195                                ForcedIncludes="" 
     196                                AssemblySearchPath="" 
     197                                ForcedUsingAssemblies="" 
     198                                CompileAsManaged="" 
     199                        /> 
     200                        <Tool 
     201                                Name="VCCLCompilerTool" 
     202                                ExecutionBucket="7" 
     203                        /> 
     204                        <Tool 
     205                                Name="VCCodeSignTool" 
     206                        /> 
     207                        <DeploymentTool 
     208                                ForceDirty="-1" 
     209                                RemoteDirectory="" 
     210                                RegisterOutput="0" 
     211                                AdditionalFiles="" 
     212                        /> 
     213                        <DebuggerTool 
     214                        /> 
     215                </Configuration> 
     216                <Configuration 
     217                        Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" 
     218                        OutputDirectory=".\output\$(ProjectName)-wm5ppc-$(PlatformName)-vs8-$(ConfigurationName)" 
     219                        IntermediateDirectory="$(OutDir)" 
     220                        ConfigurationType="0" 
     221                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
     222                        UseOfMFC="0" 
     223                        ATLMinimizesCRunTimeLibraryUsage="false" 
     224                        BuildLogFile="" 
     225                        > 
     226                        <Tool 
     227                                Name="VCNMakeTool" 
     228                                BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8" 
     229                                ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8 /a" 
     230                                CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8 clean" 
     231                                Output="All samples" 
     232                                PreprocessorDefinitions="" 
     233                                IncludeSearchPath="" 
     234                                ForcedIncludes="" 
     235                                AssemblySearchPath="" 
     236                                ForcedUsingAssemblies="" 
     237                                CompileAsManaged="" 
     238                        /> 
     239                        <Tool 
     240                                Name="VCCLCompilerTool" 
     241                                ExecutionBucket="7" 
     242                        /> 
     243                        <Tool 
     244                                Name="VCCodeSignTool" 
     245                        /> 
     246                        <DeploymentTool 
     247                                ForceDirty="-1" 
     248                                RemoteDirectory="" 
     249                                RegisterOutput="0" 
     250                                AdditionalFiles="" 
     251                        /> 
     252                        <DebuggerTool 
     253                        /> 
     254                </Configuration> 
     255                <Configuration 
     256                        Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" 
     257                        OutputDirectory=".\output\$(ProjectName)-wm5sp-$(PlatformName)-vs8-$(ConfigurationName)" 
     258                        IntermediateDirectory="$(OutDir)" 
     259                        ConfigurationType="0" 
     260                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
     261                        UseOfMFC="0" 
     262                        ATLMinimizesCRunTimeLibraryUsage="false" 
     263                        BuildLogFile="" 
     264                        > 
     265                        <Tool 
     266                                Name="VCNMakeTool" 
     267                                BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8" 
     268                                ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8 /a" 
     269                                CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8 clean" 
     270                                Output="All samples" 
     271                                PreprocessorDefinitions="" 
     272                                IncludeSearchPath="" 
     273                                ForcedIncludes="" 
     274                                AssemblySearchPath="" 
     275                                ForcedUsingAssemblies="" 
     276                                CompileAsManaged="" 
     277                        /> 
     278                        <Tool 
     279                                Name="VCCLCompilerTool" 
     280                                ExecutionBucket="7" 
     281                        /> 
     282                        <Tool 
     283                                Name="VCCodeSignTool" 
     284                        /> 
     285                        <DeploymentTool 
     286                                ForceDirty="-1" 
     287                                RemoteDirectory="" 
     288                                RegisterOutput="0" 
     289                                AdditionalFiles="" 
     290                        /> 
     291                        <DebuggerTool 
     292                        /> 
     293                </Configuration> 
     294                <Configuration 
    139295                        Name="Debug|Win32" 
    140296                        OutputDirectory=".\output\$(ProjectName)-i386-$(PlatformName)-vs8-$(ConfigurationName)" 
     
    239395                </Configuration> 
    240396                <Configuration 
     397                        Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" 
     398                        OutputDirectory=".\output\$(ProjectName)-wm6std-$(PlatformName)-vs8-$(ConfigurationName)" 
     399                        IntermediateDirectory="$(OutDir)" 
     400                        ConfigurationType="0" 
     401                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
     402                        UseOfMFC="0" 
     403                        ATLMinimizesCRunTimeLibraryUsage="false" 
     404                        BuildLogFile="" 
     405                        > 
     406                        <Tool 
     407                                Name="VCNMakeTool" 
     408                                BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8" 
     409                                ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8 /a" 
     410                                CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8 clean" 
     411                                Output="All samples" 
     412                                PreprocessorDefinitions="" 
     413                                IncludeSearchPath="" 
     414                                ForcedIncludes="" 
     415                                AssemblySearchPath="" 
     416                                ForcedUsingAssemblies="" 
     417                                CompileAsManaged="" 
     418                        /> 
     419                        <Tool 
     420                                Name="VCCLCompilerTool" 
     421                                ExecutionBucket="7" 
     422                        /> 
     423                        <Tool 
     424                                Name="VCCodeSignTool" 
     425                        /> 
     426                        <DeploymentTool 
     427                                ForceDirty="-1" 
     428                                RemoteDirectory="" 
     429                                RegisterOutput="0" 
     430                                AdditionalFiles="" 
     431                        /> 
     432                        <DebuggerTool 
     433                        /> 
     434                </Configuration> 
     435                <Configuration 
     436                        Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" 
     437                        OutputDirectory=".\output\$(ProjectName)-wm6pro-$(PlatformName)-vs8-$(ConfigurationName)" 
     438                        IntermediateDirectory="$(OutDir)" 
     439                        ConfigurationType="0" 
     440                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
     441                        UseOfMFC="0" 
     442                        ATLMinimizesCRunTimeLibraryUsage="false" 
     443                        BuildLogFile="" 
     444                        > 
     445                        <Tool 
     446                                Name="VCNMakeTool" 
     447                                BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8" 
     448                                ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8 /a" 
     449                                CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8 clean" 
     450                                Output="All samples" 
     451                                PreprocessorDefinitions="" 
     452                                IncludeSearchPath="" 
     453                                ForcedIncludes="" 
     454                                AssemblySearchPath="" 
     455                                ForcedUsingAssemblies="" 
     456                                CompileAsManaged="" 
     457                        /> 
     458                        <Tool 
     459                                Name="VCCLCompilerTool" 
     460                                ExecutionBucket="7" 
     461                        /> 
     462                        <Tool 
     463                                Name="VCCodeSignTool" 
     464                        /> 
     465                        <DeploymentTool 
     466                                ForceDirty="-1" 
     467                                RemoteDirectory="" 
     468                                RegisterOutput="0" 
     469                                AdditionalFiles="" 
     470                        /> 
     471                        <DebuggerTool 
     472                        /> 
     473                </Configuration> 
     474                <Configuration 
     475                        Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" 
     476                        OutputDirectory=".\output\$(ProjectName)-wm5ppc-$(PlatformName)-vs8-$(ConfigurationName)" 
     477                        IntermediateDirectory="$(OutDir)" 
     478                        ConfigurationType="0" 
     479                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
     480                        UseOfMFC="0" 
     481                        ATLMinimizesCRunTimeLibraryUsage="false" 
     482                        BuildLogFile="" 
     483                        > 
     484                        <Tool 
     485                                Name="VCNMakeTool" 
     486                                BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8" 
     487                                ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8 /a" 
     488                                CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8 clean" 
     489                                Output="All samples" 
     490                                PreprocessorDefinitions="" 
     491                                IncludeSearchPath="" 
     492                                ForcedIncludes="" 
     493                                AssemblySearchPath="" 
     494                                ForcedUsingAssemblies="" 
     495                                CompileAsManaged="" 
     496                        /> 
     497                        <Tool 
     498                                Name="VCCLCompilerTool" 
     499                                ExecutionBucket="7" 
     500                        /> 
     501                        <Tool 
     502                                Name="VCCodeSignTool" 
     503                        /> 
     504                        <DeploymentTool 
     505                                ForceDirty="-1" 
     506                                RemoteDirectory="" 
     507                                RegisterOutput="0" 
     508                                AdditionalFiles="" 
     509                        /> 
     510                        <DebuggerTool 
     511                        /> 
     512                </Configuration> 
     513                <Configuration 
     514                        Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" 
     515                        OutputDirectory=".\output\$(ProjectName)-wm5sp-$(PlatformName)-vs8-$(ConfigurationName)" 
     516                        IntermediateDirectory="$(OutDir)" 
     517                        ConfigurationType="0" 
     518                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
     519                        UseOfMFC="0" 
     520                        ATLMinimizesCRunTimeLibraryUsage="false" 
     521                        BuildLogFile="" 
     522                        > 
     523                        <Tool 
     524                                Name="VCNMakeTool" 
     525                                BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8" 
     526                                ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8 /a" 
     527                                CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8 clean" 
     528                                Output="All samples" 
     529                                PreprocessorDefinitions="" 
     530                                IncludeSearchPath="" 
     531                                ForcedIncludes="" 
     532                                AssemblySearchPath="" 
     533                                ForcedUsingAssemblies="" 
     534                                CompileAsManaged="" 
     535                        /> 
     536                        <Tool 
     537                                Name="VCCLCompilerTool" 
     538                                ExecutionBucket="7" 
     539                        /> 
     540                        <Tool 
     541                                Name="VCCodeSignTool" 
     542                        /> 
     543                        <DeploymentTool 
     544                                ForceDirty="-1" 
     545                                RemoteDirectory="" 
     546                                RegisterOutput="0" 
     547                                AdditionalFiles="" 
     548                        /> 
     549                        <DebuggerTool 
     550                        /> 
     551                </Configuration> 
     552                <Configuration 
    241553                        Name="Debug-Static|Win32" 
    242554                        OutputDirectory=".\output\$(ProjectName)-i386-$(PlatformName)-vs8-$(ConfigurationName)" 
     
    341653                </Configuration> 
    342654                <Configuration 
     655                        Name="Debug-Static|Windows Mobile 6 Standard SDK (ARMV4I)" 
     656                        OutputDirectory=".\output\$(ProjectName)-wm6std-$(PlatformName)-vs8-$(ConfigurationName)" 
     657                        IntermediateDirectory="$(OutDir)" 
     658                        ConfigurationType="0" 
     659                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
     660                        UseOfMFC="0" 
     661                        ATLMinimizesCRunTimeLibraryUsage="false" 
     662                        BuildLogFile="" 
     663                        > 
     664                        <Tool 
     665                                Name="VCNMakeTool" 
     666                                BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8" 
     667                                ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8 /a" 
     668                                CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8 clean" 
     669                                Output="All samples" 
     670                                PreprocessorDefinitions="" 
     671                                IncludeSearchPath="" 
     672                                ForcedIncludes="" 
     673                                AssemblySearchPath="" 
     674                                ForcedUsingAssemblies="" 
     675                                CompileAsManaged="" 
     676                        /> 
     677                        <Tool 
     678                                Name="VCCLCompilerTool" 
     679                                ExecutionBucket="7" 
     680                        /> 
     681                        <Tool 
     682                                Name="VCCodeSignTool" 
     683                        /> 
     684                        <DeploymentTool 
     685                                ForceDirty="-1" 
     686                                RemoteDirectory="" 
     687                                RegisterOutput="0" 
     688                                AdditionalFiles="" 
     689                        /> 
     690                        <DebuggerTool 
     691                        /> 
     692                </Configuration> 
     693                <Configuration 
     694                        Name="Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)" 
     695                        OutputDirectory=".\output\$(ProjectName)-wm6pro-$(PlatformName)-vs8-$(ConfigurationName)" 
     696                        IntermediateDirectory="$(OutDir)" 
     697                        ConfigurationType="0" 
     698                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
     699                        UseOfMFC="0" 
     700                        ATLMinimizesCRunTimeLibraryUsage="false" 
     701                        BuildLogFile="" 
     702                        > 
     703                        <Tool 
     704                                Name="VCNMakeTool" 
     705                                BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8" 
     706                                ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8 /a" 
     707                                CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8 clean" 
     708                                Output="All samples" 
     709                                PreprocessorDefinitions="" 
     710                                IncludeSearchPath="" 
     711                                ForcedIncludes="" 
     712                                AssemblySearchPath="" 
     713                                ForcedUsingAssemblies="" 
     714                                CompileAsManaged="" 
     715                        /> 
     716                        <Tool 
     717                                Name="VCCLCompilerTool" 
     718                                ExecutionBucket="7" 
     719                        /> 
     720                        <Tool 
     721                                Name="VCCodeSignTool" 
     722                        /> 
     723                        <DeploymentTool 
     724                                ForceDirty="-1" 
     725                                RemoteDirectory="" 
     726                                RegisterOutput="0" 
     727                                AdditionalFiles="" 
     728                        /> 
     729                        <DebuggerTool 
     730                        /> 
     731                </Configuration> 
     732                <Configuration 
     733                        Name="Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" 
     734                        OutputDirectory=".\output\$(ProjectName)-wm5ppc-$(PlatformName)-vs8-$(ConfigurationName)" 
     735                        IntermediateDirectory="$(OutDir)" 
     736                        ConfigurationType="0" 
     737                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
     738                        UseOfMFC="0" 
     739                        ATLMinimizesCRunTimeLibraryUsage="false" 
     740                        BuildLogFile="" 
     741                        > 
     742                        <Tool 
     743                                Name="VCNMakeTool" 
     744                                BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8" 
     745                                ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8 /a" 
     746                                CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8 clean" 
     747                                Output="All samples" 
     748                                PreprocessorDefinitions="" 
     749                                IncludeSearchPath="" 
     750                                ForcedIncludes="" 
     751                                AssemblySearchPath="" 
     752                                ForcedUsingAssemblies="" 
     753                                CompileAsManaged="" 
     754                        /> 
     755                        <Tool 
     756                                Name="VCCLCompilerTool" 
     757                                ExecutionBucket="7" 
     758                        /> 
     759                        <Tool 
     760                                Name="VCCodeSignTool" 
     761                        /> 
     762                        <DeploymentTool 
     763                                ForceDirty="-1" 
     764                                RemoteDirectory="" 
     765                                RegisterOutput="0" 
     766                                AdditionalFiles="" 
     767                        /> 
     768                        <DebuggerTool 
     769                        /> 
     770                </Configuration> 
     771                <Configuration 
     772                        Name="Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" 
     773                        OutputDirectory=".\output\$(ProjectName)-wm5sp-$(PlatformName)-vs8-$(ConfigurationName)" 
     774                        IntermediateDirectory="$(OutDir)" 
     775                        ConfigurationType="0" 
     776                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
     777                        UseOfMFC="0" 
     778                        ATLMinimizesCRunTimeLibraryUsage="false" 
     779                        BuildLogFile="" 
     780                        > 
     781                        <Tool 
     782                                Name="VCNMakeTool" 
     783                                BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8" 
     784                                ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8 /a" 
     785                                CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8 clean" 
     786                                Output="All samples" 
     787                                PreprocessorDefinitions="" 
     788                                IncludeSearchPath="" 
     789                                ForcedIncludes="" 
     790                                AssemblySearchPath="" 
     791                                ForcedUsingAssemblies="" 
     792                                CompileAsManaged="" 
     793                        /> 
     794                        <Tool 
     795                                Name="VCCLCompilerTool" 
     796                                ExecutionBucket="7" 
     797                        /> 
     798                        <Tool 
     799                                Name="VCCodeSignTool" 
     800                        /> 
     801                        <DeploymentTool 
     802                                ForceDirty="-1" 
     803                                RemoteDirectory="" 
     804                                RegisterOutput="0" 
     805                                AdditionalFiles="" 
     806                        /> 
     807                        <DebuggerTool 
     808                        /> 
     809                </Configuration> 
     810                <Configuration 
    343811                        Name="Release-Dynamic|Win32" 
    344812                        OutputDirectory=".\output\$(ProjectName)-i386-$(PlatformName)-vs8-$(ConfigurationName)" 
     
    443911                </Configuration> 
    444912                <Configuration 
     913                        Name="Release-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)" 
     914                        OutputDirectory=".\output\$(ProjectName)-wm6std-$(PlatformName)-vs8-$(ConfigurationName)" 
     915                        IntermediateDirectory="$(OutDir)" 
     916                        ConfigurationType="0" 
     917                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
     918                        UseOfMFC="0" 
     919                        ATLMinimizesCRunTimeLibraryUsage="false" 
     920                        BuildLogFile="" 
     921                        > 
     922                        <Tool 
     923                                Name="VCNMakeTool" 
     924                                BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8" 
     925                                ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8 /a" 
     926                                CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8 clean" 
     927                                Output="All samples" 
     928                                PreprocessorDefinitions="" 
     929                                IncludeSearchPath="" 
     930                                ForcedIncludes="" 
     931                                AssemblySearchPath="" 
     932                                ForcedUsingAssemblies="" 
     933                                CompileAsManaged="" 
     934                        /> 
     935                        <Tool 
     936                                Name="VCCLCompilerTool" 
     937                                ExecutionBucket="7" 
     938                        /> 
     939                        <Tool 
     940                                Name="VCCodeSignTool" 
     941                        /> 
     942                        <DeploymentTool 
     943                                ForceDirty="-1" 
     944                                RemoteDirectory="" 
     945                                RegisterOutput="0" 
     946                                AdditionalFiles="" 
     947                        /> 
     948                        <DebuggerTool 
     949                        /> 
     950                </Configuration> 
     951                <Configuration 
     952                        Name="Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)" 
     953                        OutputDirectory=".\output\$(ProjectName)-wm6pro-$(PlatformName)-vs8-$(ConfigurationName)" 
     954                        IntermediateDirectory="$(OutDir)" 
     955                        ConfigurationType="0" 
     956                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
     957                        UseOfMFC="0" 
     958                        ATLMinimizesCRunTimeLibraryUsage="false" 
     959                        BuildLogFile="" 
     960                        > 
     961                        <Tool 
     962                                Name="VCNMakeTool" 
     963                                BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8" 
     964                                ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8 /a" 
     965                                CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8 clean" 
     966                                Output="All samples" 
     967                                PreprocessorDefinitions="" 
     968                                IncludeSearchPath="" 
     969                                ForcedIncludes="" 
     970                                AssemblySearchPath="" 
     971                                ForcedUsingAssemblies="" 
     972                                CompileAsManaged="" 
     973                        /> 
     974                        <Tool 
     975                                Name="VCCLCompilerTool" 
     976                                ExecutionBucket="7" 
     977                        /> 
     978                        <Tool 
     979                                Name="VCCodeSignTool" 
     980                        /> 
     981                        <DeploymentTool 
     982                                ForceDirty="-1" 
     983                                RemoteDirectory="" 
     984                                RegisterOutput="0" 
     985                                AdditionalFiles="" 
     986                        /> 
     987                        <DebuggerTool 
     988                        /> 
     989                </Configuration> 
     990                <Configuration 
     991                        Name="Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" 
     992                        OutputDirectory=".\output\$(ProjectName)-wm5ppc-$(PlatformName)-vs8-$(ConfigurationName)" 
     993                        IntermediateDirectory="$(OutDir)" 
     994                        ConfigurationType="0" 
     995                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
     996                        UseOfMFC="0" 
     997                        ATLMinimizesCRunTimeLibraryUsage="false" 
     998                        BuildLogFile="" 
     999                        > 
     1000                        <Tool 
     1001                                Name="VCNMakeTool" 
     1002                                BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8" 
     1003                                ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8 /a" 
     1004                                CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8 clean" 
     1005                                Output="All samples" 
     1006                                PreprocessorDefinitions="" 
     1007                                IncludeSearchPath="" 
     1008                                ForcedIncludes="" 
     1009                                AssemblySearchPath="" 
     1010                                ForcedUsingAssemblies="" 
     1011                                CompileAsManaged="" 
     1012                        /> 
     1013                        <Tool 
     1014                                Name="VCCLCompilerTool" 
     1015                                ExecutionBucket="7" 
     1016                        /> 
     1017                        <Tool 
     1018                                Name="VCCodeSignTool" 
     1019                        /> 
     1020                        <DeploymentTool 
     1021                                ForceDirty="-1" 
     1022                                RemoteDirectory="" 
     1023                                RegisterOutput="0" 
     1024                                AdditionalFiles="" 
     1025                        /> 
     1026                        <DebuggerTool 
     1027                        /> 
     1028                </Configuration> 
     1029                <Configuration 
     1030                        Name="Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" 
     1031                        OutputDirectory=".\output\$(ProjectName)-wm5sp-$(PlatformName)-vs8-$(ConfigurationName)" 
     1032                        IntermediateDirectory="$(OutDir)" 
     1033                        ConfigurationType="0" 
     1034                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
     1035                        UseOfMFC="0" 
     1036                        ATLMinimizesCRunTimeLibraryUsage="false" 
     1037                        BuildLogFile="" 
     1038                        > 
     1039                        <Tool 
     1040                                Name="VCNMakeTool" 
     1041                                BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8" 
     1042                                ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8 /a" 
     1043                                CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8 clean" 
     1044                                Output="All samples" 
     1045                                PreprocessorDefinitions="" 
     1046                                IncludeSearchPath="" 
     1047                                ForcedIncludes="" 
     1048                                AssemblySearchPath="" 
     1049                                ForcedUsingAssemblies="" 
     1050                                CompileAsManaged="" 
     1051                        /> 
     1052                        <Tool 
     1053                                Name="VCCLCompilerTool" 
     1054                                ExecutionBucket="7" 
     1055                        /> 
     1056                        <Tool 
     1057                                Name="VCCodeSignTool" 
     1058                        /> 
     1059                        <DeploymentTool 
     1060                                ForceDirty="-1" 
     1061                                RemoteDirectory="" 
     1062                                RegisterOutput="0" 
     1063                                AdditionalFiles="" 
     1064                        /> 
     1065                        <DebuggerTool 
     1066                        /> 
     1067                </Configuration> 
     1068                <Configuration 
    4451069                        Name="Debug-Dynamic|Win32" 
    4461070                        OutputDirectory=".\output\$(ProjectName)-i386-$(PlatformName)-vs8-$(ConfigurationName)" 
     
    5451169                </Configuration> 
    5461170                <Configuration 
     1171                        Name="Debug-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)" 
     1172                        OutputDirectory=".\output\$(ProjectName)-wm6std-$(PlatformName)-vs8-$(ConfigurationName)" 
     1173                        IntermediateDirectory="$(OutDir)" 
     1174                        ConfigurationType="0" 
     1175                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
     1176                        UseOfMFC="0" 
     1177                        ATLMinimizesCRunTimeLibraryUsage="false" 
     1178                        BuildLogFile="" 
     1179                        > 
     1180                        <Tool 
     1181                                Name="VCNMakeTool" 
     1182                                BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8" 
     1183                                ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8 /a" 
     1184                                CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8 clean" 
     1185                                Output="All samples" 
     1186                                PreprocessorDefinitions="" 
     1187                                IncludeSearchPath="" 
     1188                                ForcedIncludes="" 
     1189                                AssemblySearchPath="" 
     1190                                ForcedUsingAssemblies="" 
     1191                                CompileAsManaged="" 
     1192                        /> 
     1193                        <Tool 
     1194                                Name="VCCLCompilerTool" 
     1195                                ExecutionBucket="7" 
     1196                        /> 
     1197                        <Tool 
     1198                                Name="VCCodeSignTool" 
     1199                        /> 
     1200                        <DeploymentTool 
     1201                                ForceDirty="-1" 
     1202                                RemoteDirectory="" 
     1203                                RegisterOutput="0" 
     1204                                AdditionalFiles="" 
     1205                        /> 
     1206                        <DebuggerTool 
     1207                        /> 
     1208                </Configuration> 
     1209                <Configuration 
     1210                        Name="Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)" 
     1211                        OutputDirectory=".\output\$(ProjectName)-wm6pro-$(PlatformName)-vs8-$(ConfigurationName)" 
     1212                        IntermediateDirectory="$(OutDir)" 
     1213                        ConfigurationType="0" 
     1214                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
     1215                        UseOfMFC="0" 
     1216                        ATLMinimizesCRunTimeLibraryUsage="false" 
     1217                        BuildLogFile="" 
     1218                        > 
     1219                        <Tool 
     1220                                Name="VCNMakeTool" 
     1221                                BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8" 
     1222                                ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8 /a" 
     1223                                CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8 clean" 
     1224                                Output="All samples" 
     1225                                PreprocessorDefinitions="" 
     1226                                IncludeSearchPath="" 
     1227                                ForcedIncludes="" 
     1228                                AssemblySearchPath="" 
     1229                                ForcedUsingAssemblies="" 
     1230                                CompileAsManaged="" 
     1231                        /> 
     1232                        <Tool 
     1233                                Name="VCCLCompilerTool" 
     1234                                ExecutionBucket="7" 
     1235                        /> 
     1236                        <Tool 
     1237                                Name="VCCodeSignTool" 
     1238                        /> 
     1239                        <DeploymentTool 
     1240                                ForceDirty="-1" 
     1241                                RemoteDirectory="" 
     1242                                RegisterOutput="0" 
     1243                                AdditionalFiles="" 
     1244                        /> 
     1245                        <DebuggerTool 
     1246                        /> 
     1247                </Configuration> 
     1248                <Configuration 
     1249                        Name="Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" 
     1250                        OutputDirectory=".\output\$(ProjectName)-wm5ppc-$(PlatformName)-vs8-$(ConfigurationName)" 
     1251                        IntermediateDirectory="$(OutDir)" 
     1252                        ConfigurationType="0" 
     1253                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
     1254                        UseOfMFC="0" 
     1255                        ATLMinimizesCRunTimeLibraryUsage="false" 
     1256                        BuildLogFile="" 
     1257                        > 
     1258                        <Tool 
     1259                                Name="VCNMakeTool" 
     1260                                BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8" 
     1261                                ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8 /a" 
     1262                                CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8 clean" 
     1263                                Output="All samples" 
     1264                                PreprocessorDefinitions="" 
     1265                                IncludeSearchPath="" 
     1266                                ForcedIncludes="" 
     1267                                AssemblySearchPath="" 
     1268                                ForcedUsingAssemblies="" 
     1269                                CompileAsManaged="" 
     1270                        /> 
     1271                        <Tool 
     1272                                Name="VCCLCompilerTool" 
     1273                                ExecutionBucket="7" 
     1274                        /> 
     1275                        <Tool 
     1276                                Name="VCCodeSignTool" 
     1277                        /> 
     1278                        <DeploymentTool 
     1279                                ForceDirty="-1" 
     1280                                RemoteDirectory="" 
     1281                                RegisterOutput="0" 
     1282                                AdditionalFiles="" 
     1283                        /> 
     1284                        <DebuggerTool 
     1285                        /> 
     1286                </Configuration> 
     1287                <Configuration 
     1288                        Name="Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" 
     1289                        OutputDirectory=".\output\$(ProjectName)-wm5sp-$(PlatformName)-vs8-$(ConfigurationName)" 
     1290                        IntermediateDirectory="$(OutDir)" 
     1291                        ConfigurationType="0" 
     1292                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
     1293                        UseOfMFC="0" 
     1294                        ATLMinimizesCRunTimeLibraryUsage="false" 
     1295                        BuildLogFile="" 
     1296                        > 
     1297                        <Tool 
     1298                                Name="VCNMakeTool" 
     1299                                BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8" 
     1300                                ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8 /a" 
     1301                                CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8 clean" 
     1302                                Output="All samples" 
     1303                                PreprocessorDefinitions="" 
     1304                                IncludeSearchPath="" 
     1305                                ForcedIncludes="" 
     1306                                AssemblySearchPath="" 
     1307                                ForcedUsingAssemblies="" 
     1308                                CompileAsManaged="" 
     1309                        /> 
     1310                        <Tool 
     1311                                Name="VCCLCompilerTool" 
     1312                                ExecutionBucket="7" 
     1313                        /> 
     1314                        <Tool 
     1315                                Name="VCCodeSignTool" 
     1316                        /> 
     1317                        <DeploymentTool 
     1318                                ForceDirty="-1" 
     1319                                RemoteDirectory="" 
     1320                                RegisterOutput="0" 
     1321                                AdditionalFiles="" 
     1322                        /> 
     1323                        <DebuggerTool 
     1324                        /> 
     1325                </Configuration> 
     1326                <Configuration 
    5471327                        Name="Release-Static|Win32" 
    5481328                        OutputDirectory=".\output\$(ProjectName)-i386-$(PlatformName)-vs8-$(ConfigurationName)" 
     
    6221402                                ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-static VC_VER=8 /a" 
    6231403                                CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-static VC_VER=8 clean" 
    624                                 Output="All samples" 
    625                                 PreprocessorDefinitions="" 
    626                                 IncludeSearchPath="" 
    627                                 ForcedIncludes="" 
    628                                 AssemblySearchPath="" 
    629                                 ForcedUsingAssemblies="" 
    630                                 CompileAsManaged="" 
    631                         /> 
    632                         <Tool 
    633                                 Name="VCCLCompilerTool" 
    634                                 ExecutionBucket="7" 
    635                         /> 
    636                         <Tool 
    637                                 Name="VCCodeSignTool" 
    638                         /> 
    639                         <DeploymentTool 
    640                                 ForceDirty="-1" 
    641                                 RemoteDirectory="" 
    642                                 RegisterOutput="0" 
    643                                 AdditionalFiles="" 
    644                         /> 
    645                         <DebuggerTool 
    646                         /> 
    647                 </Configuration> 
    648                 <Configuration 
    649                         Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" 
    650                         OutputDirectory=".\output\$(ProjectName)-wm6std-$(PlatformName)-vs8-$(ConfigurationName)" 
    651                         IntermediateDirectory="$(OutDir)" 
    652                         ConfigurationType="0" 
    653                         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
    654                         UseOfMFC="0" 
    655                         ATLMinimizesCRunTimeLibraryUsage="false" 
    656                         BuildLogFile="" 
    657                         > 
    658                         <Tool 
    659                                 Name="VCNMakeTool" 
    660                                 BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8" 
    661                                 ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8 /a" 
    662                                 CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8 clean" 
    663                                 Output="All samples" 
    664                                 PreprocessorDefinitions="" 
    665                                 IncludeSearchPath="" 
    666                                 ForcedIncludes="" 
    667                                 AssemblySearchPath="" 
    668                                 ForcedUsingAssemblies="" 
    669                                 CompileAsManaged="" 
    670                         /> 
    671                         <Tool 
    672                                 Name="VCCLCompilerTool" 
    673                                 ExecutionBucket="7" 
    674                         /> 
    675                         <Tool 
    676                                 Name="VCCodeSignTool" 
    677                         /> 
    678                         <DeploymentTool 
    679                                 ForceDirty="-1" 
    680                                 RemoteDirectory="" 
    681                                 RegisterOutput="0" 
    682                                 AdditionalFiles="" 
    683                         /> 
    684                         <DebuggerTool 
    685                         /> 
    686                 </Configuration> 
    687                 <Configuration 
    688                         Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" 
    689                         OutputDirectory=".\output\$(ProjectName)-wm6pro-$(PlatformName)-vs8-$(ConfigurationName)" 
    690                         IntermediateDirectory="$(OutDir)" 
    691                         ConfigurationType="0" 
    692                         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
    693                         UseOfMFC="0" 
    694                         ATLMinimizesCRunTimeLibraryUsage="false" 
    695                         BuildLogFile="" 
    696                         > 
    697                         <Tool 
    698                                 Name="VCNMakeTool" 
    699                                 BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8" 
    700                                 ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8 /a" 
    701                                 CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8 clean" 
    702                                 Output="All samples" 
    703                                 PreprocessorDefinitions="" 
    704                                 IncludeSearchPath="" 
    705                                 ForcedIncludes="" 
    706                                 AssemblySearchPath="" 
    707                                 ForcedUsingAssemblies="" 
    708                                 CompileAsManaged="" 
    709                         /> 
    710                         <Tool 
    711                                 Name="VCCLCompilerTool" 
    712                                 ExecutionBucket="7" 
    713                         /> 
    714                         <Tool 
    715                                 Name="VCCodeSignTool" 
    716                         /> 
    717                         <DeploymentTool 
    718                                 ForceDirty="-1" 
    719                                 RemoteDirectory="" 
    720                                 RegisterOutput="0" 
    721                                 AdditionalFiles="" 
    722                         /> 
    723                         <DebuggerTool 
    724                         /> 
    725                 </Configuration> 
    726                 <Configuration 
    727                         Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" 
    728                         OutputDirectory=".\output\$(ProjectName)-wm5ppc-$(PlatformName)-vs8-$(ConfigurationName)" 
    729                         IntermediateDirectory="$(OutDir)" 
    730                         ConfigurationType="0" 
    731                         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
    732                         UseOfMFC="0" 
    733                         ATLMinimizesCRunTimeLibraryUsage="false" 
    734                         BuildLogFile="" 
    735                         > 
    736                         <Tool 
    737                                 Name="VCNMakeTool" 
    738                                 BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8" 
    739                                 ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8 /a" 
    740                                 CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8 clean" 
    741                                 Output="All samples" 
    742                                 PreprocessorDefinitions="" 
    743                                 IncludeSearchPath="" 
    744                                 ForcedIncludes="" 
    745                                 AssemblySearchPath="" 
    746                                 ForcedUsingAssemblies="" 
    747                                 CompileAsManaged="" 
    748                         /> 
    749                         <Tool 
    750                                 Name="VCCLCompilerTool" 
    751                                 ExecutionBucket="7" 
    752                         /> 
    753                         <Tool 
    754                                 Name="VCCodeSignTool" 
    755                         /> 
    756                         <DeploymentTool 
    757                                 ForceDirty="-1" 
    758                                 RemoteDirectory="" 
    759                                 RegisterOutput="0" 
    760                                 AdditionalFiles="" 
    761                         /> 
    762                         <DebuggerTool 
    763                         /> 
    764                 </Configuration> 
    765                 <Configuration 
    766                         Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" 
    767                         OutputDirectory=".\output\$(ProjectName)-wm5sp-$(PlatformName)-vs8-$(ConfigurationName)" 
    768                         IntermediateDirectory="$(OutDir)" 
    769                         ConfigurationType="0" 
    770                         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
    771                         UseOfMFC="0" 
    772                         ATLMinimizesCRunTimeLibraryUsage="false" 
    773                         BuildLogFile="" 
    774                         > 
    775                         <Tool 
    776                                 Name="VCNMakeTool" 
    777                                 BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8" 
    778                                 ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8 /a" 
    779                                 CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release VC_VER=8 clean" 
    780                                 Output="All samples" 
    781                                 PreprocessorDefinitions="" 
    782                                 IncludeSearchPath="" 
    783                                 ForcedIncludes="" 
    784                                 AssemblySearchPath="" 
    785                                 ForcedUsingAssemblies="" 
    786                                 CompileAsManaged="" 
    787                         /> 
    788                         <Tool 
    789                                 Name="VCCLCompilerTool" 
    790                                 ExecutionBucket="7" 
    791                         /> 
    792                         <Tool 
    793                                 Name="VCCodeSignTool" 
    794                         /> 
    795                         <DeploymentTool 
    796                                 ForceDirty="-1" 
    797                                 RemoteDirectory="" 
    798                                 RegisterOutput="0" 
    799                                 AdditionalFiles="" 
    800                         /> 
    801                         <DebuggerTool 
    802                         /> 
    803                 </Configuration> 
    804                 <Configuration 
    805                         Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" 
    806                         OutputDirectory=".\output\$(ProjectName)-wm6std-$(PlatformName)-vs8-$(ConfigurationName)" 
    807                         IntermediateDirectory="$(OutDir)" 
    808                         ConfigurationType="0" 
    809                         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
    810                         UseOfMFC="0" 
    811                         ATLMinimizesCRunTimeLibraryUsage="false" 
    812                         BuildLogFile="" 
    813                         > 
    814                         <Tool 
    815                                 Name="VCNMakeTool" 
    816                                 BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8" 
    817                                 ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8 /a" 
    818                                 CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8 clean" 
    819                                 Output="All samples" 
    820                                 PreprocessorDefinitions="" 
    821                                 IncludeSearchPath="" 
    822                                 ForcedIncludes="" 
    823                                 AssemblySearchPath="" 
    824                                 ForcedUsingAssemblies="" 
    825                                 CompileAsManaged="" 
    826                         /> 
    827                         <Tool 
    828                                 Name="VCCLCompilerTool" 
    829                                 ExecutionBucket="7" 
    830                         /> 
    831                         <Tool 
    832                                 Name="VCCodeSignTool" 
    833                         /> 
    834                         <DeploymentTool 
    835                                 ForceDirty="-1" 
    836                                 RemoteDirectory="" 
    837                                 RegisterOutput="0" 
    838                                 AdditionalFiles="" 
    839                         /> 
    840                         <DebuggerTool 
    841                         /> 
    842                 </Configuration> 
    843                 <Configuration 
    844                         Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" 
    845                         OutputDirectory=".\output\$(ProjectName)-wm6pro-$(PlatformName)-vs8-$(ConfigurationName)" 
    846                         IntermediateDirectory="$(OutDir)" 
    847                         ConfigurationType="0" 
    848                         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
    849                         UseOfMFC="0" 
    850                         ATLMinimizesCRunTimeLibraryUsage="false" 
    851                         BuildLogFile="" 
    852                         > 
    853                         <Tool 
    854                                 Name="VCNMakeTool" 
    855                                 BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8" 
    856                                 ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8 /a" 
    857                                 CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8 clean" 
    858                                 Output="All samples" 
    859                                 PreprocessorDefinitions="" 
    860                                 IncludeSearchPath="" 
    861                                 ForcedIncludes="" 
    862                                 AssemblySearchPath="" 
    863                                 ForcedUsingAssemblies="" 
    864                                 CompileAsManaged="" 
    865                         /> 
    866                         <Tool 
    867                                 Name="VCCLCompilerTool" 
    868                                 ExecutionBucket="7" 
    869                         /> 
    870                         <Tool 
    871                                 Name="VCCodeSignTool" 
    872                         /> 
    873                         <DeploymentTool 
    874                                 ForceDirty="-1" 
    875                                 RemoteDirectory="" 
    876                                 RegisterOutput="0" 
    877                                 AdditionalFiles="" 
    878                         /> 
    879                         <DebuggerTool 
    880                         /> 
    881                 </Configuration> 
    882                 <Configuration 
    883                         Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" 
    884                         OutputDirectory=".\output\$(ProjectName)-wm5ppc-$(PlatformName)-vs8-$(ConfigurationName)" 
    885                         IntermediateDirectory="$(OutDir)" 
    886                         ConfigurationType="0" 
    887                         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
    888                         UseOfMFC="0" 
    889                         ATLMinimizesCRunTimeLibraryUsage="false" 
    890                         BuildLogFile="" 
    891                         > 
    892                         <Tool 
    893                                 Name="VCNMakeTool" 
    894                                 BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8" 
    895                                 ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8 /a" 
    896                                 CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8 clean" 
    897                                 Output="All samples" 
    898                                 PreprocessorDefinitions="" 
    899                                 IncludeSearchPath="" 
    900                                 ForcedIncludes="" 
    901                                 AssemblySearchPath="" 
    902                                 ForcedUsingAssemblies="" 
    903                                 CompileAsManaged="" 
    904                         /> 
    905                         <Tool 
    906                                 Name="VCCLCompilerTool" 
    907                                 ExecutionBucket="7" 
    908                         /> 
    909                         <Tool 
    910                                 Name="VCCodeSignTool" 
    911                         /> 
    912                         <DeploymentTool 
    913                                 ForceDirty="-1" 
    914                                 RemoteDirectory="" 
    915                                 RegisterOutput="0" 
    916                                 AdditionalFiles="" 
    917                         /> 
    918                         <DebuggerTool 
    919                         /> 
    920                 </Configuration> 
    921                 <Configuration 
    922                         Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" 
    923                         OutputDirectory=".\output\$(ProjectName)-wm5sp-$(PlatformName)-vs8-$(ConfigurationName)" 
    924                         IntermediateDirectory="$(OutDir)" 
    925                         ConfigurationType="0" 
    926                         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
    927                         UseOfMFC="0" 
    928                         ATLMinimizesCRunTimeLibraryUsage="false" 
    929                         BuildLogFile="" 
    930                         > 
    931                         <Tool 
    932                                 Name="VCNMakeTool" 
    933                                 BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8" 
    934                                 ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8 /a" 
    935                                 CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8 clean" 
    936                                 Output="All samples" 
    937                                 PreprocessorDefinitions="" 
    938                                 IncludeSearchPath="" 
    939                                 ForcedIncludes="" 
    940                                 AssemblySearchPath="" 
    941                                 ForcedUsingAssemblies="" 
    942                                 CompileAsManaged="" 
    943                         /> 
    944                         <Tool 
    945                                 Name="VCCLCompilerTool" 
    946                                 ExecutionBucket="7" 
    947                         /> 
    948                         <Tool 
    949                                 Name="VCCodeSignTool" 
    950                         /> 
    951                         <DeploymentTool 
    952                                 ForceDirty="-1" 
    953                                 RemoteDirectory="" 
    954                                 RegisterOutput="0" 
    955                                 AdditionalFiles="" 
    956                         /> 
    957                         <DebuggerTool 
    958                         /> 
    959                 </Configuration> 
    960                 <Configuration 
    961                         Name="Debug-Static|Windows Mobile 6 Standard SDK (ARMV4I)" 
    962                         OutputDirectory=".\output\$(ProjectName)-wm6std-$(PlatformName)-vs8-$(ConfigurationName)" 
    963                         IntermediateDirectory="$(OutDir)" 
    964                         ConfigurationType="0" 
    965                         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
    966                         UseOfMFC="0" 
    967                         ATLMinimizesCRunTimeLibraryUsage="false" 
    968                         BuildLogFile="" 
    969                         > 
    970                         <Tool 
    971                                 Name="VCNMakeTool" 
    972                                 BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8" 
    973                                 ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8 /a" 
    974                                 CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8 clean" 
    975                                 Output="All samples" 
    976                                 PreprocessorDefinitions="" 
    977                                 IncludeSearchPath="" 
    978                                 ForcedIncludes="" 
    979                                 AssemblySearchPath="" 
    980                                 ForcedUsingAssemblies="" 
    981                                 CompileAsManaged="" 
    982                         /> 
    983                         <Tool 
    984                                 Name="VCCLCompilerTool" 
    985                                 ExecutionBucket="7" 
    986                         /> 
    987                         <Tool 
    988                                 Name="VCCodeSignTool" 
    989                         /> 
    990                         <DeploymentTool 
    991                                 ForceDirty="-1" 
    992                                 RemoteDirectory="" 
    993                                 RegisterOutput="0" 
    994                                 AdditionalFiles="" 
    995                         /> 
    996                         <DebuggerTool 
    997                         /> 
    998                 </Configuration> 
    999                 <Configuration 
    1000                         Name="Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)" 
    1001                         OutputDirectory=".\output\$(ProjectName)-wm6pro-$(PlatformName)-vs8-$(ConfigurationName)" 
    1002                         IntermediateDirectory="$(OutDir)" 
    1003                         ConfigurationType="0" 
    1004                         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
    1005                         UseOfMFC="0" 
    1006                         ATLMinimizesCRunTimeLibraryUsage="false" 
    1007                         BuildLogFile="" 
    1008                         > 
    1009                         <Tool 
    1010                                 Name="VCNMakeTool" 
    1011                                 BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8" 
    1012                                 ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8 /a" 
    1013                                 CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8 clean" 
    1014                                 Output="All samples" 
    1015                                 PreprocessorDefinitions="" 
    1016                                 IncludeSearchPath="" 
    1017                                 ForcedIncludes="" 
    1018                                 AssemblySearchPath="" 
    1019                                 ForcedUsingAssemblies="" 
    1020                                 CompileAsManaged="" 
    1021                         /> 
    1022                         <Tool 
    1023                                 Name="VCCLCompilerTool" 
    1024                                 ExecutionBucket="7" 
    1025                         /> 
    1026                         <Tool 
    1027                                 Name="VCCodeSignTool" 
    1028                         /> 
    1029                         <DeploymentTool 
    1030                                 ForceDirty="-1" 
    1031                                 RemoteDirectory="" 
    1032                                 RegisterOutput="0" 
    1033                                 AdditionalFiles="" 
    1034                         /> 
    1035                         <DebuggerTool 
    1036                         /> 
    1037                 </Configuration> 
    1038                 <Configuration 
    1039                         Name="Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" 
    1040                         OutputDirectory=".\output\$(ProjectName)-wm5ppc-$(PlatformName)-vs8-$(ConfigurationName)" 
    1041                         IntermediateDirectory="$(OutDir)" 
    1042                         ConfigurationType="0" 
    1043                         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
    1044                         UseOfMFC="0" 
    1045                         ATLMinimizesCRunTimeLibraryUsage="false" 
    1046                         BuildLogFile="" 
    1047                         > 
    1048                         <Tool 
    1049                                 Name="VCNMakeTool" 
    1050                                 BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8" 
    1051                                 ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8 /a" 
    1052                                 CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8 clean" 
    1053                                 Output="All samples" 
    1054                                 PreprocessorDefinitions="" 
    1055                                 IncludeSearchPath="" 
    1056                                 ForcedIncludes="" 
    1057                                 AssemblySearchPath="" 
    1058                                 ForcedUsingAssemblies="" 
    1059                                 CompileAsManaged="" 
    1060                         /> 
    1061                         <Tool 
    1062                                 Name="VCCLCompilerTool" 
    1063                                 ExecutionBucket="7" 
    1064                         /> 
    1065                         <Tool 
    1066                                 Name="VCCodeSignTool" 
    1067                         /> 
    1068                         <DeploymentTool 
    1069                                 ForceDirty="-1" 
    1070                                 RemoteDirectory="" 
    1071                                 RegisterOutput="0" 
    1072                                 AdditionalFiles="" 
    1073                         /> 
    1074                         <DebuggerTool 
    1075                         /> 
    1076                 </Configuration> 
    1077                 <Configuration 
    1078                         Name="Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" 
    1079                         OutputDirectory=".\output\$(ProjectName)-wm5sp-$(PlatformName)-vs8-$(ConfigurationName)" 
    1080                         IntermediateDirectory="$(OutDir)" 
    1081                         ConfigurationType="0" 
    1082                         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
    1083                         UseOfMFC="0" 
    1084                         ATLMinimizesCRunTimeLibraryUsage="false" 
    1085                         BuildLogFile="" 
    1086                         > 
    1087                         <Tool 
    1088                                 Name="VCNMakeTool" 
    1089                                 BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8" 
    1090                                 ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8 /a" 
    1091                                 CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-static VC_VER=8 clean" 
    1092                                 Output="All samples" 
    1093                                 PreprocessorDefinitions="" 
    1094                                 IncludeSearchPath="" 
    1095                                 ForcedIncludes="" 
    1096                                 AssemblySearchPath="" 
    1097                                 ForcedUsingAssemblies="" 
    1098                                 CompileAsManaged="" 
    1099                         /> 
    1100                         <Tool 
    1101                                 Name="VCCLCompilerTool" 
    1102                                 ExecutionBucket="7" 
    1103                         /> 
    1104                         <Tool 
    1105                                 Name="VCCodeSignTool" 
    1106                         /> 
    1107                         <DeploymentTool 
    1108                                 ForceDirty="-1" 
    1109                                 RemoteDirectory="" 
    1110                                 RegisterOutput="0" 
    1111                                 AdditionalFiles="" 
    1112                         /> 
    1113                         <DebuggerTool 
    1114                         /> 
    1115                 </Configuration> 
    1116                 <Configuration 
    1117                         Name="Release-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)" 
    1118                         OutputDirectory=".\output\$(ProjectName)-wm6std-$(PlatformName)-vs8-$(ConfigurationName)" 
    1119                         IntermediateDirectory="$(OutDir)" 
    1120                         ConfigurationType="0" 
    1121                         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
    1122                         UseOfMFC="0" 
    1123                         ATLMinimizesCRunTimeLibraryUsage="false" 
    1124                         BuildLogFile="" 
    1125                         > 
    1126                         <Tool 
    1127                                 Name="VCNMakeTool" 
    1128                                 BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8" 
    1129                                 ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8 /a" 
    1130                                 CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8 clean" 
    1131                                 Output="All samples" 
    1132                                 PreprocessorDefinitions="" 
    1133                                 IncludeSearchPath="" 
    1134                                 ForcedIncludes="" 
    1135                                 AssemblySearchPath="" 
    1136                                 ForcedUsingAssemblies="" 
    1137                                 CompileAsManaged="" 
    1138                         /> 
    1139                         <Tool 
    1140                                 Name="VCCLCompilerTool" 
    1141                                 ExecutionBucket="7" 
    1142                         /> 
    1143                         <Tool 
    1144                                 Name="VCCodeSignTool" 
    1145                         /> 
    1146                         <DeploymentTool 
    1147                                 ForceDirty="-1" 
    1148                                 RemoteDirectory="" 
    1149                                 RegisterOutput="0" 
    1150                                 AdditionalFiles="" 
    1151                         /> 
    1152                         <DebuggerTool 
    1153                         /> 
    1154                 </Configuration> 
    1155                 <Configuration 
    1156                         Name="Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)" 
    1157                         OutputDirectory=".\output\$(ProjectName)-wm6pro-$(PlatformName)-vs8-$(ConfigurationName)" 
    1158                         IntermediateDirectory="$(OutDir)" 
    1159                         ConfigurationType="0" 
    1160                         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
    1161                         UseOfMFC="0" 
    1162                         ATLMinimizesCRunTimeLibraryUsage="false" 
    1163                         BuildLogFile="" 
    1164                         > 
    1165                         <Tool 
    1166                                 Name="VCNMakeTool" 
    1167                                 BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8" 
    1168                                 ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8 /a" 
    1169                                 CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8 clean" 
    1170                                 Output="All samples" 
    1171                                 PreprocessorDefinitions="" 
    1172                                 IncludeSearchPath="" 
    1173                                 ForcedIncludes="" 
    1174                                 AssemblySearchPath="" 
    1175                                 ForcedUsingAssemblies="" 
    1176                                 CompileAsManaged="" 
    1177                         /> 
    1178                         <Tool 
    1179                                 Name="VCCLCompilerTool" 
    1180                                 ExecutionBucket="7" 
    1181                         /> 
    1182                         <Tool 
    1183                                 Name="VCCodeSignTool" 
    1184                         /> 
    1185                         <DeploymentTool 
    1186                                 ForceDirty="-1" 
    1187                                 RemoteDirectory="" 
    1188                                 RegisterOutput="0" 
    1189                                 AdditionalFiles="" 
    1190                         /> 
    1191                         <DebuggerTool 
    1192                         /> 
    1193                 </Configuration> 
    1194                 <Configuration 
    1195                         Name="Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" 
    1196                         OutputDirectory=".\output\$(ProjectName)-wm5ppc-$(PlatformName)-vs8-$(ConfigurationName)" 
    1197                         IntermediateDirectory="$(OutDir)" 
    1198                         ConfigurationType="0" 
    1199                         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
    1200                         UseOfMFC="0" 
    1201                         ATLMinimizesCRunTimeLibraryUsage="false" 
    1202                         BuildLogFile="" 
    1203                         > 
    1204                         <Tool 
    1205                                 Name="VCNMakeTool" 
    1206                                 BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8" 
    1207                                 ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8 /a" 
    1208                                 CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8 clean" 
    1209                                 Output="All samples" 
    1210                                 PreprocessorDefinitions="" 
    1211                                 IncludeSearchPath="" 
    1212                                 ForcedIncludes="" 
    1213                                 AssemblySearchPath="" 
    1214                                 ForcedUsingAssemblies="" 
    1215                                 CompileAsManaged="" 
    1216                         /> 
    1217                         <Tool 
    1218                                 Name="VCCLCompilerTool" 
    1219                                 ExecutionBucket="7" 
    1220                         /> 
    1221                         <Tool 
    1222                                 Name="VCCodeSignTool" 
    1223                         /> 
    1224                         <DeploymentTool 
    1225                                 ForceDirty="-1" 
    1226                                 RemoteDirectory="" 
    1227                                 RegisterOutput="0" 
    1228                                 AdditionalFiles="" 
    1229                         /> 
    1230                         <DebuggerTool 
    1231                         /> 
    1232                 </Configuration> 
    1233                 <Configuration 
    1234                         Name="Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" 
    1235                         OutputDirectory=".\output\$(ProjectName)-wm5sp-$(PlatformName)-vs8-$(ConfigurationName)" 
    1236                         IntermediateDirectory="$(OutDir)" 
    1237                         ConfigurationType="0" 
    1238                         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
    1239                         UseOfMFC="0" 
    1240                         ATLMinimizesCRunTimeLibraryUsage="false" 
    1241                         BuildLogFile="" 
    1242                         > 
    1243                         <Tool 
    1244                                 Name="VCNMakeTool" 
    1245                                 BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8" 
    1246                                 ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8 /a" 
    1247                                 CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=release-dynamic VC_VER=8 clean" 
    1248                                 Output="All samples" 
    1249                                 PreprocessorDefinitions="" 
    1250                                 IncludeSearchPath="" 
    1251                                 ForcedIncludes="" 
    1252                                 AssemblySearchPath="" 
    1253                                 ForcedUsingAssemblies="" 
    1254                                 CompileAsManaged="" 
    1255                         /> 
    1256                         <Tool 
    1257                                 Name="VCCLCompilerTool" 
    1258                                 ExecutionBucket="7" 
    1259                         /> 
    1260                         <Tool 
    1261                                 Name="VCCodeSignTool" 
    1262                         /> 
    1263                         <DeploymentTool 
    1264                                 ForceDirty="-1" 
    1265                                 RemoteDirectory="" 
    1266                                 RegisterOutput="0" 
    1267                                 AdditionalFiles="" 
    1268                         /> 
    1269                         <DebuggerTool 
    1270                         /> 
    1271                 </Configuration> 
    1272                 <Configuration 
    1273                         Name="Debug-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)" 
    1274                         OutputDirectory=".\output\$(ProjectName)-wm6std-$(PlatformName)-vs8-$(ConfigurationName)" 
    1275                         IntermediateDirectory="$(OutDir)" 
    1276                         ConfigurationType="0" 
    1277                         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
    1278                         UseOfMFC="0" 
    1279                         ATLMinimizesCRunTimeLibraryUsage="false" 
    1280                         BuildLogFile="" 
    1281                         > 
    1282                         <Tool 
    1283                                 Name="VCNMakeTool" 
    1284                                 BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8" 
    1285                                 ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8 /a" 
    1286                                 CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8 clean" 
    1287                                 Output="All samples" 
    1288                                 PreprocessorDefinitions="" 
    1289                                 IncludeSearchPath="" 
    1290                                 ForcedIncludes="" 
    1291                                 AssemblySearchPath="" 
    1292                                 ForcedUsingAssemblies="" 
    1293                                 CompileAsManaged="" 
    1294                         /> 
    1295                         <Tool 
    1296                                 Name="VCCLCompilerTool" 
    1297                                 ExecutionBucket="7" 
    1298                         /> 
    1299                         <Tool 
    1300                                 Name="VCCodeSignTool" 
    1301                         /> 
    1302                         <DeploymentTool 
    1303                                 ForceDirty="-1" 
    1304                                 RemoteDirectory="" 
    1305                                 RegisterOutput="0" 
    1306                                 AdditionalFiles="" 
    1307                         /> 
    1308                         <DebuggerTool 
    1309                         /> 
    1310                 </Configuration> 
    1311                 <Configuration 
    1312                         Name="Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)" 
    1313                         OutputDirectory=".\output\$(ProjectName)-wm6pro-$(PlatformName)-vs8-$(ConfigurationName)" 
    1314                         IntermediateDirectory="$(OutDir)" 
    1315                         ConfigurationType="0" 
    1316                         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
    1317                         UseOfMFC="0" 
    1318                         ATLMinimizesCRunTimeLibraryUsage="false" 
    1319                         BuildLogFile="" 
    1320                         > 
    1321                         <Tool 
    1322                                 Name="VCNMakeTool" 
    1323                                 BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8" 
    1324                                 ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8 /a" 
    1325                                 CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8 clean" 
    1326                                 Output="All samples" 
    1327                                 PreprocessorDefinitions="" 
    1328                                 IncludeSearchPath="" 
    1329                                 ForcedIncludes="" 
    1330                                 AssemblySearchPath="" 
    1331                                 ForcedUsingAssemblies="" 
    1332                                 CompileAsManaged="" 
    1333                         /> 
    1334                         <Tool 
    1335                                 Name="VCCLCompilerTool" 
    1336                                 ExecutionBucket="7" 
    1337                         /> 
    1338                         <Tool 
    1339                                 Name="VCCodeSignTool" 
    1340                         /> 
    1341                         <DeploymentTool 
    1342                                 ForceDirty="-1" 
    1343                                 RemoteDirectory="" 
    1344                                 RegisterOutput="0" 
    1345                                 AdditionalFiles="" 
    1346                         /> 
    1347                         <DebuggerTool 
    1348                         /> 
    1349                 </Configuration> 
    1350                 <Configuration 
    1351                         Name="Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" 
    1352                         OutputDirectory=".\output\$(ProjectName)-wm5ppc-$(PlatformName)-vs8-$(ConfigurationName)" 
    1353                         IntermediateDirectory="$(OutDir)" 
    1354                         ConfigurationType="0" 
    1355                         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
    1356                         UseOfMFC="0" 
    1357                         ATLMinimizesCRunTimeLibraryUsage="false" 
    1358                         BuildLogFile="" 
    1359                         > 
    1360                         <Tool 
    1361                                 Name="VCNMakeTool" 
    1362                                 BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8" 
    1363                                 ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8 /a" 
    1364                                 CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8 clean" 
    1365                                 Output="All samples" 
    1366                                 PreprocessorDefinitions="" 
    1367                                 IncludeSearchPath="" 
    1368                                 ForcedIncludes="" 
    1369                                 AssemblySearchPath="" 
    1370                                 ForcedUsingAssemblies="" 
    1371                                 CompileAsManaged="" 
    1372                         /> 
    1373                         <Tool 
    1374                                 Name="VCCLCompilerTool" 
    1375                                 ExecutionBucket="7" 
    1376                         /> 
    1377                         <Tool 
    1378                                 Name="VCCodeSignTool" 
    1379                         /> 
    1380                         <DeploymentTool 
    1381                                 ForceDirty="-1" 
    1382                                 RemoteDirectory="" 
    1383                                 RegisterOutput="0" 
    1384                                 AdditionalFiles="" 
    1385                         /> 
    1386                         <DebuggerTool 
    1387                         /> 
    1388                 </Configuration> 
    1389                 <Configuration 
    1390                         Name="Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" 
    1391                         OutputDirectory=".\output\$(ProjectName)-wm5sp-$(PlatformName)-vs8-$(ConfigurationName)" 
    1392                         IntermediateDirectory="$(OutDir)" 
    1393                         ConfigurationType="0" 
    1394                         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" 
    1395                         UseOfMFC="0" 
    1396                         ATLMinimizesCRunTimeLibraryUsage="false" 
    1397                         BuildLogFile="" 
    1398                         > 
    1399                         <Tool 
    1400                                 Name="VCNMakeTool" 
    1401                                 BuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8" 
    1402                                 ReBuildCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8 /a" 
    1403                                 CleanCommandLine="nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug-dynamic VC_VER=8 clean" 
    14041404                                Output="All samples" 
    14051405                                PreprocessorDefinitions="" 
     
    17151715                        </File> 
    17161716                        <File 
    1717                                 RelativePath="..\src\samples\vstreamutil.c" 
     1717                                RelativePath="..\src\samples\vid_streamutil.c" 
    17181718                                > 
    17191719                        </File> 
  • pjproject/branches/projects/2.0-dev/pjsip-apps/src/samples/aviplay.c

    r3402 r3425  
    8686                  {PJMEDIA_FORMAT_H263 , "h263" , 
    8787                   PJ_FALSE, 0}, 
     88                  {PJMEDIA_FORMAT_XVID , "xvid"}, 
    8889                 }; 
    8990 
     
    106107} codec_port_data_t; 
    107108 
    108 static pj_status_t avi_event_cb(pjmedia_vid_stream *stream, 
     109static pj_status_t avi_event_cb(pjmedia_vid_dev_stream *stream, 
    109110                                void *user_data, 
    110111                                pjmedia_vid_event *event) 
  • pjproject/branches/projects/2.0-dev/pjsip-apps/src/samples/simpleua.c

    r3392 r3425  
    6868 
    6969/* Settings */ 
    70 #define AF          pj_AF_INET()    /* Change to pj_AF_INET6() for IPv6. 
     70#define AF              pj_AF_INET() /* Change to pj_AF_INET6() for IPv6. 
    7171                                      * PJ_HAS_IPV6 must be enabled and 
    7272                                      * your system must support IPv6.  */ 
    73 #define SIP_PORT    5060             /* Listening SIP port              */ 
    74 #define RTP_PORT    4000             /* RTP port                        */ 
     73#if 0 
     74#define SIP_PORT        5080         /* Listening SIP port              */ 
     75#define RTP_PORT        5000         /* RTP port                        */ 
     76#else 
     77#define SIP_PORT        5060         /* Listening SIP port              */ 
     78#define RTP_PORT        4000         /* RTP port                        */ 
     79#endif 
     80 
     81#define MAX_MEDIA_CNT   2            /* Media count, set to 1 for audio 
     82                                      * only or 2 for audio and video   */ 
    7583 
    7684/* 
     
    8391 
    8492static pjmedia_endpt        *g_med_endpt;   /* Media endpoint.          */ 
    85 static pjmedia_transport_info g_med_tpinfo; /* Socket info for media    */ 
    86 static pjmedia_transport    *g_med_transport;/* Media stream transport  */ 
     93 
     94static pjmedia_transport_info g_med_tpinfo[MAX_MEDIA_CNT];  
     95                                            /* Socket info for media    */ 
     96static pjmedia_transport    *g_med_transport[MAX_MEDIA_CNT]; 
     97                                            /* Media stream transport   */ 
     98static pjmedia_sock_info     g_sock_info[MAX_MEDIA_CNT];   
     99                                            /* Socket info array        */ 
    87100 
    88101/* Call variables: */ 
    89102static pjsip_inv_session    *g_inv;         /* Current invite session.  */ 
    90 static pjmedia_session      *g_med_session; /* Call's media session.    */ 
     103static pjmedia_stream       *g_med_stream;  /* Call's audio stream.     */ 
     104static pjmedia_vid_stream   *g_med_vstream; /* Call's video stream.     */ 
    91105static pjmedia_snd_port     *g_snd_player;  /* Call's sound player      */ 
    92106static pjmedia_snd_port     *g_snd_rec;     /* Call's sound recorder.   */ 
     107static pjmedia_vid_port     *g_vid_capturer;/* Call's video capturer.   */ 
     108static pjmedia_vid_port     *g_vid_renderer;/* Call's video renderer.   */ 
    93109 
    94110 
     
    137153 
    138154 
     155/* Notification on incoming messages */ 
     156static pj_bool_t logging_on_rx_msg(pjsip_rx_data *rdata) 
     157{ 
     158    PJ_LOG(4,(THIS_FILE, "RX %d bytes %s from %s %s:%d:\n" 
     159                         "%.*s\n" 
     160                         "--end msg--", 
     161                         rdata->msg_info.len, 
     162                         pjsip_rx_data_get_info(rdata), 
     163                         rdata->tp_info.transport->type_name, 
     164                         rdata->pkt_info.src_name, 
     165                         rdata->pkt_info.src_port, 
     166                         (int)rdata->msg_info.len, 
     167                         rdata->msg_info.msg_buf)); 
     168     
     169    /* Always return false, otherwise messages will not get processed! */ 
     170    return PJ_FALSE; 
     171} 
     172 
     173/* Notification on outgoing messages */ 
     174static pj_status_t logging_on_tx_msg(pjsip_tx_data *tdata) 
     175{ 
     176     
     177    /* Important note: 
     178     *  tp_info field is only valid after outgoing messages has passed 
     179     *  transport layer. So don't try to access tp_info when the module 
     180     *  has lower priority than transport layer. 
     181     */ 
     182 
     183    PJ_LOG(4,(THIS_FILE, "TX %d bytes %s to %s %s:%d:\n" 
     184                         "%.*s\n" 
     185                         "--end msg--", 
     186                         (tdata->buf.cur - tdata->buf.start), 
     187                         pjsip_tx_data_get_info(tdata), 
     188                         tdata->tp_info.transport->type_name, 
     189                         tdata->tp_info.dst_name, 
     190                         tdata->tp_info.dst_port, 
     191                         (int)(tdata->buf.cur - tdata->buf.start), 
     192                         tdata->buf.start)); 
     193 
     194    /* Always return success, otherwise message will not get sent! */ 
     195    return PJ_SUCCESS; 
     196} 
     197 
     198/* The module instance. */ 
     199static pjsip_module msg_logger =  
     200{ 
     201    NULL, NULL,                         /* prev, next.          */ 
     202    { "mod-msg-log", 13 },              /* Name.                */ 
     203    -1,                                 /* Id                   */ 
     204    PJSIP_MOD_PRIORITY_TRANSPORT_LAYER-1,/* Priority            */ 
     205    NULL,                               /* load()               */ 
     206    NULL,                               /* start()              */ 
     207    NULL,                               /* stop()               */ 
     208    NULL,                               /* unload()             */ 
     209    &logging_on_rx_msg,                 /* on_rx_request()      */ 
     210    &logging_on_rx_msg,                 /* on_rx_response()     */ 
     211    &logging_on_tx_msg,                 /* on_tx_request.       */ 
     212    &logging_on_tx_msg,                 /* on_tx_response()     */ 
     213    NULL,                               /* on_tsx_state()       */ 
     214 
     215}; 
     216 
    139217 
    140218/* 
     
    146224int main(int argc, char *argv[]) 
    147225{ 
     226    pj_pool_t *pool; 
    148227    pj_status_t status; 
     228    unsigned i; 
    149229 
    150230    /* Must init PJLIB first: */ 
     
    152232    PJ_ASSERT_RETURN(status == PJ_SUCCESS, 1); 
    153233 
     234    pj_log_set_level(5); 
    154235 
    155236    /* Then init PJLIB-UTIL: */ 
     
    263344    PJ_ASSERT_RETURN(status == PJ_SUCCESS, 1); 
    264345 
     346    /* 
     347     * Register message logger module. 
     348     */ 
     349    status = pjsip_endpt_register_module( g_endpt, &msg_logger); 
     350    PJ_ASSERT_RETURN(status == PJ_SUCCESS, 1); 
     351 
    265352 
    266353    /*  
     
    285372#endif 
    286373 
     374 
     375    /* Init video subsystem */ 
     376    pool = pjmedia_endpt_create_pool(g_med_endpt, "Video subsystem", 512, 512); 
     377    status = pjmedia_video_format_mgr_create(pool, 64, 0, NULL); 
     378    PJ_ASSERT_RETURN(status == PJ_SUCCESS, 1); 
     379    status = pjmedia_converter_mgr_create(pool, NULL); 
     380    PJ_ASSERT_RETURN(status == PJ_SUCCESS, 1); 
     381    status = pjmedia_vid_codec_mgr_create(pool, NULL); 
     382    PJ_ASSERT_RETURN(status == PJ_SUCCESS, 1); 
     383    status = pjmedia_vid_subsys_init(&cp.factory); 
     384    PJ_ASSERT_RETURN(status == PJ_SUCCESS, 1); 
     385 
     386    /* Init ffmpeg video codecs */ 
     387    status = pjmedia_codec_ffmpeg_init(NULL, &cp.factory); 
     388    PJ_ASSERT_RETURN(status == PJ_SUCCESS, 1); 
     389 
    287390     
    288391    /*  
     
    291394     * opt to re-use the same media transport for subsequent calls. 
    292395     */ 
    293     status = pjmedia_transport_udp_create3(g_med_endpt, AF, NULL, NULL,  
    294                                            RTP_PORT, 0, &g_med_transport); 
    295     if (status != PJ_SUCCESS) { 
    296         app_perror(THIS_FILE, "Unable to create media transport", status); 
    297         return 1; 
    298     } 
    299  
    300     /*  
    301      * Get socket info (address, port) of the media transport. We will 
    302      * need this info to create SDP (i.e. the address and port info in 
    303      * the SDP). 
    304      */ 
    305     pjmedia_transport_info_init(&g_med_tpinfo); 
    306     pjmedia_transport_get_info(g_med_transport, &g_med_tpinfo); 
    307  
     396    for (i = 0; i < PJ_ARRAY_SIZE(g_med_transport); ++i) { 
     397        status = pjmedia_transport_udp_create3(g_med_endpt, AF, NULL, NULL,  
     398                                               RTP_PORT + i*2, 0,  
     399                                               &g_med_transport[i]); 
     400        if (status != PJ_SUCCESS) { 
     401            app_perror(THIS_FILE, "Unable to create media transport", status); 
     402            return 1; 
     403        } 
     404 
     405        /*  
     406         * Get socket info (address, port) of the media transport. We will 
     407         * need this info to create SDP (i.e. the address and port info in 
     408         * the SDP). 
     409         */ 
     410        pjmedia_transport_info_init(&g_med_tpinfo[i]); 
     411        pjmedia_transport_get_info(g_med_transport[i], &g_med_tpinfo[i]); 
     412 
     413        pj_memcpy(&g_sock_info[i], &g_med_tpinfo[i].sock_info, 
     414                  sizeof(pjmedia_sock_info)); 
     415    } 
    308416 
    309417    /* 
     
    367475        status = pjmedia_endpt_create_sdp( g_med_endpt,     /* the media endpt  */ 
    368476                                           dlg->pool,       /* pool.            */ 
    369                                            1,               /* # of streams     */ 
    370                                            &g_med_tpinfo.sock_info,    
    371                                                             /* RTP sock info    */ 
     477                                           MAX_MEDIA_CNT,           /* # of streams     */ 
     478                                           g_sock_info,     /* RTP sock info    */ 
    372479                                           &local_sdp);     /* the SDP result   */ 
    373480        PJ_ASSERT_RETURN(status == PJ_SUCCESS, 1); 
     
    440547    /* On exit, dump current memory usage: */ 
    441548    dump_pool_usage(THIS_FILE, &cp); 
     549 
     550    pj_pool_release(pool); 
    442551 
    443552    return 0; 
     
    575684     */ 
    576685 
    577     status = pjmedia_endpt_create_sdp( g_med_endpt, rdata->tp_info.pool, 1, 
    578                                        &g_med_tpinfo.sock_info,  
    579                                        &local_sdp); 
     686    status = pjmedia_endpt_create_sdp( g_med_endpt, rdata->tp_info.pool, 
     687                                       MAX_MEDIA_CNT, g_sock_info, &local_sdp); 
    580688    PJ_ASSERT_RETURN(status == PJ_SUCCESS, PJ_TRUE); 
    581689 
     
    640748                                  pj_status_t status) 
    641749{ 
    642     pjmedia_session_info sess_info; 
     750    pjmedia_stream_info stream_info; 
    643751    const pjmedia_sdp_session *local_sdp; 
    644752    const pjmedia_sdp_session *remote_sdp; 
     
    663771 
    664772 
    665     /* Create session info based on the two SDPs.  
    666      * We only support one stream per session for now. 
    667      */ 
    668     status = pjmedia_session_info_from_sdp(inv->dlg->pool, g_med_endpt,  
    669                                            1, &sess_info,  
    670                                            local_sdp, remote_sdp); 
     773    /* Create stream info based on the media audio SDP. */ 
     774    status = pjmedia_stream_info_from_sdp(&stream_info, inv->dlg->pool, 
     775                                          g_med_endpt, 
     776                                          local_sdp, remote_sdp, 0); 
    671777    if (status != PJ_SUCCESS) { 
    672         app_perror( THIS_FILE, "Unable to create media session", status); 
     778        app_perror(THIS_FILE,"Unable to create audio stream info",status); 
    673779        return; 
    674780    } 
    675781 
    676     /* If required, we can also change some settings in the session info, 
     782    /* If required, we can also change some settings in the stream info, 
    677783     * (such as jitter buffer settings, codec settings, etc) before we 
    678      * create the session. 
    679      */ 
    680  
    681     /* Create new media session, passing the two SDPs, and also the 
     784     * create the stream. 
     785     */ 
     786 
     787    /* Create new audio media stream, passing the stream info, and also the 
    682788     * media socket that we created earlier. 
    683      * The media session is active immediately. 
    684      */ 
    685     status = pjmedia_session_create( g_med_endpt, &sess_info, 
    686                                      &g_med_transport, NULL, &g_med_session ); 
     789     */ 
     790    status = pjmedia_stream_create(g_med_endpt, inv->dlg->pool, &stream_info, 
     791                                   g_med_transport[0], NULL, &g_med_stream); 
    687792    if (status != PJ_SUCCESS) { 
    688         app_perror( THIS_FILE, "Unable to create media session", status); 
     793        app_perror( THIS_FILE, "Unable to create audio stream", status); 
    689794        return; 
    690795    } 
    691796 
    692  
    693     /* Get the media port interface of the first stream in the session.  
     797    /* Start the audio stream */ 
     798    status = pjmedia_stream_start(g_med_stream); 
     799    if (status != PJ_SUCCESS) { 
     800        app_perror( THIS_FILE, "Unable to start audio stream", status); 
     801        return; 
     802    } 
     803 
     804    /* Get the media port interface of the audio stream.  
    694805     * Media port interface is basicly a struct containing get_frame() and 
    695806     * put_frame() function. With this media port interface, we can attach 
     
    697808     * player/recorder device. 
    698809     */ 
    699     pjmedia_session_get_port(g_med_session, 0, &media_port); 
     810    pjmedia_stream_get_port(g_med_stream, &media_port); 
    700811 
    701812 
     
    746857    status = pjmedia_snd_port_connect(g_snd_rec, media_port); 
    747858 
     859 
     860    /* Get the media port interface of the second stream in the session, 
     861     * which is video stream. With this media port interface, we can attach 
     862     * the port directly to a renderer/capture video device. 
     863     */ 
     864    if (local_sdp->media_count > 1) { 
     865        pjmedia_vid_stream_info vstream_info; 
     866        pjmedia_vid_port_param vport_param; 
     867 
     868        /* Create stream info based on the media video SDP. */ 
     869        status = pjmedia_vid_stream_info_from_sdp(&vstream_info, 
     870                                                  inv->dlg->pool, g_med_endpt, 
     871                                                  local_sdp, remote_sdp, 1); 
     872        if (status != PJ_SUCCESS) { 
     873            app_perror(THIS_FILE,"Unable to create video stream info",status); 
     874            return; 
     875        } 
     876 
     877        /* If required, we can also change some settings in the stream info, 
     878         * (such as jitter buffer settings, codec settings, etc) before we 
     879         * create the video stream. 
     880         */ 
     881 
     882        /* Create new video media stream, passing the stream info, and also the 
     883         * media socket that we created earlier. 
     884         */ 
     885        status = pjmedia_vid_stream_create(g_med_endpt, inv->dlg->pool, 
     886                                           &vstream_info, g_med_transport[1], 
     887                                           NULL, &g_med_vstream); 
     888        if (status != PJ_SUCCESS) { 
     889            app_perror( THIS_FILE, "Unable to create video stream", status); 
     890            return; 
     891        } 
     892 
     893        /* Start the video stream */ 
     894        status = pjmedia_vid_stream_start(g_med_vstream); 
     895        if (status != PJ_SUCCESS) { 
     896            app_perror( THIS_FILE, "Unable to start video stream", status); 
     897            return; 
     898        } 
     899 
     900 
     901        if (vstream_info.dir & PJMEDIA_DIR_DECODING) { 
     902            status = pjmedia_vid_dev_default_param( 
     903                                inv->pool, PJMEDIA_VID_DEFAULT_RENDER_DEV, 
     904                                &vport_param.vidparam); 
     905            if (status != PJ_SUCCESS) { 
     906                app_perror(THIS_FILE, "Unable to get default param of video " 
     907                           "renderer device", status); 
     908                return; 
     909            } 
     910 
     911            /* Get renderer format from decoding format in stream info */ 
     912            pjmedia_format_copy(&vport_param.vidparam.fmt,  
     913                                &vstream_info.codec_param->dec_fmt); 
     914            vport_param.vidparam.dir = PJMEDIA_DIR_RENDER; 
     915            vport_param.active = PJ_TRUE; 
     916 
     917            /* Create renderer */ 
     918            status = pjmedia_vid_port_create(inv->pool, &vport_param,  
     919                                             &g_vid_renderer); 
     920            if (status != PJ_SUCCESS) { 
     921                app_perror(THIS_FILE, "Unable to create video renderer device", 
     922                           status); 
     923                return; 
     924            } 
     925 
     926            /* Get video stream port for decoding direction */ 
     927            pjmedia_vid_stream_get_port(g_med_vstream, PJMEDIA_DIR_DECODING, 
     928                                        &media_port); 
     929 
     930            /* Connect renderer to media_port */ 
     931            status = pjmedia_vid_port_connect(g_vid_renderer, media_port,  
     932                                              PJ_FALSE); 
     933            if (status != PJ_SUCCESS) { 
     934                app_perror(THIS_FILE, "Unable to connect renderer to stream", 
     935                           status); 
     936                return; 
     937            } 
     938        } 
     939 
     940        /* Create capturer */ 
     941        if (vstream_info.dir & PJMEDIA_DIR_ENCODING) { 
     942            status = pjmedia_vid_dev_default_param( 
     943                                inv->pool, PJMEDIA_VID_DEFAULT_CAPTURE_DEV, 
     944                                &vport_param.vidparam); 
     945            if (status != PJ_SUCCESS) { 
     946                app_perror(THIS_FILE, "Unable to get default param of video " 
     947                           "capture device", status); 
     948                return; 
     949            } 
     950 
     951            /* Get renderer capturer from encoding format in stream info */ 
     952            pjmedia_format_copy(&vport_param.vidparam.fmt,  
     953                                &vstream_info.codec_param->enc_fmt); 
     954 
     955            /* Capturer format ID should be copied from decoder format ID? */ 
     956            vport_param.vidparam.fmt.id = vstream_info.codec_param->dec_fmt.id; 
     957            vport_param.vidparam.dir = PJMEDIA_DIR_CAPTURE; 
     958            vport_param.active = PJ_TRUE; 
     959 
     960            /* Create capturer */ 
     961            status = pjmedia_vid_port_create(inv->pool, &vport_param,  
     962                                             &g_vid_capturer); 
     963            if (status != PJ_SUCCESS) { 
     964                app_perror(THIS_FILE, "Unable to create video capture device", 
     965                           status); 
     966                return; 
     967            } 
     968 
     969            /* Get video stream port for decoding direction */ 
     970            pjmedia_vid_stream_get_port(g_med_vstream, PJMEDIA_DIR_ENCODING, 
     971                                        &media_port); 
     972 
     973            /* Connect capturer to media_port */ 
     974            status = pjmedia_vid_port_connect(g_vid_capturer, media_port,  
     975                                              PJ_FALSE); 
     976            if (status != PJ_SUCCESS) { 
     977                app_perror(THIS_FILE, "Unable to connect capturer to stream", 
     978                           status); 
     979                return; 
     980            } 
     981        } 
     982 
     983        /* Start streaming */ 
     984        if (g_vid_renderer) { 
     985            status = pjmedia_vid_port_start(g_vid_renderer); 
     986            if (status != PJ_SUCCESS) { 
     987                app_perror(THIS_FILE, "Unable to start video renderer", 
     988                           status); 
     989                return; 
     990            } 
     991        } 
     992        if (g_vid_capturer) { 
     993            status = pjmedia_vid_port_start(g_vid_capturer); 
     994            if (status != PJ_SUCCESS) { 
     995                app_perror(THIS_FILE, "Unable to start video capturer", 
     996                           status); 
     997                return; 
     998            } 
     999        } 
     1000    } 
     1001 
    7481002    /* Done with media. */ 
    7491003} 
Note: See TracChangeset for help on using the changeset viewer.