Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
QTMovieFromURL.c
////////// |
// |
// File: QTMovieFromURL.c |
// |
// Contains: Sample code for opening a QuickTime movie specified by a URL. |
// |
// Written by: Tim Monroe |
// |
// Copyright: © 1998 by Apple Computer, Inc., all rights reserved. |
// |
// Change History (most recent first): |
// |
// <1> 10/29/98 rtm first file |
// |
// QuickTime Streaming has a URL data handler, which you can use to open movies that are |
// specified using uniform resource locators (URLs). A URL is the address of some resource |
// on the Internet or on a local disk. The QuickTime URL data handler can open http URLs, |
// ftp URLs, file URLs, and rtsp URLs. |
// |
// This snippet defines several functions. The function QTURL_NewMovieFromURL takes a URL |
// as a parameter and opens the movie file located at the specified location. You can use |
// the function QTURL_GetURLBasename to get the basename of the URL (which is suitable for |
// use as the title of the window you display the movie in). |
// |
////////// |
#include "QTMovieFromURL.h" |
////////// |
// |
// QTURL_NewMovieFromURL |
// Open the movie file referenced by the specified uniform resource locator (URL). |
// |
////////// |
Movie QTURL_NewMovieFromURL (char *theURL) |
{ |
Movie myMovie = NULL; |
Handle myHandle = NULL; |
Size mySize = 0; |
////////// |
// |
// copy the specified URL into a handle |
// |
////////// |
// get the size of the URL, plus the terminating null byte |
mySize = (Size)strlen(theURL) + 1; |
if (mySize == 0) |
goto bail; |
// allocate a new handle |
myHandle = NewHandleClear(mySize); |
if (myHandle == NULL) |
goto bail; |
// copy the URL into the handle |
BlockMove(theURL, *myHandle, mySize); |
////////// |
// |
// instantiate a movie from the specified URL |
// |
// the data reference that is passed to NewMovieFromDataRef is a handle |
// containing the text of the URL, *with* a terminating null byte; this |
// is an exception to the usual practice with data references (where you |
// need to pass a handle to a handle containing the relevant data) |
// |
////////// |
NewMovieFromDataRef(&myMovie, newMovieActive, NULL, myHandle, URLDataHandlerSubType); |
bail: |
if (myHandle != NULL) |
DisposeHandle(myHandle); |
return(myMovie); |
} |
////////// |
// |
// QTURL_GetURLBasename |
// Return the basename of the specified URL. |
// |
// The basename of a URL is the portion of the URL following the rightmost URL separator. This function |
// is useful for setting window titles of movies opened using the URL data handler to the basename of a |
// URL (just like MoviePlayer does). |
// |
// The caller is responsible for disposing of the pointer returned by this function (by calling free). |
// |
////////// |
char *QTURL_GetURLBasename (char *theURL) |
{ |
char *myBasename = NULL; |
short myLength = 0; |
short myIndex; |
// make sure we got a URL passed in |
if (theURL == NULL) |
goto bail; |
// get the length of the URL |
myLength = strlen(theURL); |
// find the position of the rightmost URL separator in theURL |
if (strchr(theURL, kURLSeparator) != NULL) { |
myIndex = myLength - 1; |
while (theURL[myIndex] != kURLSeparator) |
myIndex--; |
// calculate the length of the basename |
myLength = myLength - myIndex - 1; |
} else { |
// there is no rightmost URL separator in theURL; |
// set myIndex so that myIndex + 1 == 0, for the call to BlockMove below |
myIndex = -1; |
} |
// allocate space to hold the string that we return to the caller |
myBasename = malloc(myLength + 1); |
if (myBasename == NULL) |
goto bail; |
// copy into myBasename the substring of theURL from myIndex + 1 to the end |
BlockMove(&theURL[myIndex + 1], myBasename, myLength); |
myBasename[myLength] = '\0'; |
bail: |
return(myBasename); |
} |
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-01-14