guint * min_payload_len, guint * max_payload_len, guint * align);
/* function to convert bytes to a duration */
typedef GstClockTime (*GetDurationFunc) (GstBaseRTPAudioPayload * payload,
- guint bytes);
+ guint64 bytes);
struct _GstBaseRTPAudioPayloadPrivate
{
/* duration functions */
static GstClockTime
gst_base_rtp_audio_payload_get_frame_duration (GstBaseRTPAudioPayload * payload,
- guint bytes);
+ guint64 bytes);
static GstClockTime
gst_base_rtp_audio_payload_get_sample_duration (GstBaseRTPAudioPayload *
- payload, guint bytes);
+ payload, guint64 bytes);
static GstFlowReturn gst_base_rtp_audio_payload_handle_buffer (GstBaseRTPPayload
* payload, GstBuffer * buffer);
static GstClockTime
gst_base_rtp_audio_payload_get_frame_duration (GstBaseRTPAudioPayload *
- payload, guint bytes)
+ payload, guint64 bytes)
{
return gst_util_uint64_scale (bytes, payload->frame_duration * GST_MSECOND,
payload->frame_size);
maxptime_octets);
/* min number of bytes based on a given ptime, has to be a multiple
- of sample rate */
+ * of sample rate */
minptime_octets = gst_util_uint64_scale (basepayload->min_ptime * 8,
basepayload->clock_rate, payload->sample_size * GST_SECOND);
static GstClockTime
gst_base_rtp_audio_payload_get_sample_duration (GstBaseRTPAudioPayload *
- payload, guint bytes)
+ payload, guint64 bytes)
{
- return gst_util_uint64_scale (bytes * 8 * GST_SECOND,
- GST_BASE_RTP_PAYLOAD (payload)->clock_rate, payload->sample_size);
+ return (bytes * 8 * GST_SECOND) /
+ (GST_BASE_RTP_PAYLOAD (payload)->clock_rate * payload->sample_size);
}
static GstFlowReturn
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_EOS:
- /* FIXME. push remaining bytes */
+ /* FIXME. push remaining bytes? maybe not because it would violate the
+ * min-ptime. */
gst_adapter_clear (payload->priv->adapter);
break;
case GST_EVENT_FLUSH_STOP: