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