Beispiel #1
0
def push_data(data):
    num_samples = CHUNK_SIZE /2 # Because each sample is 16 bits 

    #Generate some psychodelic waveforms
    data.c += data.d
    data.d -= data.c / 1000.0
    freq = 1100.0 + 1000.0*data.d

    raw = array('H')
    for i in xrange(num_samples):
        data.a += data.b
        data.b -= data.a/freq
        a5 = (int(500 * data.a))% 65535
        raw.append(a5)
    data.num_samples += num_samples
    buffer = gst.Buffer(raw.tostring())

    #Set its timestamp and duration
    buffer.timestamp = gst.util_uint64_scale(data.num_samples, gst.SECOND, SAMPLE_RATE)
    buffer.duration = gst.util_uint64_scale(CHUNK_SIZE, gst.SECOND, SAMPLE_RATE)

    #Push the buffer into the appsrc
    ret = data.app_source.emit("push-buffer", buffer)
    if (ret != gst.FLOW_OK):
        return False
    return True
Beispiel #2
0
def numpy_array_to_gst_buffer(frames, chunk_size, num_samples, sample_rate):
    from gst import Buffer
    """ gstreamer buffer to numpy array conversion """
    buf = Buffer(getbuffer(frames.astype("float32")))
    #Set its timestamp and duration
    buf.timestamp = gst.util_uint64_scale(num_samples, gst.SECOND, sample_rate)
    buf.duration = gst.util_uint64_scale(chunk_size, gst.SECOND, sample_rate)
    return buf
Beispiel #3
0
def numpy_array_to_gst_buffer(frames, chunk_size, num_samples, sample_rate):
    from gst import Buffer
    """ gstreamer buffer to numpy array conversion """
    buf = Buffer(getbuffer(frames.astype("float32")))
    # Set its timestamp and duration
    buf.timestamp = gst.util_uint64_scale(num_samples, gst.SECOND, sample_rate)
    buf.duration = gst.util_uint64_scale(chunk_size, gst.SECOND, sample_rate)
    return buf
Beispiel #4
0
def numpy_array_to_gst_buffer(frames, CHUNK_SIZE, num_samples, SAMPLE_RATE):
    from gst import Buffer

    """ gstreamer buffer to numpy array conversion """
    buf = Buffer(getbuffer(frames.astype("float32")))
    # Set its timestamp and duration
    buf.timestamp = gst.util_uint64_scale(num_samples, gst.SECOND, SAMPLE_RATE)
    buf.duration = gst.util_uint64_scale(CHUNK_SIZE, gst.SECOND, SAMPLE_RATE)

    return buf
Beispiel #5
0
def calculate_duration(num_samples, sample_rate):
    """Determine duration of samples using GStreamer helper for precise
    math."""
    return gst.util_uint64_scale(num_samples, gst.SECOND, sample_rate)