diff options
Diffstat (limited to 'ext/ofa')
-rw-r--r-- | ext/ofa/gstofa.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/ext/ofa/gstofa.c b/ext/ofa/gstofa.c index d1be48635..a18d7e352 100644 --- a/ext/ofa/gstofa.c +++ b/ext/ofa/gstofa.c @@ -117,16 +117,27 @@ create_fingerprint (GstOFA * ofa) GstBuffer *buf; gint rate = GST_AUDIO_FILTER (ofa)->format.rate; gint channels = GST_AUDIO_FILTER (ofa)->format.channels; - gint endianness = - (GST_AUDIO_FILTER (ofa)->format. - bigend) ? OFA_BIG_ENDIAN : OFA_LITTLE_ENDIAN; + gint endianness; GstTagList *tags; + guint available; + + available = gst_adapter_available (ofa->adapter); + + if (available == 0) { + GST_WARNING_OBJECT (ofa, "No data to take fingerprint from"); + ofa->record = FALSE; + return; + } + + if (GST_AUDIO_FILTER (ofa)->format.bigend) + endianness = OFA_BIG_ENDIAN; + else + endianness = OFA_LITTLE_ENDIAN; + GST_DEBUG ("Generating fingerprint"); - buf = - gst_adapter_take_buffer (ofa->adapter, - gst_adapter_available (ofa->adapter)); + buf = gst_adapter_take_buffer (ofa->adapter, available); ofa->fingerprint = g_strdup (ofa_create_print (GST_BUFFER_DATA (buf), endianness, GST_BUFFER_SIZE (buf) / 2, rate, |