Added parameter 'srcBufUsed' and 'dstBufUsed' to _IAudioEncoder::Encode()
authorJungYumin <y_m.jung@samsung.com>
Tue, 19 Mar 2013 08:29:54 +0000 (17:29 +0900)
committerJungYumin <y_m.jung@samsung.com>
Tue, 19 Mar 2013 08:41:40 +0000 (17:41 +0900)
Change-Id: I1753fde5a7304831cbfca79b1288e08bc8e44cdc
Signed-off-by: JungYumin <y_m.jung@samsung.com>
src/FMedia_AacEncoder.cpp
src/FMedia_AacEncoder.h
src/FMedia_AmrEncoder.cpp
src/FMedia_AmrEncoder.h
src/FMedia_AudioEncoderImpl.cpp
src/FMedia_IAudioEncoder.h

index 72a94c1..058b48f 100644 (file)
@@ -192,7 +192,7 @@ CATCH:
 }
 
 result
-_AacEncoder::Encode(const byte* srcBuf, int& srcBufLength, byte*& dstBuf, int& dstBufLength)
+_AacEncoder::Encode(const byte* srcBuf, int srcBufSize, int &srcBufUsed, byte* dstBuf, int dstBufSize, int &dstBufUsed)
 {
        result r = E_SUCCESS;
        int res = 0;
@@ -209,13 +209,13 @@ _AacEncoder::Encode(const byte* srcBuf, int& srcBufLength, byte*& dstBuf, int& d
 
        SysTryCatch(NID_MEDIA, srcBuf != null && dstBuf != null, r = E_INVALID_ARG, E_INVALID_ARG,
                           "[%s] Invalid argument is used: 0x%x %d %d 0x%x %d %d",
-                          GetErrorMessage(E_INVALID_ARG), srcBuf, srcBufLength, minSrcBufLength, dstBuf, dstBufLength, minDstBufLength);
+                          GetErrorMessage(E_INVALID_ARG), srcBuf, srcBufSize, minSrcBufLength, dstBuf, dstBufSize, minDstBufLength);
 
        //Partial frame encoding is supported hence no need of checking sourcebuf length.
-       SysTryCatch(NID_MEDIA, dstBufLength >= minDstBufLength,
+       SysTryCatch(NID_MEDIA, dstBufSize >= minDstBufLength,
                           r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY,
                           "[%s] Destination Buffer Length is less than FF_MIN_BUFFER_SIZE: 0x%x %d %d 0x%x %d %d",
-                          GetErrorMessage(E_OUT_OF_MEMORY), srcBuf, srcBufLength, minSrcBufLength, dstBuf, dstBufLength, minDstBufLength);
+                          GetErrorMessage(E_OUT_OF_MEMORY), srcBuf, srcBufSize, minSrcBufLength, dstBuf, dstBufSize, minDstBufLength);
 
        //Only AV_SAMPLE_FMT_FLT is supported by FFMpeg AAC Encoder hence Sample Format Conversion from S16 to Float
        if (__pCodecCtx->sample_fmt  == AV_SAMPLE_FMT_FLT)
@@ -233,13 +233,13 @@ _AacEncoder::Encode(const byte* srcBuf, int& srcBufLength, byte*& dstBuf, int& d
 
                memset(__pInputBuf,0,__pCodecCtx->frame_size * __pCodecCtx->channels * FLT_SAMPLE_SIZE);
 
-               if(srcBufLength >= minSrcBufLength)
+               if(srcBufSize >= minSrcBufLength)
                {
                        samples = audio_resample (__pResampleContext, (short *) __pInputBuf, (short *)srcBuf, __pCodecCtx->frame_size);
                }
                else
                {
-                       int sampleCount = srcBufLength/(__pCodecCtx->channels * S16_SAMPLE_SIZE);
+                       int sampleCount = srcBufSize/(__pCodecCtx->channels * S16_SAMPLE_SIZE);
                        samples = audio_resample (__pResampleContext, (short *) __pInputBuf, (short *)srcBuf,sampleCount);
 
                }
@@ -262,16 +262,16 @@ _AacEncoder::Encode(const byte* srcBuf, int& srcBufLength, byte*& dstBuf, int& d
                if(gotOutput)
                {
                        memcpy(dstBuf,outPacket.data,outPacket.size);
-                       dstBufLength = outPacket.size;
+                       dstBufUsed = outPacket.size;
                        av_free_packet(&outPacket);
                }
                else
                {
-                       dstBufLength = 0;
+                       dstBufUsed = 0;
                }
        }
 
-       srcBufLength = minSrcBufLength; //Input bytes used
+       srcBufUsed = minSrcBufLength; //Input bytes used
        return r;
 
 CATCH:
index 26451b5..8186178 100644 (file)
@@ -40,7 +40,7 @@ public:
 public:
        virtual result Construct(const Tizen::Base::Collection::HashMap* pOption = null);
 
-       virtual result Encode(const byte* srcBuf, int& srcBufLength, byte*& dstBuf, int& dstBufLength);
+       virtual result Encode(const byte* srcBuf, int srcBufSize, int& secBufUsed, byte* dstBuf, int dstBufSize, int &dstBufUsed);
 
        virtual result Reset(void);
 
index 3427a8e..22ed840 100644 (file)
@@ -128,7 +128,7 @@ CATCH:
 }
 
 result
-_AmrEncoder::Encode(const byte* srcBuf, int& srcBufLength, byte*& dstBuf, int& dstBufLength)
+_AmrEncoder::Encode(const byte* srcBuf, int srcBufSize, int &srcBufUsed, byte* dstBuf, int dstBufSize, int &dstBufUsed)
 {
        result r = E_SUCCESS;
        int res = 0;
@@ -138,14 +138,14 @@ _AmrEncoder::Encode(const byte* srcBuf, int& srcBufLength, byte*& dstBuf, int& d
 
        //Partial frame encoding is supported by the open core amr_nb library . So no need of checking sourcebuf length.
        SysTryCatch(NID_MEDIA, srcBuf != null && dstBuf != null
-                          && srcBufLength > 0 && dstBufLength > 0,
+                          && srcBufSize > 0 && dstBufSize > 0,
                           r = E_INVALID_ARG, E_INVALID_ARG,
                           "[E_INVALID_ARG] Invalid argument is used. 0x%x %d 0x%x %d",
-                          srcBuf, srcBufLength, dstBuf, dstBufLength);
+                          srcBuf, srcBufSize, dstBuf, dstBufSize);
 
        // Encoding the Audio  packet using the amr open core
        // Accomodating for destinationBuf less than encoded frame size.
-       if (dstBufLength >= DECODED_FRAME_SIZE )
+       if (dstBufSize >= DECODED_FRAME_SIZE )
        {
                res = Encoder_Interface_Encode(__pEnc, __encBitrate, (const short*)srcBuf, dstBuf, 0);
        }
@@ -156,15 +156,15 @@ _AmrEncoder::Encode(const byte* srcBuf, int& srcBufLength, byte*& dstBuf, int& d
 
        SysTryCatch(NID_MEDIA, res > 0, r = E_SYSTEM, E_SYSTEM,
                           "[%s] Amr Encoding Failed:%d", GetErrorMessage(E_SYSTEM), res);
-       SysTryCatch(NID_MEDIA, res <= dstBufLength, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY,
-                          "[%s] Amr Encoding Failed %d %d", GetErrorMessage(E_OUT_OF_MEMORY), res, dstBufLength);
+       SysTryCatch(NID_MEDIA, res <= dstBufSize, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY,
+                          "[%s] Amr Encoding Failed %d %d", GetErrorMessage(E_OUT_OF_MEMORY), res, dstBufSize);
 
-       if (dstBufLength < DECODED_FRAME_SIZE )
+       if (dstBufSize < DECODED_FRAME_SIZE )
        {
                memcpy(dstBuf, outBuf, res);
        }
-       srcBufLength = DECODED_FRAME_SIZE;
-       dstBufLength = res;
+       srcBufUsed = DECODED_FRAME_SIZE;
+       dstBufUsed = res;
        return r;
 
 CATCH:
index c7ea003..904110e 100644 (file)
@@ -40,7 +40,7 @@ public:
 public:
        virtual result Construct(const Tizen::Base::Collection::HashMap* pOption = null);
 
-       virtual result Encode(const byte* srcBuf, int& srcBufLength, byte*& dstBuf, int& dstBufLength);
+       virtual result Encode(const byte* srcBuf, int srcBufSize, int &srcBufUsed, byte* dstBuf, int dstBufSize, int &dstBufUsed);
 
        virtual result Reset(void);
 
index 16af53f..32ea667 100644 (file)
@@ -79,6 +79,8 @@ _AudioEncoderImpl::Encode(Tizen::Base::ByteBuffer& srcBuf, Tizen::Base::ByteBuff
        byte* pDstByte = null;
        int srcByteSize = 0;
        int dstByteSize = 0;
+       int srcByteUsed = 0;
+       int dstByteUsed = 0;
        int offset = 0;
 
        SysTryReturnResult(NID_MEDIA, __pEnc, E_INVALID_STATE, "not constructed");
@@ -91,27 +93,28 @@ _AudioEncoderImpl::Encode(Tizen::Base::ByteBuffer& srcBuf, Tizen::Base::ByteBuff
        SysTryCatch(NID_MEDIA, srcByteSize > 0 && dstByteSize > 0, r = E_INVALID_ARG, E_INVALID_ARG,
                           "[%s] Invalid argument is used. srcSize:%d dstSize:%d", GetErrorMessage(E_INVALID_ARG), srcByteSize, dstByteSize);\r
 
-       r = __pEnc->Encode(pSrcByte, srcByteSize, pDstByte, dstByteSize);
+       r = __pEnc->Encode(pSrcByte, srcByteSize, srcByteUsed, pDstByte, dstByteSize, dstByteUsed);
        SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Audio Encoder encode failed", GetErrorMessage(r));\r
 
        offset = srcBuf.GetPosition();
-       if (offset + srcByteSize > srcBuf.GetLimit())
+
+       if (offset + srcByteUsed > srcBuf.GetLimit())
        {
                srcBuf.SetPosition(srcBuf.GetLimit());
        }
        else
        {
-               srcBuf.SetPosition(offset + srcByteSize);
+               srcBuf.SetPosition(offset + srcByteUsed);
        }
 
        offset = dstBuf.GetPosition();
-       if (offset + dstByteSize > dstBuf.GetLimit())
+       if (offset + dstByteUsed > dstBuf.GetLimit())
        {
                dstBuf.SetPosition(dstBuf.GetLimit());
        }
        else
        {
-               dstBuf.SetPosition(offset + dstByteSize);
+               dstBuf.SetPosition(offset + dstByteUsed);
        }
 
        return r;
@@ -124,9 +127,11 @@ result
 _AudioEncoderImpl::Encode(const byte* srcBuf, int& srcBufLength, byte*& dstBuf, int& dstBufLength)
 {
        result r = E_SUCCESS;
+       int srcBufUsed = 0;
+       int dstBufUsed = 0;
 
        SysTryReturnResult(NID_MEDIA, __pEnc, E_INVALID_STATE, "not constructed");
-       r = __pEnc->Encode(srcBuf, srcBufLength, dstBuf, dstBufLength);
+       r = __pEnc->Encode(srcBuf, srcBufLength, srcBufUsed, dstBuf, dstBufLength, dstBufUsed);
        SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Audio Encoder encode failed", GetErrorMessage(r));\r
        return r;
 
index d81e24c..4d7404d 100644 (file)
@@ -36,7 +36,7 @@ public:
 public:
        virtual result Construct(const Tizen::Base::Collection::HashMap* pOption = null) = 0;
 
-       virtual result Encode(const byte* srcBuf, int& srcBufLength, byte*& dstBuf, int& dstBufLength) = 0;
+       virtual result Encode(const byte* pSrcBuf, int srcBufSize, int &srcBufUsed, byte* pDstBuf, int dstBufSize, int &dstBufUsed) = 0;
 
        virtual result Reset(void) = 0;
 };