camcordermmfplugin/filecomposer/Src/CamC3GPDataSinkImp.cpp
changeset 14 34024902876b
parent 2 c7e61a0077eb
child 10 6bc4220d7f67
equal deleted inserted replaced
2:c7e61a0077eb 14:34024902876b
  1004                                           (mp4_u32)iVideoFrameDuration,
  1004                                           (mp4_u32)iVideoFrameDuration,
  1005                                           (mp4_bool)iVideoBufferRandomAccessPoint);
  1005                                           (mp4_bool)iVideoBufferRandomAccessPoint);
  1006         if (error != MP4_OK)
  1006         if (error != MP4_OK)
  1007             {
  1007             {
  1008             PRINT((_L("CCamC3GPDataSinkImp::SinkStopL MP4ComposeWriteVideoFrame, error=%d"), error));
  1008             PRINT((_L("CCamC3GPDataSinkImp::SinkStopL MP4ComposeWriteVideoFrame, error=%d"), error));
  1009             User::Leave(KErrGeneral);
  1009             User::Leave(KErrWrite);
  1010             }
  1010             }
  1011         }
  1011         }
  1012 
  1012 
  1013 
  1013 
  1014     PRINT((_L("CCamC3GPDataSinkImp::SinkStopL video frames written")));
  1014     PRINT((_L("CCamC3GPDataSinkImp::SinkStopL video frames written")));
  1022                                            (mp4_u32)iAudioFramesInBuffer,
  1022                                            (mp4_u32)iAudioFramesInBuffer,
  1023                                            (mp4_u32)iAudioFramesInBuffer * KAudioFrameDuration);
  1023                                            (mp4_u32)iAudioFramesInBuffer * KAudioFrameDuration);
  1024         if (error != MP4_OK)
  1024         if (error != MP4_OK)
  1025             {
  1025             {
  1026             PRINT((_L("CCamC3GPDataSinkImp::SinkStopL MP4ComposeWriteAudioFrames, error=%d"), error));
  1026             PRINT((_L("CCamC3GPDataSinkImp::SinkStopL MP4ComposeWriteAudioFrames, error=%d"), error));
  1027             User::Leave(KErrGeneral);
  1027             User::Leave(KErrWrite);
  1028             }
  1028             }
  1029         }
  1029         }
  1030 
  1030 
  1031     PRINT((_L("CCamC3GPDataSinkImp::SinkStopL audio frames written")));
  1031     PRINT((_L("CCamC3GPDataSinkImp::SinkStopL audio frames written")));
  1032 
  1032 
  1034     error = MP4ComposeClose(iMP4Handle);
  1034     error = MP4ComposeClose(iMP4Handle);
  1035     iMP4Handle = NULL;
  1035     iMP4Handle = NULL;
  1036     if (error != MP4_OK)
  1036     if (error != MP4_OK)
  1037         {
  1037         {
  1038         PRINT((_L("CCamC3GPDataSinkImp::SinkStopL MP4ComposeClose, error=%d"), error));
  1038         PRINT((_L("CCamC3GPDataSinkImp::SinkStopL MP4ComposeClose, error=%d"), error));
  1039         TInt64 currentdiskspace = DriveFreeSpaceL();
  1039         TInt64 currentdiskspace = 0;
  1040 
  1040         TInt freespaceError = KErrNone;
  1041         if ( currentdiskspace < ((TInt64)KDiskSafetyLimit+iCriticalDiskVal+CurrentMetadataSize()) )
  1041         TRAP(freespaceError, currentdiskspace = DriveFreeSpaceL());
       
  1042 
       
  1043         if ( (freespaceError == KErrNone) &&
       
  1044              (currentdiskspace < ((TInt64)KDiskSafetyLimit+iCriticalDiskVal+CurrentMetadataSize())) )
  1042             {
  1045             {
  1043             PRINT((_L("CCamC3GPDataSinkImp::SinkStopL disk full, available: %d"), I64INT(currentdiskspace)));
  1046             PRINT((_L("CCamC3GPDataSinkImp::SinkStopL disk full, available: %d"), I64INT(currentdiskspace)));
  1044             iDiskFull = ETrue;
  1047             iDiskFull = ETrue;
  1045             User::Leave(KErrDiskFull);
  1048             User::Leave(KErrDiskFull);
  1046             }
  1049             }
  1047         else
  1050         else if ( freespaceError != KErrNone )
       
  1051             {
       
  1052             User::Leave(KErrWrite); // There was error reading free disk space - probably memory card read/write error.
       
  1053             }
       
  1054         else    
  1048             {
  1055             {
  1049             User::Leave(KErrGeneral);
  1056             User::Leave(KErrGeneral);
  1050             }
  1057             }
  1051         }
  1058         }
  1052 
  1059 
  1202                                                    (mp4_u32)iAudioFramesInBuffer,
  1209                                                    (mp4_u32)iAudioFramesInBuffer,
  1203                                                    (mp4_u32)iAudioFramesInBuffer * KAudioFrameDuration);
  1210                                                    (mp4_u32)iAudioFramesInBuffer * KAudioFrameDuration);
  1204                 PRINT((_L("CCamC3GPDataSinkImp::WriteBufferL AMR-NB MP4ComposeWriteAudioFrames, error=%d"), error));
  1211                 PRINT((_L("CCamC3GPDataSinkImp::WriteBufferL AMR-NB MP4ComposeWriteAudioFrames, error=%d"), error));
  1205                 if (error != MP4_OK)
  1212                 if (error != MP4_OK)
  1206                     {
  1213                     {
  1207                     User::Leave(KErrGeneral);
  1214                     User::Leave(KErrWrite);
  1208                     }
  1215                     }
  1209 
  1216 
  1210                 iAudioFramesInBuffer = 0;
  1217                 iAudioFramesInBuffer = 0;
  1211                 iAudioBufferFrameSize = 0;
  1218                 iAudioBufferFrameSize = 0;
  1212                 }
  1219                 }
  1228                                                (mp4_u32)KAACAudioFramesPerSample,
  1235                                                (mp4_u32)KAACAudioFramesPerSample,
  1229                                                (mp4_u32)KAACAudioFramesPerSample * iAudioAACFrameDuration);
  1236                                                (mp4_u32)KAACAudioFramesPerSample * iAudioAACFrameDuration);
  1230             PRINT((_L("CCamC3GPDataSinkImp::WriteBufferL AAC MP4ComposeWriteAudioFrames, error=%d"), error));
  1237             PRINT((_L("CCamC3GPDataSinkImp::WriteBufferL AAC MP4ComposeWriteAudioFrames, error=%d"), error));
  1231             if (error != MP4_OK)
  1238             if (error != MP4_OK)
  1232                 {
  1239                 {
  1233                 User::Leave(KErrGeneral);
  1240                 User::Leave(KErrWrite);
  1234                 }
  1241                 }
  1235             break;
  1242             break;
  1236             }
  1243             }
  1237         case CCMRMediaBuffer::EAudioAMRWB:
  1244         case CCMRMediaBuffer::EAudioAMRWB:
  1238             {
  1245             {
  1279                                               (mp4_u32)iVideoFrameDuration,
  1286                                               (mp4_u32)iVideoFrameDuration,
  1280                                               (mp4_bool)iVideoBufferRandomAccessPoint);
  1287                                               (mp4_bool)iVideoBufferRandomAccessPoint);
  1281             PRINT((_L("CCamC3GPDataSinkImp::WriteBufferL MP4ComposeWriteVideoFrame, error=%d"), error));
  1288             PRINT((_L("CCamC3GPDataSinkImp::WriteBufferL MP4ComposeWriteVideoFrame, error=%d"), error));
  1282             if (error != MP4_OK)
  1289             if (error != MP4_OK)
  1283                 {
  1290                 {
  1284                 User::Leave(KErrGeneral);
  1291                 User::Leave(KErrWrite);
  1285                 }
  1292                 }
  1286 
  1293 
  1287             if ((TUint)iBufferSize > iVideoBufferSize)
  1294             if ((TUint)iBufferSize > iVideoBufferSize)
  1288                 {
  1295                 {
  1289                 delete [] iVideoBuffer;
  1296                 delete [] iVideoBuffer;
  1306                                                             (mp4_u8 *)aBuffer->Data().Ptr(),
  1313                                                             (mp4_u8 *)aBuffer->Data().Ptr(),
  1307                                                             (mp4_u32)iBufferSize);
  1314                                                             (mp4_u32)iBufferSize);
  1308             if (error != MP4_OK)
  1315             if (error != MP4_OK)
  1309                 {
  1316                 {
  1310                 PRINT((_L("CCamC3GPDataSinkImp::WriteBufferL MP4ComposeWriteVideoDecoderSpecificInfo, error=%d"), error));
  1317                 PRINT((_L("CCamC3GPDataSinkImp::WriteBufferL MP4ComposeWriteVideoDecoderSpecificInfo, error=%d"), error));
  1311                 User::Leave(KErrGeneral);
  1318                 User::Leave(KErrWrite);
  1312                 }
  1319                 }
  1313 
  1320 
  1314             break;
  1321             break;
  1315             }
  1322             }
  1316         case CCMRMediaBuffer::EVideoH264NAL:
  1323         case CCMRMediaBuffer::EVideoH264NAL:
  1351                                               (mp4_u32)iVideoFrameDuration,
  1358                                               (mp4_u32)iVideoFrameDuration,
  1352                                               (mp4_bool)iVideoBufferRandomAccessPoint);
  1359                                               (mp4_bool)iVideoBufferRandomAccessPoint);
  1353             if (error != MP4_OK)
  1360             if (error != MP4_OK)
  1354                 {
  1361                 {
  1355                 PRINT((_L("CCamC3GPDataSinkImp::WriteBufferL MP4ComposeWriteVideoFrame, error=%d"), error));
  1362                 PRINT((_L("CCamC3GPDataSinkImp::WriteBufferL MP4ComposeWriteVideoFrame, error=%d"), error));
  1356                 User::Leave(KErrGeneral);
  1363                 User::Leave(KErrWrite);
  1357                 }
  1364                 }
  1358 
  1365 
  1359             if ((TUint)(iBufferSize) > iVideoBufferSize)
  1366             if ((TUint)(iBufferSize) > iVideoBufferSize)
  1360                 {
  1367                 {
  1361                 delete [] iVideoBuffer;
  1368                 delete [] iVideoBuffer;
  1410                                               (mp4_u32)iVideoFrameDuration,
  1417                                               (mp4_u32)iVideoFrameDuration,
  1411                                               (mp4_bool)iVideoBufferRandomAccessPoint);
  1418                                               (mp4_bool)iVideoBufferRandomAccessPoint);
  1412             if (error != MP4_OK)
  1419             if (error != MP4_OK)
  1413                 {
  1420                 {
  1414                 PRINT((_L("CCamC3GPDataSinkImp::WriteBufferL MP4ComposeWriteVideoFrame, error=%d"), error));
  1421                 PRINT((_L("CCamC3GPDataSinkImp::WriteBufferL MP4ComposeWriteVideoFrame, error=%d"), error));
  1415                 User::Leave(KErrGeneral);
  1422                 User::Leave(KErrWrite);
  1416                 }
  1423                 }
  1417 
  1424 
  1418             if ((TUint)(iBufferSize) > iVideoBufferSize)
  1425             if ((TUint)(iBufferSize) > iVideoBufferSize)
  1419                 {
  1426                 {
  1420                 delete [] iVideoBuffer;
  1427                 delete [] iVideoBuffer;
  1447 
  1454 
  1448 			CleanupStack::PopAndDestroy( outputAVCHeader );
  1455 			CleanupStack::PopAndDestroy( outputAVCHeader );
  1449             if (error != MP4_OK)
  1456             if (error != MP4_OK)
  1450                 {
  1457                 {
  1451                 PRINT((_L("CCamC3GPDataSinkImp::WriteBufferL MP4ComposeWriteVideoDecoderSpecificInfo, error=%d"), error));
  1458                 PRINT((_L("CCamC3GPDataSinkImp::WriteBufferL MP4ComposeWriteVideoDecoderSpecificInfo, error=%d"), error));
  1452                 User::Leave(KErrGeneral);
  1459                 User::Leave(KErrWrite);
  1453                 }
  1460                 }
  1454             break;
  1461             break;
  1455             }
  1462             }
  1456         case CCMRMediaBuffer::EVideoH264BytestreamDecSpecInfo:
  1463         case CCMRMediaBuffer::EVideoH264BytestreamDecSpecInfo:
  1457             {
  1464             {
  1470 
  1477 
  1471 			CleanupStack::PopAndDestroy( outputAVCHeader );
  1478 			CleanupStack::PopAndDestroy( outputAVCHeader );
  1472             if (error != MP4_OK)
  1479             if (error != MP4_OK)
  1473                 {
  1480                 {
  1474                 PRINT((_L("CCamC3GPDataSinkImp::WriteBufferL MP4ComposeWriteVideoDecoderSpecificInfo, error=%d"), error));
  1481                 PRINT((_L("CCamC3GPDataSinkImp::WriteBufferL MP4ComposeWriteVideoDecoderSpecificInfo, error=%d"), error));
  1475                 User::Leave(KErrGeneral);
  1482                 User::Leave(KErrWrite);
  1476                 }
  1483                 }
  1477             break;
  1484             break;
  1478             }
  1485             }
  1479         case CCMRMediaBuffer::EAudioDecSpecInfo:
  1486         case CCMRMediaBuffer::EAudioDecSpecInfo:
  1480             {
  1487             {
  1501                                                      (mp4_u8)KAACAudioFramesPerSample,
  1508                                                      (mp4_u8)KAACAudioFramesPerSample,
  1502                                                      (mp4_u16)KAudioModeSet);
  1509                                                      (mp4_u16)KAudioModeSet);
  1503                 if (error != MP4_OK)
  1510                 if (error != MP4_OK)
  1504                     {
  1511                     {
  1505                     PRINT((_L("CCamC3GPDataSinkImp::WriteBufferL MP4ComposeAddAudioDescription, error=%d"), error));
  1512                     PRINT((_L("CCamC3GPDataSinkImp::WriteBufferL MP4ComposeAddAudioDescription, error=%d"), error));
  1506                     User::Leave(KErrGeneral);
  1513                     User::Leave(KErrWrite);
  1507                     }
  1514                     }
  1508                 }
  1515                 }
  1509 			PRINT((_L("CCamC3GPDataSinkImp::WriteBufferL MP4ComposeWriteAudioDecoderSpecificInfo out"), error));
  1516 			PRINT((_L("CCamC3GPDataSinkImp::WriteBufferL MP4ComposeWriteAudioDecoderSpecificInfo out"), error));
  1510             break;
  1517             break;
  1511             }
  1518             }