mmplugins/lib3gp/impl/src/mp4parse.cpp
branchRCL_3
changeset 23 545d349d14da
parent 11 d5f04de580b7
equal deleted inserted replaced
20:67584cc761d1 23:545d349d14da
  3324 		{
  3324 		{
  3325 		handle->asyncReader->Cancel();
  3325 		handle->asyncReader->Cancel();
  3326 		}
  3326 		}
  3327 	}
  3327 	}
  3328 
  3328 
       
  3329 extern EXPORT_C MP4Err MP4ParseGetID32Location(MP4Handle apihandle, mp4_u32& location)
       
  3330     { 
       
  3331     MP4HandleImp handle = (MP4HandleImp)apihandle;
       
  3332 
       
  3333     if (!handle)
       
  3334         {
       
  3335         return MP4_ERROR;
       
  3336         }
       
  3337 
       
  3338     if (!handle->metaDataComplete)
       
  3339         {
       
  3340         switch (metaDataAvailable(handle))
       
  3341             {
       
  3342             case 0:
       
  3343                 return MP4_NOT_AVAILABLE;
       
  3344             case 1:
       
  3345                 handle->cafError = KErrNone;
       
  3346                 if (readMetaData(handle) < 0)
       
  3347                     {
       
  3348 			      	// Reading of meta data failed, so free up any allocated memory
       
  3349 			  		freeFTYP(handle->ftyp);
       
  3350 			  		handle->ftyp = NULL;
       
  3351 					freeMOOV(handle->moov);
       
  3352 					handle->moov = NULL;
       
  3353                     if (handle->cafError != KErrNone)
       
  3354                         {// if CAF/DRM caused the error return it instead of generic errorcode.
       
  3355                         return handle->cafError;
       
  3356                         }
       
  3357                     else
       
  3358                         {
       
  3359                         return MP4_INVALID_INPUT_STREAM;
       
  3360                         }
       
  3361                     }
       
  3362                 handle->metaDataComplete = MP4TRUE;
       
  3363                 break;
       
  3364 
       
  3365 		    case -2:
       
  3366                 // Reading of FTYP meta data failed, so free up any allocated memory
       
  3367                 freeFTYP(handle->ftyp);
       
  3368                 handle->ftyp = NULL;
       
  3369                 return MP4_ERROR;
       
  3370 		      
       
  3371             case -1:
       
  3372             default:
       
  3373                 return MP4_ERROR;
       
  3374             }
       
  3375         }    
       
  3376 
       
  3377     if (!handle->moov)
       
  3378         return MP4_ERROR;
       
  3379 
       
  3380     metaAtom* meta = handle->moov->meta;
       
  3381     if (!meta)
       
  3382         return MP4_NOT_AVAILABLE;
       
  3383 
       
  3384     if (!meta->atomhdr)
       
  3385         return MP4_NOT_AVAILABLE;
       
  3386     
       
  3387     if(meta->ID32)
       
  3388         {
       
  3389         location = meta->ID32->atomcontentloc;     
       
  3390         }
       
  3391     else
       
  3392         {
       
  3393         return MP4_NOT_AVAILABLE;
       
  3394         }    
       
  3395 
       
  3396     return MP4_OK;
       
  3397     }
  3329 // End of File
  3398 // End of File