• Roman Donchenko's avatar
    Merge remote-tracking branch 'origin/2.4' · dcaf9235
    Roman Donchenko authored
    Conflicts:
    	3rdparty/ffmpeg/ffmpeg_version.cmake
    	cmake/OpenCVFindLibsGrfmt.cmake
    	cmake/templates/cvconfig.h.cmake
    	modules/bioinspired/doc/retina/index.rst
    	modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst
    	modules/calib3d/src/precomp.hpp
    	modules/contrib/src/inputoutput.cpp
    	modules/contrib/src/precomp.hpp
    	modules/core/include/opencv2/core/internal.hpp
    	modules/core/include/opencv2/core/types_c.h
    	modules/core/src/drawing.cpp
    	modules/core/src/precomp.hpp
    	modules/core/src/system.cpp
    	modules/features2d/doc/common_interfaces_of_descriptor_matchers.rst
    	modules/features2d/doc/common_interfaces_of_feature_detectors.rst
    	modules/features2d/include/opencv2/features2d/features2d.hpp
    	modules/features2d/src/precomp.hpp
    	modules/flann/src/precomp.hpp
    	modules/gpu/doc/camera_calibration_and_3d_reconstruction.rst
    	modules/gpu/doc/image_filtering.rst
    	modules/gpu/doc/image_processing.rst
    	modules/gpu/doc/video.rst
    	modules/gpu/perf/perf_imgproc.cpp
    	modules/gpu/perf4au/main.cpp
    	modules/gpu/src/imgproc.cpp
    	modules/gpu/src/precomp.hpp
    	modules/gpu/test/test_imgproc.cpp
    	modules/highgui/CMakeLists.txt
    	modules/highgui/test/test_precomp.hpp
    	modules/imgproc/doc/structural_analysis_and_shape_descriptors.rst
    	modules/imgproc/src/precomp.hpp
    	modules/java/generator/src/cpp/Mat.cpp
    	modules/legacy/src/precomp.hpp
    	modules/ml/doc/k_nearest_neighbors.rst
    	modules/ml/src/precomp.hpp
    	modules/nonfree/doc/feature_detection.rst
    	modules/nonfree/src/precomp.hpp
    	modules/objdetect/include/opencv2/objdetect/objdetect.hpp
    	modules/objdetect/src/cascadedetect.cpp
    	modules/objdetect/src/hog.cpp
    	modules/objdetect/src/precomp.hpp
    	modules/objdetect/test/test_latentsvmdetector.cpp
    	modules/ocl/src/hog.cpp
    	modules/ocl/src/opencl/objdetect_hog.cl
    	modules/ocl/src/precomp.hpp
    	modules/photo/src/precomp.hpp
    	modules/stitching/src/precomp.hpp
    	modules/superres/perf/perf_precomp.hpp
    	modules/superres/src/optical_flow.cpp
    	modules/superres/src/precomp.hpp
    	modules/superres/test/test_precomp.hpp
    	modules/ts/include/opencv2/ts.hpp
    	modules/video/src/precomp.hpp
    	modules/videostab/src/precomp.hpp
    	modules/world/src/precomp.hpp
    dcaf9235
videoenc.rst 6.64 KB

Video Encoding

gpucodec::VideoWriter

Video writer interface.

The implementation uses H264 video codec.

Note

Currently only Windows platform is supported.

gpucodec::VideoWriter::write

Writes the next video frame.

The method write the specified image to video file. The image must have the same size and the same surface format as has been specified when opening the video writer.

gpucodec::createVideoWriter

Creates video writer.

The constructors initialize video writer. FFMPEG is used to write videos. User can implement own multiplexing with :ocv:class:`gpucodec::EncoderCallBack` .

gpucodec::EncoderParams

Different parameters for CUDA video encoder.

struct EncoderParams
{
    int       P_Interval;      //    NVVE_P_INTERVAL,
    int       IDR_Period;      //    NVVE_IDR_PERIOD,
    int       DynamicGOP;      //    NVVE_DYNAMIC_GOP,
    int       RCType;          //    NVVE_RC_TYPE,
    int       AvgBitrate;      //    NVVE_AVG_BITRATE,
    int       PeakBitrate;     //    NVVE_PEAK_BITRATE,
    int       QP_Level_Intra;  //    NVVE_QP_LEVEL_INTRA,
    int       QP_Level_InterP; //    NVVE_QP_LEVEL_INTER_P,
    int       QP_Level_InterB; //    NVVE_QP_LEVEL_INTER_B,
    int       DeblockMode;     //    NVVE_DEBLOCK_MODE,
    int       ProfileLevel;    //    NVVE_PROFILE_LEVEL,
    int       ForceIntra;      //    NVVE_FORCE_INTRA,
    int       ForceIDR;        //    NVVE_FORCE_IDR,
    int       ClearStat;       //    NVVE_CLEAR_STAT,
    int       DIMode;          //    NVVE_SET_DEINTERLACE,
    int       Presets;         //    NVVE_PRESETS,
    int       DisableCabac;    //    NVVE_DISABLE_CABAC,
    int       NaluFramingType; //    NVVE_CONFIGURE_NALU_FRAMING_TYPE
    int       DisableSPSPPS;   //    NVVE_DISABLE_SPS_PPS

    EncoderParams();
    explicit EncoderParams(const String& configFile);

    void load(const String& configFile);
    void save(const String& configFile) const;
};

gpucodec::EncoderParams::EncoderParams

Constructors.

Creates default parameters or reads parameters from config file.

gpucodec::EncoderParams::load

Reads parameters from config file.

gpucodec::EncoderParams::save

Saves parameters to config file.

gpucodec::EncoderCallBack

Callbacks for CUDA video encoder.

class EncoderCallBack
{
public:
    enum PicType
    {
        IFRAME = 1,
        PFRAME = 2,
        BFRAME = 3
    };

    virtual ~EncoderCallBack() {}

    virtual unsigned char* acquireBitStream(int* bufferSize) = 0;
    virtual void releaseBitStream(unsigned char* data, int size) = 0;
    virtual void onBeginFrame(int frameNumber, PicType picType) = 0;
    virtual void onEndFrame(int frameNumber, PicType picType) = 0;
};

gpucodec::EncoderCallBack::acquireBitStream

Callback function to signal the start of bitstream that is to be encoded.

Callback must allocate buffer for CUDA encoder and return pointer to it and it's size.

gpucodec::EncoderCallBack::releaseBitStream

Callback function to signal that the encoded bitstream is ready to be written to file.

gpucodec::EncoderCallBack::onBeginFrame

Callback function to signal that the encoding operation on the frame has started.

gpucodec::EncoderCallBack::onEndFrame

Callback function signals that the encoding operation on the frame has finished.