def merge_segments(segments, exif=b''):
    """Merges Exif with APP0 and APP1 manipulations.
    """
    if segments[1][0:2] == b'\xff\xe0' and segments[2][0:2
        ] == b'\xff\xe1' and segments[2][4:10] == b'Exif\x00\x00':
        if exif:
            segments[2] = exif
            segments.pop(1)
        elif exif is None:
            segments.pop(2)
        else:
            segments.pop(1)
    elif segments[1][0:2] == b'\xff\xe0':
        if exif:
            segments[1] = exif
    elif segments[1][0:2] == b'\xff\xe1' and segments[1][4:10
        ] == b'Exif\x00\x00':
        if exif:
            segments[1] = exif
        elif exif is None:
            segments.pop(1)
    elif exif:
        segments.insert(1, exif)
    return b''.join(segments)
