• wanghanmin's avatar
    Merge pull request #12138 from wanghanmin:wanghanmin-patch-videoio_crossbarsetting-1 · eb981cc7
    wanghanmin authored
    * Update videoio.hpp
    
    add VideoCapturePropertie for clossbar input pin setting
    
    * Update cap_dshow.cpp
    
    For some kind of capture card, such as "avermedia cv710 " , it use SerialDigital as input pin and so it can not work.
    Here added new PhysicalConnectorType enumeration: PhysConn_Video_YRYBY and PhysConn_Video_SerialDigital to support it.
    And also provide new property parameter CAP_CROSSBAR_INPIN_TYPE to set the crossbar input pin type which will be used in videoInput::start(int deviceID, videoDevice *VD):
    " if(VD->useCrossbar)
        {
            DebugPrintOut("SETUP: Checking crossbar\n");
            routeCrossbar(&VD->pCaptureGraph, &VD->pVideoInputFilter, VD->connection, CAPTURE_MODE);
    
        }
    "
    
    And at last ,fixed one issue for function setSizeAndSubtype, added code 
    pVih->rcSource.top = pVih->rcSource.left = pVih->rcTarget.top =pVih->rcTarget.left=0;
    pVih->rcSource.right = pVih->rcTarget.right= attemptWidth;
    pVih->rcSource.bottom = pVih->rcTarget.bottom = attemptHeight;
    
    without these code , rcSource and rcTarget will keeping use default resolution and cause fail in hr = VD->streamConf->SetFormat(VD->pAmMediaType) and cannot find suitable MediaType.
    
    Tested with python3 and mfc (Avermedia cv710)
    Python3 code:
    import cv2
    print("test cv")
    cap=cv2.VideoCapture(0)
    cap.set(5,60)
    cap.set(3,1920)
    cap.set(4,1080)
    cap.set(31,6)
    
    
    ret,img=cap.read()
    cv2.namedWindow("cap",cv2.WINDOW_NORMAL)
    cv2.resizeWindow("cap",960,640);
    while True:
        ret,img=cap.read()
        if ret==False:
            continue
        cv2.imshow("cap",img)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    cap.release()
    
    cv2.destroyAllWindows()
    
    MFC code:
    void CcvtestDlg::OnBnClickedButton1()
    {
    VideoCapture cap(0);
    cap.set(CAP_PROP_FRAME_WIDTH, 1920);
    cap.set(CAP_PROP_FRAME_HEIGHT, 1080);
    
    cap.set(CAP_CROSSBAR_INPIN_TYPE , 6);
    Mat img;
    namedWindow("test", WINDOW_NORMAL);
    resizeWindow("test", 960, 640);
    while (1)
    {
    if (cap.read(img))
    {
    imshow("test", img);
    if ('q' ==waitKey(1))
    break;
    }
    }
    destroyAllWindows();
    cap.release();
    }
    
    * Update cap_dshow.cpp
    
    * Update videoio.hpp
    
    move enum value of CAP_CROSSBAR_INPIN_TYPE to the end of list
    
    * Update videoio.hpp
    
    * Update cap_dshow.cpp
    
    removed trailing whitespace
    
    * Update test_camera.cpp
    
    Add test for capture device using PhysConn_Video_SerialDigital as crossbar input pin
    
    * Update test_camera.cpp
    
    Correction of misunderstanding about how to add test case.
    eb981cc7
Name
Last commit
Last update
..
cap_winrt Loading commit data...
cap.cpp Loading commit data...
cap_aravis.cpp Loading commit data...
cap_avfoundation.mm Loading commit data...
cap_avfoundation_mac.mm Loading commit data...
cap_cmu.cpp Loading commit data...
cap_dc1394.cpp Loading commit data...
cap_dc1394_v2.cpp Loading commit data...
cap_dshow.cpp Loading commit data...
cap_dshow.hpp Loading commit data...
cap_ffmpeg.cpp Loading commit data...
cap_ffmpeg_api.hpp Loading commit data...
cap_ffmpeg_impl.hpp Loading commit data...
cap_giganetix.cpp Loading commit data...
cap_gphoto2.cpp Loading commit data...
cap_gstreamer.cpp Loading commit data...
cap_images.cpp Loading commit data...
cap_intelperc.cpp Loading commit data...
cap_intelperc.hpp Loading commit data...
cap_ios_abstract_camera.mm Loading commit data...
cap_ios_photo_camera.mm Loading commit data...
cap_ios_video_camera.mm Loading commit data...
cap_librealsense.cpp Loading commit data...
cap_librealsense.hpp Loading commit data...
cap_libv4l.cpp Loading commit data...
cap_mfx_common.cpp Loading commit data...
cap_mfx_common.hpp Loading commit data...
cap_mfx_reader.cpp Loading commit data...
cap_mfx_reader.hpp Loading commit data...
cap_mfx_writer.cpp Loading commit data...
cap_mfx_writer.hpp Loading commit data...
cap_mjpeg_decoder.cpp Loading commit data...
cap_mjpeg_encoder.cpp Loading commit data...
cap_msmf.cpp Loading commit data...
cap_msmf.hpp Loading commit data...
cap_openni.cpp Loading commit data...
cap_openni2.cpp Loading commit data...
cap_pvapi.cpp Loading commit data...
cap_qt.cpp Loading commit data...
cap_qtkit.mm Loading commit data...
cap_unicap.cpp Loading commit data...
cap_v4l.cpp Loading commit data...
cap_vfw.cpp Loading commit data...
cap_winrt_bridge.cpp Loading commit data...
cap_winrt_bridge.hpp Loading commit data...
cap_winrt_capture.cpp Loading commit data...
cap_winrt_capture.hpp Loading commit data...
cap_winrt_video.cpp Loading commit data...
cap_winrt_video.hpp Loading commit data...
cap_ximea.cpp Loading commit data...
cap_xine.cpp Loading commit data...
container_avi.cpp Loading commit data...
ffmpeg_codecs.hpp Loading commit data...
precomp.hpp Loading commit data...
videoio_c.cpp Loading commit data...
videoio_registry.cpp Loading commit data...
videoio_registry.hpp Loading commit data...
wrl.h Loading commit data...