205
203
MP4TrackId trackId;
206
204
const char *trackType;
208
trackId = MP4FindTrackId(mp4File, 0, NULL, 0);
209
trackType = MP4GetTrackType(mp4File, trackId);
212
((strcmp(trackType, MP4_AUDIO_TRACK_TYPE) == 0) ||
213
(strcmp(trackType, MP4_VIDEO_TRACK_TYPE) == 0) ||
214
(strcmp(trackType, MP4_OD_TRACK_TYPE) == 0)))
205
u_int32_t track_cur, tracks_num;
206
gboolean audio_or_video_found = FALSE;
208
tracks_num = MP4GetNumberOfTracks (mp4File, NULL, 0);
210
for (track_cur=0; track_cur < tracks_num; ++track_cur)
216
success = mp4_scan_soundcheck (mp4File, track);
212
trackId = MP4FindTrackId(mp4File, track_cur, NULL, 0);
213
trackType = MP4GetTrackType(mp4File, trackId);
216
((strcmp(trackType, MP4_AUDIO_TRACK_TYPE) == 0) ||
217
(strcmp(trackType, MP4_VIDEO_TRACK_TYPE) == 0) ||
218
(strcmp(trackType, MP4_OD_TRACK_TYPE) == 0)))
220
audio_or_video_found = TRUE;
221
success = mp4_scan_soundcheck (mp4File, track);
223
if (audio_or_video_found) break;
225
if (!audio_or_video_found)
220
227
gchar *filename = charset_to_utf8 (mp4FileName);
221
gtkpod_warning (_("'%s' does not appear to be a mp4 audio file.\n"),
229
_("'%s' does not appear to be a mp4 audio or video file.\n"),
223
231
g_free (filename);
225
233
MP4Close(mp4File);
252
260
MP4TrackId trackId;
253
261
const char *trackType;
255
trackId = MP4FindTrackId(mp4File, 0, NULL, 0);
256
trackType = MP4GetTrackType(mp4File, trackId);
258
((strcmp(trackType, MP4_AUDIO_TRACK_TYPE) == 0) ||
259
(strcmp(trackType, MP4_VIDEO_TRACK_TYPE) == 0) ||
260
(strcmp(trackType, MP4_OD_TRACK_TYPE) == 0)))
262
u_int32_t track_cur, tracks_num;
263
gboolean audio_or_video_found = FALSE;
264
/* gboolean artwork_found = FALSE; not used yet */
266
tracks_num = MP4GetNumberOfTracks (mp4File, NULL, 0);
268
for (track_cur=0; track_cur < tracks_num; ++track_cur)
263
guint16 numvalue, numvalue2;
264
MP4Duration trackDuration = MP4GetTrackDuration(mp4File, trackId);
266
(double)MP4ConvertFromTrackDuration(mp4File, trackId,
268
MP4_MSECS_TIME_SCALE);
269
guint32 avgBitRate = MP4GetTrackBitRate(mp4File, trackId);
270
guint32 samplerate = MP4GetTrackTimeScale(mp4File, trackId);
272
track = gp_track_new ();
274
track->tracklen = msDuration;
275
track->bitrate = avgBitRate/1000;
276
track->samplerate = samplerate;
277
value = strrchr (mp4FileName, '.');
280
if (g_strcasecmp (value, ".m4a") == 0)
281
track->filetype = g_strdup ("AAC audio file");
282
if (g_strcasecmp (value, ".m4p") == 0)
283
track->filetype = g_strdup ("Protected AAC audio file");
284
if (g_strcasecmp (value, ".m4b") == 0)
285
track->filetype = g_strdup ("AAC audio book file");
286
if (g_strcasecmp (value, ".mp4") == 0)
287
track->filetype = g_strdup ("MP4 video file");
289
if (prefs_get_int("readtags"))
291
if (MP4GetMetadataName(mp4File, &value) && value != NULL)
293
track->title = charset_to_utf8 (value);
296
if (MP4GetMetadataArtist(mp4File, &value) && value != NULL)
298
track->artist = charset_to_utf8 (value);
301
if (MP4GetMetadataWriter(mp4File, &value) && value != NULL)
303
track->composer = charset_to_utf8 (value);
306
if (MP4GetMetadataComment(mp4File, &value) && value != NULL)
308
track->comment = charset_to_utf8 (value);
311
if (MP4GetMetadataYear(mp4File, &value) && value != NULL)
313
track->year = atoi (value);
316
if (MP4GetMetadataAlbum(mp4File, &value) && value != NULL)
318
track->album = charset_to_utf8 (value);
321
if (MP4GetMetadataTrack(mp4File, &numvalue, &numvalue2))
323
track->track_nr = numvalue;
324
track->tracks = numvalue2;
326
if (MP4GetMetadataDisk(mp4File, &numvalue, &numvalue2))
328
track->cd_nr = numvalue;
329
track->cds = numvalue2;
331
if (MP4GetMetadataGenre(mp4File, &value) && value != NULL)
333
track->genre = charset_to_utf8 (value);
337
mp4_scan_soundcheck (mp4File, track);
270
trackId = MP4FindTrackId(mp4File, track_cur, NULL, 0);
271
trackType = MP4GetTrackType(mp4File, trackId);
273
(audio_or_video_found == FALSE) &&
274
((strcmp(trackType, MP4_AUDIO_TRACK_TYPE) == 0) ||
275
(strcmp(trackType, MP4_VIDEO_TRACK_TYPE) == 0) ||
276
(strcmp(trackType, MP4_OD_TRACK_TYPE) == 0)))
279
guint16 numvalue, numvalue2;
280
MP4Duration trackDuration = MP4GetTrackDuration(mp4File, trackId);
282
(double)MP4ConvertFromTrackDuration(mp4File, trackId,
284
MP4_MSECS_TIME_SCALE);
285
guint32 avgBitRate = MP4GetTrackBitRate(mp4File, trackId);
286
guint32 samplerate = MP4GetTrackTimeScale(mp4File, trackId);
288
track = gp_track_new ();
290
track->tracklen = msDuration;
291
track->bitrate = avgBitRate/1000;
292
track->samplerate = samplerate;
293
value = strrchr (mp4FileName, '.');
296
if (g_strcasecmp (value, ".m4a") == 0)
297
track->filetype = g_strdup ("AAC audio file");
298
if (g_strcasecmp (value, ".m4p") == 0)
299
track->filetype = g_strdup ("Protected AAC audio file");
300
if (g_strcasecmp (value, ".m4b") == 0)
301
track->filetype = g_strdup ("AAC audio book file");
302
if (g_strcasecmp (value, ".mp4") == 0)
303
track->filetype = g_strdup ("MP4 video file");
305
if (prefs_get_int("readtags"))
307
if (MP4GetMetadataName(mp4File, &value) && value != NULL)
309
track->title = charset_to_utf8 (value);
312
if (MP4GetMetadataArtist(mp4File, &value) && value != NULL)
314
track->artist = charset_to_utf8 (value);
317
if (MP4GetMetadataWriter(mp4File, &value) && value != NULL)
319
track->composer = charset_to_utf8 (value);
322
if (MP4GetMetadataComment(mp4File, &value) && value != NULL)
324
track->comment = charset_to_utf8 (value);
327
if (MP4GetMetadataYear(mp4File, &value) && value != NULL)
329
track->year = atoi (value);
332
if (MP4GetMetadataAlbum(mp4File, &value) && value != NULL)
334
track->album = charset_to_utf8 (value);
337
if (MP4GetMetadataTrack(mp4File, &numvalue, &numvalue2))
339
track->track_nr = numvalue;
340
track->tracks = numvalue2;
342
if (MP4GetMetadataDisk(mp4File, &numvalue, &numvalue2))
344
track->cd_nr = numvalue;
345
track->cds = numvalue2;
347
if (MP4GetMetadataGrouping(mp4File, &value) && value != NULL)
349
track->grouping = charset_to_utf8 (value);
352
if (MP4GetMetadataGenre(mp4File, &value) && value != NULL)
354
track->genre = charset_to_utf8 (value);
357
if (MP4GetMetadataTempo (mp4File, &numvalue))
359
track->BPM = numvalue;
362
mp4_scan_soundcheck (mp4File, track);
363
audio_or_video_found = TRUE;
365
if (prefs_get_int("coverart_apic"))
367
u_int8_t *image_data;
368
u_int32_t image_data_len;
369
if (MP4GetMetadataCoverArt (mp4File,
370
&image_data, &image_data_len))
374
/* FILE *file = fopen ("/tmp/tttt", "w");
375
fwrite (image_data, 1, image_data_len, file);
377
gp_track_set_thumbnails_from_data (track,
386
if (!audio_or_video_found)
341
388
gchar *filename = charset_to_utf8 (mp4FileName);
342
gtkpod_warning (_("'%s' does not appear to be a mp4 audio file.\n"),
390
_("'%s' does not appear to be a mp4 audio or video file.\n"),
344
392
g_free (filename);
346
394
MP4Close(mp4File);