ext/track.c in rmov-0.1.2 vs ext/track.c in rmov-0.1.3

- old
+ new

@@ -30,11 +30,11 @@ */ static VALUE track_load(VALUE obj, VALUE movie_obj, VALUE index_obj) { RTRACK(obj)->track = GetMovieIndTrack(MOVIE(movie_obj), NUM2INT(index_obj)); if (!RTRACK(obj)->track) - rb_raise(eQuicktime, "Unable to fetch track for movie at index %d", NUM2INT(index_obj)); + rb_raise(eQuickTime, "Unable to fetch track for movie at index %d", NUM2INT(index_obj)); return obj; } /* @@ -81,10 +81,12 @@ GetMediaHandlerDescription(TRACK_MEDIA(obj), &media_type, 0, 0); if (media_type == SoundMediaType) { return ID2SYM(rb_intern("audio")); } else if (media_type == VideoMediaType) { return ID2SYM(rb_intern("video")); + } else if (media_type == TextMediaType) { + return ID2SYM(rb_intern("text")); } else { return Qnil; } } @@ -186,16 +188,57 @@ { SetTrackOffset(TRACK(obj), TRACK_TIME(obj, seconds)); return Qnil; } +/* + call-seq: new_video_media + + Creates a new video media for this track. + + Generally this method is not called directly, instead you can make a + new video track using Movie#new_video_track. +*/ +static VALUE track_new_video_media(VALUE obj) +{ + NewTrackMedia(TRACK(obj), VideoMediaType, 600, 0, 0); + return obj; +} +/* + call-seq: new_audio_media + + Creates a new audio media for this track. + + Generally this method is not called directly, instead you can make a + new audio track using Movie#new_audio_track. +*/ +static VALUE track_new_audio_media(VALUE obj) +{ + NewTrackMedia(TRACK(obj), SoundMediaType, 44100, 0, 0); + return obj; +} + +/* + call-seq: new_text_media + + Creates a new text media for this track. + + Generally this method is not called directly, instead you can make a + new text track using Movie#new_text_track. +*/ +static VALUE track_new_text_media(VALUE obj) +{ + NewTrackMedia(TRACK(obj), TextMediaType, 600, 0, 0); + return obj; +} + void Init_quicktime_track() { - VALUE mQuicktime; - mQuicktime = rb_define_module("Quicktime"); - cTrack = rb_define_class_under(mQuicktime, "Track", rb_cObject); + VALUE mQuickTime; + mQuickTime = rb_define_module("QuickTime"); + cTrack = rb_define_class_under(mQuickTime, "Track", rb_cObject); rb_define_alloc_func(cTrack, track_new); rb_define_method(cTrack, "load_from_movie", track_load, 2); rb_define_method(cTrack, "raw_duration", track_raw_duration, 0); rb_define_method(cTrack, "time_scale", track_time_scale, 0); rb_define_method(cTrack, "frame_count", track_frame_count, 0); @@ -207,6 +250,9 @@ rb_define_method(cTrack, "disable", track_disable, 0); rb_define_method(cTrack, "volume", track_get_volume, 0); rb_define_method(cTrack, "volume=", track_set_volume, 1); rb_define_method(cTrack, "offset", track_get_offset, 0); rb_define_method(cTrack, "offset=", track_set_offset, 1); + rb_define_method(cTrack, "new_video_media", track_new_video_media, 0); + rb_define_method(cTrack, "new_audio_media", track_new_audio_media, 0); + rb_define_method(cTrack, "new_text_media", track_new_text_media, 0); }