def METHOD_NAME(
    src_filename: str, dst_filename: str, driver_name: str, pixel_out: bool = False
):
    # ----------------------------------------------------------------------------
    # Open input file, and fetch GCPs.
    # ----------------------------------------------------------------------------
    ds = gdal.Open(src_filename)
    if ds is None:
        print(f"Unable to open {src_filename}")
        return 1
    gcp_srs = ds.GetGCPProjection()
    gcps = ds.GetGCPs()
    ds = None
    if gcps is None or not gcps:
        print(f"No GCPs on file {src_filename}!")
        return 1
    # ----------------------------------------------------------------------------
    # Create output file, and layer.
    # ----------------------------------------------------------------------------
    driver = ogr.GetDriverByName(driver_name)
    if driver is None:
        print(f"No driver named {driver_name} available.")
        return 1
    ds = driver.CreateDataSource(dst_filename)
    if not pixel_out and gcp_srs != "":
        srs = osr.SpatialReference()
        srs.ImportFromWkt(gcp_srs)
    else:
        srs = None
    if not pixel_out:
        geom_type = ogr.wkbPoint25D
    else:
        geom_type = ogr.wkbPoint
    layer = ds.CreateLayer("gcps", srs, geom_type=geom_type)
    if not pixel_out:
        fd = ogr.FieldDefn("Pixel", ogr.OFTReal)
        layer.CreateField(fd)
        fd = ogr.FieldDefn("Line", ogr.OFTReal)
        layer.CreateField(fd)
    else:
        fd = ogr.FieldDefn("X", ogr.OFTReal)
        layer.CreateField(fd)
        fd = ogr.FieldDefn("Y", ogr.OFTReal)
        layer.CreateField(fd)
        fd = ogr.FieldDefn("Z", ogr.OFTReal)
        layer.CreateField(fd)
    fd = ogr.FieldDefn("Id", ogr.OFTString)
    layer.CreateField(fd)
    fd = ogr.FieldDefn("Info", ogr.OFTString)
    layer.CreateField(fd)
    # ----------------------------------------------------------------------------
    # Write GCPs.
    # ----------------------------------------------------------------------------
    for gcp in gcps:
        feat = ogr.Feature(layer.GetLayerDefn())
        if not pixel_out:
            geom = ogr.Geometry(geom_type)
            feat.SetField("Pixel", gcp.GCPPixel)
            feat.SetField("Line", gcp.GCPLine)
            geom.SetPoint(0, gcp.GCPX, gcp.GCPY, gcp.GCPZ)
        else:
            geom = ogr.Geometry(geom_type)
            feat.SetField("X", gcp.GCPX)
            feat.SetField("Y", gcp.GCPY)
            feat.SetField("Z", gcp.GCPZ)
            geom.SetPoint(0, gcp.GCPPixel, gcp.GCPLine)
        feat.SetField("Id", gcp.Id)
        feat.SetField("Info", gcp.Info)
        feat.SetGeometryDirectly(geom)
        layer.CreateFeature(feat)
    feat = None
    ds.Destroy()