Update of /cvsroot/gtkpod/gtkpod/src
In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv19267/src

Modified Files:
        mp4file.c 
Log Message:
        * src/mp4file.c: don't assume that the audio track is track
          0. Instead cycle through all tracks until an audio or video
          track is found.



Index: mp4file.c
===================================================================
RCS file: /cvsroot/gtkpod/gtkpod/src/mp4file.c,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -d -r1.34 -r1.35
--- mp4file.c   18 Sep 2006 07:10:44 -0000      1.34
+++ mp4file.c   14 Oct 2006 13:37:02 -0000      1.35
@@ -1,4 +1,4 @@
-/* Time-stamp: <2006-09-18 16:03:15 jcs>
+/* Time-stamp: <2006-10-14 20:42:36 jcs>
 |
 |  Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net>
 |  Part of the gtkpod project.
@@ -204,22 +204,32 @@
     {
        MP4TrackId trackId;
        const char *trackType;
+       u_int32_t track_cur, tracks_num;
+       gboolean audio_or_video_found = FALSE;
 
-       trackId = MP4FindTrackId(mp4File, 0, NULL, 0);
-       trackType = MP4GetTrackType(mp4File, trackId);
+       tracks_num = MP4GetNumberOfTracks (mp4File, NULL,  0);
 
-       if (trackType &&
-           ((strcmp(trackType, MP4_AUDIO_TRACK_TYPE) == 0) ||
-            (strcmp(trackType, MP4_VIDEO_TRACK_TYPE) == 0) ||
-            (strcmp(trackType, MP4_OD_TRACK_TYPE) == 0)))
+       for (track_cur=0; track_cur < tracks_num; ++track_cur)
        {
-           success = mp4_scan_soundcheck (mp4File, track);
+           trackId = MP4FindTrackId(mp4File, track_cur, NULL, 0);
+           trackType = MP4GetTrackType(mp4File, trackId);
+
+           if (trackType &&
+               ((strcmp(trackType, MP4_AUDIO_TRACK_TYPE) == 0) ||
+                (strcmp(trackType, MP4_VIDEO_TRACK_TYPE) == 0) ||
+                (strcmp(trackType, MP4_OD_TRACK_TYPE) == 0)))
+           {
+               audio_or_video_found = TRUE;
+               success = mp4_scan_soundcheck (mp4File, track);
+           }
+           if (audio_or_video_found) break;
        }
-       else
+       if (!audio_or_video_found)
        {
            gchar *filename = charset_to_utf8 (mp4FileName);
-           gtkpod_warning (_("'%s' does not appear to be a mp4 audio file.\n"),
-                           filename);
+           gtkpod_warning (
+               _("'%s' does not appear to be a mp4 audio or video file.\n"),
+               filename);
            g_free (filename);
        }
        MP4Close(mp4File);
@@ -251,96 +261,107 @@
     {
        MP4TrackId trackId;
        const char *trackType;
+       u_int32_t track_cur, tracks_num;
+       gboolean audio_or_video_found = FALSE;
+/*     gboolean artwork_found = FALSE; not used yet */
 
-       trackId = MP4FindTrackId(mp4File, 0, NULL, 0);
-       trackType = MP4GetTrackType(mp4File, trackId);
-       if (trackType &&
-           ((strcmp(trackType, MP4_AUDIO_TRACK_TYPE) == 0) ||
-            (strcmp(trackType, MP4_VIDEO_TRACK_TYPE) == 0) ||
-            (strcmp(trackType, MP4_OD_TRACK_TYPE) == 0)))
-       {
-           gchar *value;
-           guint16 numvalue, numvalue2;
-           MP4Duration trackDuration = MP4GetTrackDuration(mp4File, trackId);
-           double msDuration = 
-               (double)MP4ConvertFromTrackDuration(mp4File, trackId,
-                                                   trackDuration,
-                                                   MP4_MSECS_TIME_SCALE);
-           guint32 avgBitRate = MP4GetTrackBitRate(mp4File, trackId);
-           guint32 samplerate = MP4GetTrackTimeScale(mp4File, trackId);
-
-           track = gp_track_new ();
+       tracks_num = MP4GetNumberOfTracks (mp4File, NULL,  0);
 
-           track->tracklen = msDuration;
-           track->bitrate = avgBitRate/1000;
-           track->samplerate = samplerate;
-           value = strrchr (mp4FileName, '.');
-           if (value)
-           {
-               if (g_strcasecmp (value, ".m4a") == 0)
-                   track->filetype = g_strdup ("AAC audio file");
-               if (g_strcasecmp (value, ".m4p") == 0)
-                   track->filetype = g_strdup ("Protected AAC audio file");
-               if (g_strcasecmp (value, ".m4b") == 0)
-                   track->filetype = g_strdup ("AAC audio book file");
-               if (g_strcasecmp (value, ".mp4") == 0)
-                   track->filetype = g_strdup ("MP4 video file");
-           }
-           if (prefs_get_int("readtags"))
+       for (track_cur=0; track_cur < tracks_num; ++track_cur)
+       {
+           trackId = MP4FindTrackId(mp4File, track_cur, NULL, 0);
+           trackType = MP4GetTrackType(mp4File, trackId);
+           if (trackType &&
+               (audio_or_video_found == FALSE) &&
+               ((strcmp(trackType, MP4_AUDIO_TRACK_TYPE) == 0) ||
+                (strcmp(trackType, MP4_VIDEO_TRACK_TYPE) == 0) ||
+                (strcmp(trackType, MP4_OD_TRACK_TYPE) == 0)))
            {
-               if (MP4GetMetadataName(mp4File, &value) && value != NULL)
-               {
-                   track->title = charset_to_utf8 (value);
-                   g_free(value);
-               }
-               if (MP4GetMetadataArtist(mp4File, &value) && value != NULL)
-               {
-                   track->artist = charset_to_utf8 (value);
-                   g_free(value);
-               }
-               if (MP4GetMetadataWriter(mp4File, &value) && value != NULL)
-               {
-                   track->composer = charset_to_utf8 (value);
-                   g_free(value);
-               }
-               if (MP4GetMetadataComment(mp4File, &value) && value != NULL)
-               {
-                   track->comment = charset_to_utf8 (value);
-                   g_free(value);
-               }
-               if (MP4GetMetadataYear(mp4File, &value) && value != NULL)
-               {
-                   track->year = atoi (value);
-                   g_free(value);
-               }
-               if (MP4GetMetadataAlbum(mp4File, &value) && value != NULL)
-               {
-                   track->album = charset_to_utf8 (value);
-                   g_free(value);
-               }
-               if (MP4GetMetadataTrack(mp4File, &numvalue, &numvalue2))
-               {
-                   track->track_nr = numvalue;
-                   track->tracks = numvalue2;
-               }
-               if (MP4GetMetadataDisk(mp4File, &numvalue, &numvalue2))
+               gchar *value;
+               guint16 numvalue, numvalue2;
+               MP4Duration trackDuration = MP4GetTrackDuration(mp4File, 
trackId);
+               double msDuration = 
+                   (double)MP4ConvertFromTrackDuration(mp4File, trackId,
+                                                       trackDuration,
+                                                       MP4_MSECS_TIME_SCALE);
+               guint32 avgBitRate = MP4GetTrackBitRate(mp4File, trackId);
+               guint32 samplerate = MP4GetTrackTimeScale(mp4File, trackId);
+               
+               track = gp_track_new ();
+               
+               track->tracklen = msDuration;
+               track->bitrate = avgBitRate/1000;
+               track->samplerate = samplerate;
+               value = strrchr (mp4FileName, '.');
+               if (value)
                {
-                   track->cd_nr = numvalue;
-                   track->cds = numvalue2;
+                   if (g_strcasecmp (value, ".m4a") == 0)
+                       track->filetype = g_strdup ("AAC audio file");
+                   if (g_strcasecmp (value, ".m4p") == 0)
+                       track->filetype = g_strdup ("Protected AAC audio file");
+                   if (g_strcasecmp (value, ".m4b") == 0)
+                       track->filetype = g_strdup ("AAC audio book file");
+                   if (g_strcasecmp (value, ".mp4") == 0)
+                       track->filetype = g_strdup ("MP4 video file");
                }
-               if (MP4GetMetadataGenre(mp4File, &value) && value != NULL)
+               if (prefs_get_int("readtags"))
                {
-                   track->genre = charset_to_utf8 (value);
-                   g_free(value);
+                   if (MP4GetMetadataName(mp4File, &value) && value != NULL)
+                   {
+                       track->title = charset_to_utf8 (value);
+                       g_free(value);
+                   }
+                   if (MP4GetMetadataArtist(mp4File, &value) && value != NULL)
+                   {
+                       track->artist = charset_to_utf8 (value);
+                       g_free(value);
+                   }
+                   if (MP4GetMetadataWriter(mp4File, &value) && value != NULL)
+                   {
+                       track->composer = charset_to_utf8 (value);
+                       g_free(value);
+                   }
+                   if (MP4GetMetadataComment(mp4File, &value) && value != NULL)
+                   {
+                       track->comment = charset_to_utf8 (value);
+                       g_free(value);
+                   }
+                   if (MP4GetMetadataYear(mp4File, &value) && value != NULL)
+                   {
+                       track->year = atoi (value);
+                       g_free(value);
+                   }
+                   if (MP4GetMetadataAlbum(mp4File, &value) && value != NULL)
+                   {
+                       track->album = charset_to_utf8 (value);
+                       g_free(value);
+                   }
+                   if (MP4GetMetadataTrack(mp4File, &numvalue, &numvalue2))
+                   {
+                       track->track_nr = numvalue;
+                       track->tracks = numvalue2;
+                   }
+                   if (MP4GetMetadataDisk(mp4File, &numvalue, &numvalue2))
+                   {
+                       track->cd_nr = numvalue;
+                       track->cds = numvalue2;
+                   }
+                   if (MP4GetMetadataGenre(mp4File, &value) && value != NULL)
+                   {
+                       track->genre = charset_to_utf8 (value);
+                       g_free(value);
+                   }
                }
+               mp4_scan_soundcheck (mp4File, track);
+               audio_or_video_found = TRUE;
            }
-           mp4_scan_soundcheck (mp4File, track);
        }
-       else
+       if (!audio_or_video_found)
        {
            gchar *filename = charset_to_utf8 (mp4FileName);
-           gtkpod_warning (_("'%s' does not appear to be a mp4 audio file.\n"),
-                           filename);
+           gtkpod_warning (
+               _("'%s' does not appear to be a mp4 audio or video file.\n"),
+               filename);
            g_free (filename);
        }
        MP4Close(mp4File);


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
gtkpod-cvs2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2

Reply via email to