ext/movie.c in rmov-0.1.2 vs ext/movie.c in rmov-0.1.3
- old
+ new
@@ -58,33 +58,33 @@
you go through Movie.open.
*/
static VALUE movie_load_from_file(VALUE obj, VALUE filepath)
{
if (MOVIE(obj)) {
- rb_raise(eQuicktime, "Movie has already been loaded.");
+ rb_raise(eQuickTime, "Movie has already been loaded.");
} else {
OSErr err;
FSSpec fs;
short frefnum = -1;
short movie_resid = 0;
Movie *movie = ALLOC(Movie);
err = NativePathNameToFSSpec(RSTRING(filepath)->ptr, &fs, 0);
if (err != 0)
- rb_raise(eQuicktime, "Error %d occurred while reading file at %s", err, RSTRING(filepath)->ptr);
+ rb_raise(eQuickTime, "Error %d occurred while reading file at %s", err, RSTRING(filepath)->ptr);
err = OpenMovieFile(&fs, &frefnum, fsRdPerm);
if (err != 0)
- rb_raise(eQuicktime, "Error %d occurred while opening movie at %s", err, RSTRING(filepath)->ptr);
+ rb_raise(eQuickTime, "Error %d occurred while opening movie at %s", err, RSTRING(filepath)->ptr);
err = NewMovieFromFile(movie, frefnum, &movie_resid, 0, newMovieActive, 0);
if (err != 0)
- rb_raise(eQuicktime, "Error %d occurred while loading movie at %s", err, RSTRING(filepath)->ptr);
+ rb_raise(eQuickTime, "Error %d occurred while loading movie at %s", err, RSTRING(filepath)->ptr);
err = CloseMovieFile(frefnum);
if (err != 0)
- rb_raise(eQuicktime, "Error %d occurred while closing movie file at %s", err, RSTRING(filepath)->ptr);
+ rb_raise(eQuickTime, "Error %d occurred while closing movie file at %s", err, RSTRING(filepath)->ptr);
RMOVIE(obj)->movie = *movie;
return obj;
}
@@ -98,11 +98,11 @@
Movie.empty.
*/
static VALUE movie_load_empty(VALUE obj)
{
if (MOVIE(obj)) {
- rb_raise(eQuicktime, "Movie has already been loaded.");
+ rb_raise(eQuickTime, "Movie has already been loaded.");
} else {
RMOVIE(obj)->movie = NewMovie(0);
return obj;
}
}
@@ -331,11 +331,11 @@
FSSpec fs;
VALUE new_movie_obj = rb_obj_alloc(cMovie);
err = NativePathNameToFSSpec(RSTRING(filepath)->ptr, &fs, 0);
if (err != fnfErr)
- rb_raise(eQuicktime, "Error %d occurred while opening file for export at %s", err, RSTRING(filepath)->ptr);
+ rb_raise(eQuickTime, "Error %d occurred while opening file for export at %s", err, RSTRING(filepath)->ptr);
// TODO make these flags settable through an options hash
RMOVIE(new_movie_obj)->movie = FlattenMovieData(MOVIE(obj),
flattenDontInterleaveFlatten
| flattenCompressMovieResource
@@ -362,30 +362,30 @@
picture = GetMoviePict(MOVIE(obj), MOVIE_TIME(obj, frame_time));
err = NativePathNameToFSSpec(RSTRING(filepath)->ptr, &fs, 0);
if (err != fnfErr)
- rb_raise(eQuicktime, "Error %d occurred while opening file for export at %s.", err, RSTRING(filepath)->ptr);
+ rb_raise(eQuickTime, "Error %d occurred while opening file for export at %s.", err, RSTRING(filepath)->ptr);
// Convert the picture handle into a PICT file (still in a handle)
// by adding a 512-byte header to the start.
handle = NewHandleClear(512);
err = HandAndHand((Handle)picture, handle);
if (err != noErr)
- rb_raise(eQuicktime, "Error %d occurred while converting handle for pict export %s.", err, RSTRING(filepath)->ptr);
+ rb_raise(eQuickTime, "Error %d occurred while converting handle for pict export %s.", err, RSTRING(filepath)->ptr);
err = OpenADefaultComponent(GraphicsImporterComponentType, kQTFileTypePicture, &component);
if (err != noErr)
- rb_raise(eQuicktime, "Error %d occurred while opening picture component for %s.", err, RSTRING(filepath)->ptr);
+ rb_raise(eQuickTime, "Error %d occurred while opening picture component for %s.", err, RSTRING(filepath)->ptr);
err = GraphicsImportSetDataHandle(component, handle);
if (err != noErr)
- rb_raise(eQuicktime, "Error %d occurred while setting graphics importer data handle for %s.", err, RSTRING(filepath)->ptr);
+ rb_raise(eQuickTime, "Error %d occurred while setting graphics importer data handle for %s.", err, RSTRING(filepath)->ptr);
err = GraphicsImportExportImageFile(component, 0, 0, &fs, smSystemScript);
if (err != noErr)
- rb_raise(eQuicktime, "Error %d occurred while exporting pict to file %s.", err, RSTRING(filepath)->ptr);
+ rb_raise(eQuickTime, "Error %d occurred while exporting pict to file %s.", err, RSTRING(filepath)->ptr);
CloseComponent(component);
DisposeHandle(handle);
DisposeHandle((Handle)picture);
@@ -411,15 +411,31 @@
{
SetMoviePosterTime(MOVIE(obj), MOVIE_TIME(obj, seconds));
return Qnil;
}
+/*
+ call-seq: new_track(width, height) -> track
+
+ Creates a new track with the given width/height on the movie and returns it.
+
+ This method is generally not called directly. Instead you should call
+ new_video_track or new_audio_track. If you call method make sure to
+ call new_media on track to setup the media.
+*/
+static VALUE movie_new_track(VALUE obj, VALUE width, VALUE height)
+{
+ VALUE track_obj = rb_obj_alloc(cTrack);
+ RTRACK(track_obj)->track = NewMovieTrack(MOVIE(obj), NUM2INT(width), NUM2INT(height), kFullVolume);
+ return track_obj;
+}
+
void Init_quicktime_movie()
{
- VALUE mQuicktime;
- mQuicktime = rb_define_module("Quicktime");
- cMovie = rb_define_class_under(mQuicktime, "Movie", rb_cObject);
+ VALUE mQuickTime;
+ mQuickTime = rb_define_module("QuickTime");
+ cMovie = rb_define_class_under(mQuickTime, "Movie", rb_cObject);
rb_define_alloc_func(cMovie, movie_new);
rb_define_method(cMovie, "load_from_file", movie_load_from_file, 1);
rb_define_method(cMovie, "load_empty", movie_load_empty, 0);
rb_define_method(cMovie, "raw_duration", movie_raw_duration, 0);
rb_define_method(cMovie, "time_scale", movie_time_scale, 0);
@@ -436,6 +452,7 @@
rb_define_method(cMovie, "flatten", movie_flatten, 1);
rb_define_method(cMovie, "export_pict", movie_export_pict, 2);
rb_define_method(cMovie, "dispose", movie_dispose, 0);
rb_define_method(cMovie, "poster_time", movie_get_poster_time, 0);
rb_define_method(cMovie, "poster_time=", movie_set_poster_time, 1);
+ rb_define_method(cMovie, "new_track", movie_new_track, 2);
}