MCPcopy Create free account
hub / github.com/cinder/Cinder / createPointerDataRefWithExtensions

Function createPointerDataRefWithExtensions

src/cinder/qtime/QuickTimeUtils.cpp:316–375  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

314}
315
316Handle createPointerDataRefWithExtensions( void *data, size_t dataSize, const string &fileName, const string &mimeType )
317{
318 OSStatus err = noErr;
319 Handle dataRef = NULL;
320 ComponentInstance dataRefHandler = NULL;
321
322 // First create a data reference handle for our data
323 dataRef = createPointerReferenceHandle( data, dataSize );
324 if( ! dataRef )
325 goto bail;
326
327 // Get a data handler for our data reference
328 err = OpenADataHandler(
329 dataRef, /* data reference */
330 PointerDataHandlerSubType, /* data ref. type */
331 NULL, /* anchor data ref. */
332 (OSType)0, /* anchor data ref. type */
333 NULL, /* time base for data handler */
334 kDataHCanRead, /* flag for data handler usage */
335 &dataRefHandler); /* returns the data handler */
336 if( err ) goto bail;
337
338 // We can add the filename to the data ref to help
339 // importer finding process. Find uses the extension.
340 // If we add a filetype or mimetype we must add a
341 // filename -- even if it is an empty string
342 if( ( ! fileName.empty() ) || ( ! mimeType.empty() ) ) {
343 err = ptrDataRefAddFileNameExtension( dataRefHandler, fileName );
344 if( err ) goto bail;
345 }
346
347 // to add MIME type information, add a classic atom followed by
348 // a Pascal string holding the MIME type
349 if ( ! mimeType.empty() ) {
350 err = ptrDataRefAddMIMETypeExtension( dataRefHandler, mimeType );
351 if( err ) goto bail;
352 }
353
354 // dispose old data ref handle because it does not contain our new changes
355 ::DisposeHandle( dataRef );
356 dataRef = NULL;
357
358 // re-acquire data reference from the data handler to get the new changes
359 err = ::DataHGetDataRef( dataRefHandler, &dataRef );
360 if( err ) goto bail;
361
362 ::CloseComponent( dataRefHandler );
363
364 return dataRef;
365 bail:
366 if( dataRefHandler ) {
367 ::CloseComponent(dataRefHandler);
368 }
369
370 if( dataRef ) { // make sure and dispose the data reference handle once we are done with it
371 ::DisposeHandle( dataRef );
372 }
373

Callers 1

openMovieFromMemoryFunction · 0.85

Calls 4

emptyMethod · 0.45

Tested by

no test coverage detected