Smart recorder python bindings

Refer to the following pseudo code

Utils.cpp


namespace pydeepstream {
    void bindutils(py::module &m) {
             py::enum_<NvDsSRContainerType>(m, "NvDsSRContainerType")
        .value("NVDSSR_CONTAINER_MP4", NVDSSR_CONTAINER_MP4)
        .value("NVDSSR_CONTAINER_MKV", NVDSSR_CONTAINER_MKV)
        .export_values();

py::class_<NvDsSRRecordingInfo>(m, "NvDsSRRecordingInfo")
        .def(py::init<>())
        .def_property("filename", STRING_CHAR_ARRAY(NvDsSRRecordingInfo, filename))
        .def_property("dirpath", STRING_CHAR_ARRAY(NvDsSRRecordingInfo, dirpath))
        .def_readwrite("duration", &NvDsSRRecordingInfo::duration)
        .def_readwrite("containerType", &NvDsSRRecordingInfo::containerType)
        .def_readwrite("width", &NvDsSRRecordingInfo::width)
        .def_readwrite("height", &NvDsSRRecordingInfo::height)
        .def_readwrite("containsVideo", &NvDsSRRecordingInfo::containsVideo)
        .def_readwrite("channels", &NvDsSRRecordingInfo::channels)
        .def_readwrite("samplingRate", &NvDsSRRecordingInfo::samplingRate)
        .def_readwrite("containsAudio", &NvDsSRRecordingInfo::containsAudio)
        .def("cast", [](size_t data) {
                return (NvDsSRRecordingInfo *) data;
                },
                py::return_value_policy::reference)
        .def("cast", [](void* data) {
                return (NvDsSRRecordingInfo *) data;
                },
                py::return_value_policy::reference);
struct SRUserContext {
    int sessionid;
    char name[32];
};
py::class_<SRUserContext>(m, "SRUserContext")
        .def(py::init<>())
        .def_readwrite("sessionid", &SRUserContext::sessionid)
        .def_property("name", STRING_CHAR_ARRAY(SRUserContext, name))
        .def("cast", [](size_t data) {
                return (SRUserContext *) data;
                },
                py::return_value_policy::reference)
        .def("cast", [](void* data) {
                return (SRUserContext *) data;
                },
                py::return_value_policy::reference);
   }

pyds.cpp

        bindopticalflowmeta(m);
        bindutils(m);
        bindcustom(m);