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