wavenc: small cleanups for toc handling

Don't add empty labl/note chunks. Always pass instance as the first param. Add more logging.
This commit is contained in:
Stefan Sauer 2013-04-12 12:31:30 +02:00
parent b17750ed9e
commit f4577ff492

View file

@ -651,7 +651,7 @@ gst_wavenc_is_cue_id_unique (guint32 id, GList * list)
}
static gboolean
gst_wavenc_parse_cue (guint32 id, GstTocEntry * entry, GstWavEnc * wavenc)
gst_wavenc_parse_cue (GstWavEnc * wavenc, guint32 id, GstTocEntry * entry)
{
gint64 start;
GstWavEncCue *cue;
@ -673,7 +673,7 @@ gst_wavenc_parse_cue (guint32 id, GstTocEntry * entry, GstWavEnc * wavenc)
}
static gboolean
gst_wavenc_parse_labl (guint32 id, GstTocEntry * entry, GstWavEnc * wavenc)
gst_wavenc_parse_labl (GstWavEnc * wavenc, guint32 id, GstTocEntry * entry)
{
gchar *tag;
GstTagList *tags;
@ -682,23 +682,30 @@ gst_wavenc_parse_labl (guint32 id, GstTocEntry * entry, GstWavEnc * wavenc)
g_return_val_if_fail (entry != NULL, FALSE);
tags = gst_toc_entry_get_tags (entry);
if (tags != NULL) {
if (!gst_tag_list_get_string (tags, GST_TAG_TITLE, &tag))
return FALSE;
if (!tags) {
GST_INFO_OBJECT (wavenc, "no tags for entry: %d", id);
return FALSE;
}
if (!gst_tag_list_get_string (tags, GST_TAG_TITLE, &tag)) {
GST_INFO_OBJECT (wavenc, "no title tag for entry: %d", id);
return FALSE;
}
labl = g_new (GstWavEncLabl, 1);
memcpy (labl->chunk_id, "labl", 4);
labl->chunk_data_size = 4 + strlen (tag) + 1;
labl->cue_point_id = id;
labl->text = tag;
GST_DEBUG_OBJECT (wavenc, "got labl: '%s'", tag);
wavenc->labls = g_list_append (wavenc->labls, labl);
return TRUE;
}
static gboolean
gst_wavenc_parse_note (guint32 id, GstTocEntry * entry, GstWavEnc * wavenc)
gst_wavenc_parse_note (GstWavEnc * wavenc, guint32 id, GstTocEntry * entry)
{
gchar *tag;
GstTagList *tags;
@ -706,9 +713,13 @@ gst_wavenc_parse_note (guint32 id, GstTocEntry * entry, GstWavEnc * wavenc)
g_return_val_if_fail (entry != NULL, FALSE);
tags = gst_toc_entry_get_tags (entry);
if (tags != NULL) {
if (!gst_tag_list_get_string (tags, GST_TAG_COMMENT, &tag))
return FALSE;
if (!tags) {
GST_INFO_OBJECT (wavenc, "no tags for entry: %d", id);
return FALSE;
}
if (!gst_tag_list_get_string (tags, GST_TAG_COMMENT, &tag)) {
GST_INFO_OBJECT (wavenc, "no comment tag for entry: %d", id);
return FALSE;
}
note = g_new (GstWavEncNote, 1);
@ -717,6 +728,8 @@ gst_wavenc_parse_note (guint32 id, GstTocEntry * entry, GstWavEnc * wavenc)
note->cue_point_id = id;
note->text = tag;
GST_DEBUG_OBJECT (wavenc, "got note: '%s'", tag);
wavenc->notes = g_list_append (wavenc->notes, note);
return TRUE;
@ -825,6 +838,7 @@ gst_wavenc_write_toc (GstWavEnc * wavenc)
}
ncues = g_list_length (list);
GST_DEBUG_OBJECT (wavenc, "number of cue entries: %d", ncues);
while (list) {
guint32 id = 0;
@ -842,9 +856,9 @@ gst_wavenc_write_toc (GstWavEnc * wavenc)
id = g_random_int ();
} while (!gst_wavenc_is_cue_id_unique (id, wavenc->cues));
}
gst_wavenc_parse_cue (id, entry, wavenc);
gst_wavenc_parse_labl (id, entry, wavenc);
gst_wavenc_parse_note (id, entry, wavenc);
gst_wavenc_parse_cue (wavenc, id, entry);
gst_wavenc_parse_labl (wavenc, id, entry);
gst_wavenc_parse_note (wavenc, id, entry);
list = g_list_next (list);
}