def get_page_layout(page):
    assert isinstance(page, Poppler.Page)
    capsule = page.__gpointer__
    page_addr = PyCapsule_GetPointer(capsule, None)
    rectangles = LP_Poppler_Rectangle()
    n_rectangles = ctypes.c_uint(0)
    has_text = poppler_page_get_text_layout(page_addr, ctypes.byref(rectangles), ctypes.byref(n_rectangles))
    try:
        result = []
        if has_text:
            assert n_rectangles.value > 0, "n_rectangles.value > 0: {}".format(n_rectangles.value)
            assert rectangles, "rectangles: {}".format(rectangles)
            for i in range(n_rectangles.value):
                r = rectangles[i]
                result.append((r.x1, r.y1, r.x2, r.y2))
        return result
    finally:
        if rectangles:
            GLib.free(ctypes.addressof(rectangles.contents))
def get_page_layout(page):
    assert isinstance(page, Poppler.Page)
    capsule = page.__gpointer__
    page_addr = PyCapsule_GetPointer(capsule, None)
    rectangles = LP_Poppler_Rectangle()
    n_rectangles = ctypes.c_uint(0)
    has_text = poppler_page_get_text_layout(page_addr,
                                            ctypes.byref(rectangles),
                                            ctypes.byref(n_rectangles))
    try:
        result = []
        if has_text:
            assert n_rectangles.value > 0, "n_rectangles.value > 0: {}".format(
                n_rectangles.value)
            assert rectangles, "rectangles: {}".format(rectangles)
            for i in range(n_rectangles.value):
                r = rectangles[i]
                result.append((r.x1, r.y1, r.x2, r.y2))
        return result
    finally:
        if rectangles:
            GLib.free(ctypes.addressof(rectangles.contents))
Beispiel #3
0
def file_message_cb(bus, msg, data):
    file_bin = data
    t = msg.type

    if t == Gst.MessageType.ERROR:
        name = msg.src.get_path_string()
        err, debug = msg.parse_error()
        print("ERROR: from element %s: %s" % (name, err.message))
        if debug is not None:
            print("Additional debug info:\n%s" % debug)

        file_bin['rec_mutex'].lock()
        GLib.source_remove(file_bin['timer_id'])
        file_bin['timer_id'] = 0
        file_bin['filebin'].set_state(Gst.State.NULL)
        file_bin['rec_mutex'].unlock()
        GLib.free(err)
        GLib.free(debug)
        GLib.free(name)

    elif t == Gst.MessageType.WARNING:
        name = msg.src.get_path_string()
        err, debug = msg.parse_error()
        print("ERROR: from element %s: %s" % (name, err.message))
        if debug is not None:
            print("Additional debug info:\n%s" % debug)

        GLib.free(err)
        GLib.free(debug)
        GLib.free(name)

    elif t == Gst.MessageType.EOS:
        file_bin['rec_mutex'].lock()
        file_bin['filebin'].set_state(Gst.State.NULL)
        file_bin['rec_mutex'].unlock()

    else:
        pass

    return True
Beispiel #4
0
def snapshot_message_cb(bus, msg, data):
    snapshot_bin = data
    t = msg.type

    if t == Gst.MessageType.ERROR:
        name = msg.src.get_path_string()
        err, debug = msg.parse_error()
        print("ERROR: from element %s: %s" % (name, err.message))
        if debug is not None:
            print("Additional debug info:\n%s" % debug)

        snapshot_bin['snapshotbin'].set_state(Gst.State.NULL)
        GLib.free(err)
        GLib.free(debug)
        GLib.free(name)

    elif t == Gst.MessageType.WARNING:
        name = msg.src.get_path_string()
        err, debug = msg.parse_warning()
        print("ERROR: from element %s: %s" % (name, err.message))
        if debug is not None:
            print("Additional debug info:\n%s" % debug)

        GLib.free(err)
        GLib.free(debug)
        GLib.free(name)

    elif t == Gst.MessageType.EOS:
        snapshot_bin['snapshotbin'].set_state(Gst.State.NULL)
        snapshot_bin['snapshotbin'].unref()
        snapshot_bin['snapshotbin'] = None

    else:
        pass

    return True
def snapshot_message_cb(bus, msg, data):
    snapshot_bin = data
    t = msg.type
    
    if t == Gst.MessageType.ERROR:
        name = msg.src.get_path_string()
        err, debug = msg.parse_error()
        print("ERROR: from element %s: %s" %(name, err.message))
        if debug is not None:
            print("Additional debug info:\n%s" % debug)
            
        snapshot_bin['snapshotbin'].set_state(Gst.State.NULL)
        GLib.free(err)
        GLib.free(debug)
        GLib.free(name)
        
    elif t == Gst.MessageType.WARNING:
        name = msg.src.get_path_string()
        err, debug = msg.parse_warning()
        print("ERROR: from element %s: %s" %(name, err.message))
        if debug is not None:
            print("Additional debug info:\n%s" % debug)
            
        GLib.free(err)
        GLib.free(debug)
        GLib.free(name)
        
    elif t == Gst.MessageType.EOS:
        snapshot_bin['snapshotbin'].set_state(Gst.State.NULL)
        snapshot_bin['snapshotbin'].unref()
        snapshot_bin['snapshotbin'] = None
        
    else :
        pass
    
    return True
def file_message_cb(bus, msg, data):
    file_bin = data
    t = msg.type
    
    if t == Gst.MessageType.ERROR:
        name = msg.src.get_path_string()
        err, debug = msg.parse_error()
        print("ERROR: from element %s: %s" %(name, err.message))
        if debug is not None:
            print("Additional debug info:\n%s" % debug)
            
        file_bin['rec_mutex'].lock()
        GLib.source_remove(file_bin['timer_id'])
        file_bin['timer_id'] = 0
        file_bin['filebin'].set_state(Gst.State.NULL)
        file_bin['rec_mutex'].unlock()
        GLib.free(err)
        GLib.free(debug)
        GLib.free(name)
        
    elif t == Gst.MessageType.WARNING:
        name = msg.src.get_path_string()
        err, debug = msg.parse_error()
        print("ERROR: from element %s: %s" %(name, err.message))
        if debug is not None:
            print("Additional debug info:\n%s" % debug)
            
        GLib.free(err)
        GLib.free(debug)
        GLib.free(name)
        
    elif t == Gst.MessageType.EOS:
        file_bin['rec_mutex'].lock()
        file_bin['filebin'].set_state(Gst.State.NULL)
        file_bin['rec_mutex'].unlock()
        
    else:
        pass
    
    return True