From a68df043bfbc7f8f38332143577877846631eca4 Mon Sep 17 00:00:00 2001 From: Michał Cichoń Date: Tue, 25 Aug 2015 19:58:37 +0200 Subject: Update build environment - remove faad2 - remove mad - remove polarssl - remove pthreads - add libcurl - add vtparse with UTF8 support - update project to use Visual Studio 2015 --- faad2/src/plugins/xmms/src/mp4_utils.c | 469 --------------------------------- 1 file changed, 469 deletions(-) delete mode 100644 faad2/src/plugins/xmms/src/mp4_utils.c (limited to 'faad2/src/plugins/xmms/src/mp4_utils.c') diff --git a/faad2/src/plugins/xmms/src/mp4_utils.c b/faad2/src/plugins/xmms/src/mp4_utils.c deleted file mode 100644 index a517963..0000000 --- a/faad2/src/plugins/xmms/src/mp4_utils.c +++ /dev/null @@ -1,469 +0,0 @@ -/* - * some functions for MP4 files -*/ - -#include "mp4ff.h" -#include "faad.h" - -#include -#include -#include -#include -#include -#include -#include - -const char *mp4AudioNames[]= - { - "MPEG-1 Audio Layers 1,2 or 3", - "MPEG-2 low biterate (MPEG-1 extension) - MP3", - "MPEG-2 AAC Main Profile", - "MPEG-2 AAC Low Complexity profile", - "MPEG-2 AAC SSR profile", - "MPEG-4 audio (MPEG-4 AAC)", - 0 - }; - -/* MPEG-4 Audio types from 14496-3 Table 1.5.1 (from mp4.h)*/ -const char *mpeg4AudioNames[]= - { - "!!!!MPEG-4 Audio track Invalid !!!!!!!", - "MPEG-4 AAC Main profile", - "MPEG-4 AAC Low Complexity profile", - "MPEG-4 AAC SSR profile", - "MPEG-4 AAC Long Term Prediction profile", - "MPEG-4 AAC Scalable", - "MPEG-4 CELP", - "MPEG-4 HVXC", - "MPEG-4 Text To Speech", - "MPEG-4 Main Synthetic profile", - "MPEG-4 Wavetable Synthesis profile", - "MPEG-4 MIDI Profile", - "MPEG-4 Algorithmic Synthesis and Audio FX profile" - }; - -static GtkWidget *mp4_info_dialog = NULL; - -/* - * find AAC track -*/ - -int getAACTrack(mp4ff_t *infile) -{ - int i, rc; - int numTracks = mp4ff_total_tracks(infile); - - printf("total-tracks: %d\n", numTracks); - for(i=0; iread = read_callback; - mp4cb->seek = seek_callback; - mp4cb->user_data = mp4file; - return mp4cb; -} - -/* - * Function to display an info box for an mp4 file. - * This code is based heavily on fileinfo.c from the xmms mpg123 - * plugin, and the info box layout mimics that plugin. -*/ -void create_mp4_info_dialog (char *filename, FILE *mp4file, mp4ff_t *infile, gint mp4track) -{ - char *window_title, *value, *value2; - static GtkWidget *filename_entry, *title_entry, *artist_entry, *album_entry; - static GtkWidget *genre_entry, *year_entry, *track_entry, *comment_entry; - static GtkWidget *mp4_info_label; - - if (!mp4_info_dialog) - { - GtkWidget *dialog_vbox1, *vbox1, *hbox2, *hbox3, *hbox4; - GtkWidget *frame2, *frame3, *table1, *dialog_action_area1; - GtkWidget *filename_label, *title_label, *artist_label, *album_label; - GtkWidget *genre_label, *year_label, *track_label, *comment_label; - GtkWidget *close_button; - - mp4_info_dialog = gtk_dialog_new (); - gtk_object_set_data (GTK_OBJECT (mp4_info_dialog), "mp4_info_dialog", mp4_info_dialog); - gtk_window_set_policy (GTK_WINDOW (mp4_info_dialog), TRUE, TRUE, FALSE); - gtk_signal_connect(GTK_OBJECT (mp4_info_dialog), "destroy", - gtk_widget_destroyed, &mp4_info_dialog); - - dialog_vbox1 = GTK_DIALOG (mp4_info_dialog)->vbox; - gtk_object_set_data (GTK_OBJECT (mp4_info_dialog), "dialog_vbox1", dialog_vbox1); - gtk_container_set_border_width (GTK_CONTAINER (dialog_vbox1), 3); - - hbox2 = gtk_hbox_new (FALSE, 0); - gtk_widget_ref (hbox2); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "hbox2", hbox2, - (GtkDestroyNotify) gtk_widget_unref); - gtk_box_pack_start (GTK_BOX (dialog_vbox1), hbox2, FALSE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (hbox2), 3); - - filename_label = gtk_label_new ("Filename: "); - gtk_widget_ref (filename_label); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "filename_label", filename_label, - (GtkDestroyNotify) gtk_widget_unref); - gtk_box_pack_start (GTK_BOX (hbox2), filename_label, FALSE, FALSE, 0); - - filename_entry = gtk_entry_new (); - gtk_widget_ref (filename_entry); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "filename_entry", filename_entry, - (GtkDestroyNotify) gtk_widget_unref); - gtk_box_pack_start (GTK_BOX (hbox2), filename_entry, TRUE, TRUE, 0); - gtk_entry_set_editable (GTK_ENTRY (filename_entry), FALSE); - - hbox3 = gtk_hbox_new (FALSE, 0); - gtk_widget_ref (hbox3); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "hbox3", hbox3, - (GtkDestroyNotify) gtk_widget_unref); - gtk_box_pack_start (GTK_BOX (dialog_vbox1), hbox3, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (hbox3), 3); - - frame2 = gtk_frame_new ("Tag Info: "); - gtk_widget_ref (frame2); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "frame2", frame2, - (GtkDestroyNotify) gtk_widget_unref); - gtk_box_pack_start (GTK_BOX (hbox3), frame2, TRUE, TRUE, 0); - - table1 = gtk_table_new (6, 2, FALSE); - gtk_widget_ref (table1); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "table1", table1, - (GtkDestroyNotify) gtk_widget_unref); - gtk_container_add (GTK_CONTAINER (frame2), table1); - gtk_container_set_border_width (GTK_CONTAINER (table1), 5); - - comment_label = gtk_label_new ("Comment: "); - gtk_widget_ref (comment_label); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "comment_label", comment_label, - (GtkDestroyNotify) gtk_widget_unref); - gtk_table_attach (GTK_TABLE (table1), comment_label, 0, 1, 5, 6, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (GTK_EXPAND), 0, 0); - gtk_misc_set_alignment (GTK_MISC (comment_label), 1, 0.5); - - genre_label = gtk_label_new ("Genre: "); - gtk_widget_ref (genre_label); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "genre_label", genre_label, - (GtkDestroyNotify) gtk_widget_unref); - gtk_table_attach (GTK_TABLE (table1), genre_label, 0, 1, 4, 5, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (GTK_EXPAND), 0, 0); - gtk_misc_set_alignment (GTK_MISC (genre_label), 1, 0.5); - - album_label = gtk_label_new ("Album: "); - gtk_widget_ref (album_label); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "album_label", album_label, - (GtkDestroyNotify) gtk_widget_unref); - gtk_table_attach (GTK_TABLE (table1), album_label, 0, 1, 2, 3, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (GTK_EXPAND), 0, 0); - gtk_misc_set_alignment (GTK_MISC (album_label), 1, 0.5); - - title_label = gtk_label_new ("Title: "); - gtk_widget_ref (title_label); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "title_label", title_label, - (GtkDestroyNotify) gtk_widget_unref); - gtk_table_attach (GTK_TABLE (table1), title_label, 0, 1, 0, 1, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (GTK_EXPAND), 0, 0); - gtk_misc_set_alignment (GTK_MISC (title_label), 1, 0.5); - - artist_label = gtk_label_new ("Artist: "); - gtk_widget_ref (artist_label); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "artist_label", artist_label, - (GtkDestroyNotify) gtk_widget_unref); - gtk_table_attach (GTK_TABLE (table1), artist_label, 0, 1, 1, 2, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (GTK_EXPAND), 0, 0); - gtk_misc_set_alignment (GTK_MISC (artist_label), 1, 0.5); - - year_label = gtk_label_new ("Year: "); - gtk_widget_ref (year_label); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "year_label", year_label, - (GtkDestroyNotify) gtk_widget_unref); - gtk_table_attach (GTK_TABLE (table1), year_label, 0, 1, 3, 4, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (GTK_EXPAND), 0, 0); - gtk_misc_set_alignment (GTK_MISC (year_label), 1, 0.5); - - hbox4 = gtk_hbox_new (FALSE, 0); - gtk_widget_ref (hbox4); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "hbox4", hbox4, - (GtkDestroyNotify) gtk_widget_unref); - gtk_table_attach (GTK_TABLE (table1), hbox4, 1, 2, 3, 4, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (GTK_FILL), 0, 0); - - year_entry = gtk_entry_new (); - gtk_widget_ref (year_entry); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "year_entry", year_entry, - (GtkDestroyNotify) gtk_widget_unref); - gtk_box_pack_start (GTK_BOX (hbox4), year_entry, FALSE, FALSE, 0); - gtk_widget_set_usize (year_entry, 60, -2); - gtk_entry_set_editable (GTK_ENTRY (year_entry), FALSE); - - track_label = gtk_label_new (" Track: "); - gtk_widget_ref (track_label); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "track_label", track_label, - (GtkDestroyNotify) gtk_widget_unref); - gtk_box_pack_start (GTK_BOX (hbox4), track_label, FALSE, FALSE, 0); - gtk_misc_set_alignment (GTK_MISC (track_label), 1, 0.5); - - track_entry = gtk_entry_new (); - gtk_widget_ref (track_entry); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "track_entry", track_entry, - (GtkDestroyNotify) gtk_widget_unref); - gtk_box_pack_start (GTK_BOX (hbox4), track_entry, FALSE, FALSE, 0); - gtk_widget_set_usize (track_entry, 60, -2); - gtk_entry_set_editable (GTK_ENTRY (track_entry), FALSE); - - title_entry = gtk_entry_new (); - gtk_widget_ref (title_entry); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "title_entry", title_entry, - (GtkDestroyNotify) gtk_widget_unref); - gtk_table_attach (GTK_TABLE (table1), title_entry, 1, 2, 0, 1, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_entry_set_editable (GTK_ENTRY (title_entry), FALSE); - - artist_entry = gtk_entry_new (); - gtk_widget_ref (artist_entry); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "artist_entry", artist_entry, - (GtkDestroyNotify) gtk_widget_unref); - gtk_table_attach (GTK_TABLE (table1), artist_entry, 1, 2, 1, 2, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_entry_set_editable (GTK_ENTRY (artist_entry), FALSE); - - album_entry = gtk_entry_new (); - gtk_widget_ref (album_entry); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "album_entry", album_entry, - (GtkDestroyNotify) gtk_widget_unref); - gtk_table_attach (GTK_TABLE (table1), album_entry, 1, 2, 2, 3, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_entry_set_editable (GTK_ENTRY (album_entry), FALSE); - - genre_entry = gtk_entry_new (); - gtk_widget_ref (genre_entry); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "genre_entry", genre_entry, - (GtkDestroyNotify) gtk_widget_unref); - gtk_table_attach (GTK_TABLE (table1), genre_entry, 1, 2, 4, 5, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_entry_set_editable (GTK_ENTRY (genre_entry), FALSE); - - comment_entry = gtk_entry_new (); - gtk_widget_ref (comment_entry); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "comment_entry", comment_entry, - (GtkDestroyNotify) gtk_widget_unref); - gtk_table_attach (GTK_TABLE (table1), comment_entry, 1, 2, 5, 6, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_entry_set_editable (GTK_ENTRY (comment_entry), FALSE); - - frame3 = gtk_frame_new ("MP4 Info: "); - gtk_widget_ref (frame3); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "frame3", frame3, - (GtkDestroyNotify) gtk_widget_unref); - gtk_box_pack_start (GTK_BOX (hbox3), frame3, FALSE, TRUE, 0); - - vbox1 = gtk_vbox_new (FALSE, 0); - gtk_widget_ref (vbox1); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "vbox1", vbox1, - (GtkDestroyNotify) gtk_widget_unref); - gtk_container_add (GTK_CONTAINER (frame3), vbox1); - gtk_container_set_border_width (GTK_CONTAINER (vbox1), 5); - - mp4_info_label = gtk_label_new (""); - gtk_widget_ref (mp4_info_label); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "mp4_info_label", mp4_info_label, - (GtkDestroyNotify) gtk_widget_unref); - gtk_box_pack_start (GTK_BOX (vbox1), mp4_info_label, TRUE, TRUE, 0); - gtk_label_set_justify (GTK_LABEL (mp4_info_label), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment (GTK_MISC (mp4_info_label), 0, 0); - - dialog_action_area1 = GTK_DIALOG (mp4_info_dialog)->action_area; - gtk_object_set_data (GTK_OBJECT (mp4_info_dialog), "dialog_action_area1", dialog_action_area1); - gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area1), 4); - - close_button = gtk_button_new_with_label ("Close"); - gtk_widget_ref (close_button); - gtk_object_set_data_full (GTK_OBJECT (mp4_info_dialog), "close_button", close_button, - (GtkDestroyNotify) gtk_widget_unref); - gtk_box_pack_start (GTK_BOX (dialog_action_area1), close_button, FALSE, FALSE, 0); - - gtk_signal_connect_object (GTK_OBJECT (close_button), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), GTK_OBJECT (mp4_info_dialog)); - - } - - window_title = g_strdup_printf("File Info - %s", g_basename(filename)); - gtk_window_set_title (GTK_WINDOW (mp4_info_dialog), window_title); - g_free(window_title); - - gtk_entry_set_text (GTK_ENTRY (filename_entry), filename); - - gtk_entry_set_text (GTK_ENTRY (title_entry), ""); - gtk_entry_set_text (GTK_ENTRY (artist_entry), ""); - gtk_entry_set_text (GTK_ENTRY (album_entry), ""); - gtk_entry_set_text (GTK_ENTRY (year_entry), ""); - gtk_entry_set_text (GTK_ENTRY (track_entry), ""); - gtk_entry_set_text (GTK_ENTRY (genre_entry), ""); - gtk_entry_set_text (GTK_ENTRY (comment_entry), ""); - - if ((mp4ff_meta_get_title(infile, &value)) && value != NULL) { - gtk_entry_set_text (GTK_ENTRY(title_entry), value); - g_free(value); - } - if ((mp4ff_meta_get_artist(infile, &value)) && value != NULL) { - gtk_entry_set_text (GTK_ENTRY(artist_entry), value); - g_free(value); - } - if ((mp4ff_meta_get_album(infile, &value)) && value != NULL) { - gtk_entry_set_text (GTK_ENTRY(album_entry), value); - g_free(value); - } - if ((mp4ff_meta_get_date(infile, &value)) && value != NULL) { - gtk_entry_set_text (GTK_ENTRY(year_entry), value); - g_free(value); - } - if ((mp4ff_meta_get_track(infile, &value)) && value != NULL) { - if ((mp4ff_meta_get_totaltracks(infile, &value2)) && value2 != NULL) { - char *tmp = g_strdup_printf("%s of %s", value, value2); - g_free(value2); - g_free(value); - value = tmp; - } - gtk_entry_set_text (GTK_ENTRY(track_entry), value); - g_free(value); - } - if ((mp4ff_meta_get_genre(infile, &value)) && value != NULL) { - gtk_entry_set_text (GTK_ENTRY(genre_entry), value); - g_free(value); - } - if ((mp4ff_meta_get_comment(infile, &value)) && value != NULL) { - gtk_entry_set_text (GTK_ENTRY(comment_entry), value); - g_free(value); - } - - // Get the length of the track. - double track_duration = mp4ff_get_track_duration(infile, mp4track); - unsigned long time_scale = mp4ff_time_scale(infile, mp4track); - unsigned long length = (track_duration / time_scale); - int min = length / 60; - int sec = length % 60; - - // Get other info about the track. - unsigned long bitrate = mp4ff_get_avg_bitrate(infile, mp4track) / 1000; - unsigned long samplerate = mp4ff_get_sample_rate(infile, mp4track); - unsigned long channels = mp4ff_get_channel_count(infile, mp4track); - unsigned long audio_type = mp4ff_get_audio_type(infile, mp4track); - fseek(mp4file, 0, SEEK_END); - int filesize = ftell(mp4file) / 1024; - - value = g_strdup_printf("Length: %d:%d\nAvg. Bitrate: %ld kbps\nSample Rate: %ld Hz\nChannels: %ld\nAudio Type: %ld\nFile Size: %d KB", min, sec, bitrate, samplerate, channels, audio_type, filesize); - gtk_label_set_text (GTK_LABEL(mp4_info_label), value); - g_free(value); - - gtk_widget_show_all(mp4_info_dialog); -} - - -void getMP4info(char* filename, FILE* mp4file) -{ - mp4ff_callback_t* mp4cb; - mp4ff_t* infile; - gint mp4track; - - mp4cb = getMP4FF_cb(mp4file); - if ((infile = mp4ff_open_read_metaonly(mp4cb)) && - ((mp4track = getAACTrack(infile)) >= 0)){ - create_mp4_info_dialog (filename, mp4file, infile, mp4track); - } - if(infile) mp4ff_close(infile); - if(mp4cb) g_free(mp4cb); -} - -/* Get the xmms titlestring for the file based on metadata. -The following code was adapted from the gtkpod project, specifically -mp4file.c (C) Jorg Schuler, but written to use the mp4ff library. The -mpg123 input plugin for xmms was used as a guide for this function. - --Jason Arroyo, 2004 */ -char *getMP4title(mp4ff_t *infile, char *filename) { - char *ret=NULL; - gchar *value, *path, *temp; - - TitleInput *input; - XMMS_NEW_TITLEINPUT(input); - - // Fill in the TitleInput with the relevant data - // from the mp4 file that can be used to display the title. - mp4ff_meta_get_title(infile, &input->track_name); - mp4ff_meta_get_artist(infile, &input->performer); - mp4ff_meta_get_album(infile, &input->album_name); - if (mp4ff_meta_get_track(infile, &value) && value != NULL) { - input->track_number = atoi(value); - g_free(value); - } - if (mp4ff_meta_get_date(infile, &value) && value != NULL) { - input->year = atoi(value); - g_free(value); - } - mp4ff_meta_get_genre(infile, &input->genre); - mp4ff_meta_get_comment(infile, &input->comment); - input->file_name = g_strdup(g_basename(filename)); - path = g_strdup(filename); - temp = strrchr(path, '.'); - if (temp != NULL) {++temp;} - input->file_ext = g_strdup_printf("%s", temp); - temp = strrchr(path, '/'); - if (temp) {*temp = '\0';} - input->file_path = g_strdup_printf("%s/", path); - - // Use the default xmms title format to format the - // title from the above info. - ret = xmms_get_titlestring(xmms_get_gentitle_format(), input); - - g_free(input->track_name); - g_free(input->performer); - g_free(input->album_name); - g_free(input->genre); - g_free(input->comment); - g_free(input->file_name); - g_free(input->file_ext); - g_free(input->file_path); - g_free(input); - g_free(path); - - return ret; -} -- cgit v1.2.3