mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-02 12:32:29 +00:00
Use NULL for an empty GList instead of g_list_alloc(); fix memory leaks; s/LCPM/LPCM/; use g_strdup_printf() instead ...
Original commit message from CVS: Use NULL for an empty GList instead of g_list_alloc(); fix memory leaks; s/LCPM/LPCM/; use g_strdup_printf() instead of GString (easier to bulk free later)
This commit is contained in:
parent
d8c64315ae
commit
50b7c32b3e
2 changed files with 29 additions and 20 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
2005-01-17 Tim-Philipp Müller <tim at centricular dot net>
|
||||||
|
|
||||||
|
* ext/dvdread/stream_labels.c:
|
||||||
|
(dvdreadsrc_get_audio_stream_labels):
|
||||||
|
Use NULL for an empty GList instead of g_list_alloc(); fix
|
||||||
|
memory leaks; s/LCPM/LPCM/; use g_strdup_printf() instead
|
||||||
|
of GString (easier to bulk free later)
|
||||||
|
|
||||||
2005-01-17 Gergely Nagy <algernon@bonehunter.rulez.org>
|
2005-01-17 Gergely Nagy <algernon@bonehunter.rulez.org>
|
||||||
|
|
||||||
Reviewed by: Ronald S. Bultje <rbultje@ronald.bitfreak.net>
|
Reviewed by: Ronald S. Bultje <rbultje@ronald.bitfreak.net>
|
||||||
|
|
|
@ -164,69 +164,70 @@ void
|
||||||
dvdreadsrc_get_audio_stream_labels (ifo_handle_t * vts_file,
|
dvdreadsrc_get_audio_stream_labels (ifo_handle_t * vts_file,
|
||||||
GHashTable * languagelist)
|
GHashTable * languagelist)
|
||||||
{
|
{
|
||||||
GList *audio_stream_label = g_list_alloc ();
|
GList *audio_stream_label = NULL;
|
||||||
|
|
||||||
if (vts_file->vts_pgcit) {
|
if (vts_file->vts_pgcit) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* 8 audio streams maximum */
|
/* 8 audio streams maximum */
|
||||||
for (i = 0; i < 8; i++) {
|
for (i = 0; i < 8; i++) {
|
||||||
GString *streamlabel;
|
const gchar *format, *channel_nb, *language = NULL;
|
||||||
guchar *language, *format, *channel_nb;
|
|
||||||
guchar language_code[3] = "??";
|
guchar language_code[3] = "??";
|
||||||
|
gchar *streamlabel;
|
||||||
|
|
||||||
if (vts_file->vts_pgcit->pgci_srp[0].pgc->audio_control[i] & 0x8000) {
|
if (vts_file->vts_pgcit->pgci_srp[0].pgc->audio_control[i] & 0x8000) {
|
||||||
audio_attr_t *audio = &vts_file->vtsi_mat->vts_audio_attr[i];
|
audio_attr_t *audio = &vts_file->vtsi_mat->vts_audio_attr[i];
|
||||||
guint16 language_id = 0;
|
|
||||||
|
|
||||||
if (audio->lang_type == 1) {
|
if (audio->lang_type == 1) {
|
||||||
language_id = audio->lang_code;
|
language_code[0] = (audio->lang_code >> 8);
|
||||||
snprintf (language_code, 3, "%c%c", (language_id >> 8),
|
language_code[1] = (audio->lang_code & 0xFF);
|
||||||
(language_id & 0xFF));
|
language = g_hash_table_lookup (languagelist, language_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
language = g_hash_table_lookup (languagelist, language_code);
|
|
||||||
if (!language) {
|
if (!language) {
|
||||||
language = g_strdup ("?");
|
language = "?";
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (audio->audio_format) {
|
switch (audio->audio_format) {
|
||||||
case 0:
|
case 0:
|
||||||
format = g_strdup (_("Dolby AC-3"));
|
format = _("Dolby AC-3");
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
case 3:
|
case 3:
|
||||||
format = g_strdup (_("MPEG layer I, II or III"));
|
format = _("MPEG layer I, II or III");
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
format = g_strdup (_("LCPM"));
|
format = _("LPCM");
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
format = g_strdup (_("Digital Theatre System"));
|
format = _("Digital Theatre System");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
format = g_strdup ("?");
|
format = "?";
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (audio->channels) {
|
switch (audio->channels) {
|
||||||
case 1:
|
case 1:
|
||||||
channel_nb = g_strdup (_("Stereo"));
|
channel_nb = _("Stereo");
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
channel_nb = g_strdup (_("5.1"));
|
channel_nb = _("5.1");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
channel_nb = g_strdup ("?");
|
channel_nb = "?";
|
||||||
}
|
}
|
||||||
streamlabel = g_string_new ("");
|
|
||||||
g_string_printf (streamlabel, "%u : %s, %s %s", i + 1, language, format,
|
streamlabel = g_strdup_printf ("%u : %s, %s %s", i + 1, language,
|
||||||
channel_nb);
|
format, channel_nb);
|
||||||
audio_stream_label = g_list_append (audio_stream_label, streamlabel); /* "French, Dolby AC-3 Stereo" */
|
audio_stream_label = g_list_append (audio_stream_label, streamlabel); /* "French, Dolby AC-3 Stereo" */
|
||||||
|
|
||||||
printf ("%u : %s, %s %s\n", i + 1, language, format, channel_nb);
|
printf ("%u : %s, %s %s\n", i + 1, language, format, channel_nb);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_list_foreach (audio_stream_label, (GFunc) g_free, NULL);
|
||||||
|
g_list_free (audio_stream_label);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Reference in a new issue