Ignore:
Timestamp:
Mar 22, 2011 9:46:04 AM (11 years ago)
Author:
nanang
Message:

Re #1213:

  • Added encoding format conversion (only format ID) in video port.
  • Fixed few bugs in direct show capture device:
    • VIDEOINFOHEADER.AvgTimePerFrame? calculation overflow which caused failure in opening capture device.
    • AM_MEDIA_TYPE.formattype validation to avoid bad type casting (of VIDEOINFOHEADER).
File:
1 edited

Legend:

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

    r3459 r3470  
    611611 
    612612                    for (i = 0; i < icount; i++) { 
    613                         RPC_STATUS rpcstatus; 
     613                        RPC_STATUS rpcstatus, rpcstatus2; 
    614614 
    615615                        hr = IAMStreamConfig_GetStreamCaps(streamcaps, i, 
     
    619619                            continue; 
    620620 
    621                         if (UuidCompare(&mediatype->subtype, 
    622                                         (UUID *)dshow_format, 
    623                                         &rpcstatus) == 0 && 
    624                             rpcstatus == RPC_S_OK) 
     621                        if (UuidCompare(&mediatype->subtype,  
     622                                        (UUID*)dshow_format, 
     623                                        &rpcstatus) == 0 &&  
     624                            rpcstatus == RPC_S_OK && 
     625                            UuidCompare(&mediatype->formattype, 
     626                                        (UUID*)&FORMAT_VideoInfo, 
     627                                        &rpcstatus2) == 0 && 
     628                            rpcstatus2 == RPC_S_OK) 
    625629                        { 
    626630                            srcpin = pPin; 
    627631                            graph->mediatype = mediatype; 
    628                             break; 
     632                            break; 
    629633                        } 
    630634                    } 
     
    674678    if (vfd->fps.num != 0) 
    675679        video_info->AvgTimePerFrame = (LONGLONG) (10000000 *  
    676                                       vfd->fps.denum / 
    677                                       (double)vfd->fps.num); 
     680                                                  (double)vfd->fps.denum / 
     681                                                  vfd->fps.num); 
    678682    video_info->bmiHeader.biSizeImage = DIBSIZE(video_info->bmiHeader); 
    679683    mediatype->lSampleSize = DIBSIZE(video_info->bmiHeader); 
Note: See TracChangeset for help on using the changeset viewer.