Apply video recording bitrate dynamically
authorKyungYoun <ky99.won@samsung.com>
Thu, 30 May 2013 09:08:29 +0000 (18:08 +0900)
committerKyungYoun <ky99.won@samsung.com>
Thu, 30 May 2013 09:08:29 +0000 (18:08 +0900)
Change-Id: I8738f1a6af02e68969f1b7e97659b06c4cca0991
Signed-off-by: KyungYoun <ky99.won@samsung.com>
src/FMedia_CameraTypes.h
src/FMedia_CameraUtil.cpp
src/FMedia_CameraUtil.h
src/FMedia_RecorderUtil.cpp
src/FMedia_RecorderUtil.h
src/FMedia_VideoRecorderImpl.cpp

index 4621e5f..b3278bd 100755 (executable)
@@ -95,8 +95,10 @@ enum _ResolutionType
        _RES_1280X720,\r
        _RES_1280X960,\r
        _RES_1392X1392,\r
+       _RES_1440X1080,\r
        _RES_1600X1200,\r
        _RES_1920X1080,\r
+       _RES_2048X1536,\r
        _RES_MAX = 0xfe,\r
 };
 
index 708f9c0..db5d401 100755 (executable)
@@ -855,99 +855,6 @@ _CameraUtil::GetOspExifOrientation(camera_attr_tag_orientation_e mmAttr, CameraE
        return findFlag ? E_SUCCESS : E_UNSUPPORTED_TYPE;
 }
 
-_ResolutionType
-_CameraUtil::ConvertResolutionType(const Tizen::Graphics::Dimension &resolution)
-{
-       _ResolutionType resolutionType = _RES_NONE;
-
-       if ( resolution.width == 128 && resolution.height == 96 )
-       {
-               resolutionType = _RES_128X96;
-       }
-       else if ( resolution.width == 160 && resolution.height == 120 )
-       {
-               resolutionType = _RES_160X120;
-       }
-       else if ( resolution.width == 176 && resolution.height == 144 )
-       {
-               resolutionType = _RES_176X144;
-       }
-       else if ( resolution.width == 176 && resolution.height == 176 )
-       {
-               resolutionType = _RES_176X176;
-       }
-       else if ( resolution.width == 240 && resolution.height == 320 )
-       {
-               resolutionType = _RES_240X320;
-       }
-       else if ( resolution.width == 320 && resolution.height == 240 )
-       {
-               resolutionType = _RES_320X240;
-       }
-       else if ( resolution.width == 240 && resolution.height == 400 )
-       {
-               resolutionType = _RES_240X400;
-       }
-       else if ( resolution.width == 400 && resolution.height == 240 )
-       {
-               resolutionType = _RES_400X240;
-       }
-       else if ( resolution.width == 352 && resolution.height == 288 )
-       {
-               resolutionType = _RES_352X288;
-       }
-       else if ( resolution.width == 480 && resolution.height == 360 )
-       {
-               resolutionType = _RES_480X360;
-       }
-       else if ( resolution.width == 640 && resolution.height == 360 )
-       {
-               resolutionType = _RES_640X360;
-       }
-       else if ( resolution.width == 640 && resolution.height == 480 )
-       {
-               resolutionType = _RES_640X480;
-       }
-       else if ( resolution.width == 720 && resolution.height == 480 )
-       {
-               resolutionType = _RES_720X480;
-       }
-       else if ( resolution.width == 800 && resolution.height == 480 )
-       {
-               resolutionType = _RES_800X480;
-       }
-       else if ( resolution.width == 800 && resolution.height == 600 )
-       {
-               resolutionType = _RES_800X600;
-       }
-       else if ( resolution.width == 960 && resolution.height == 720 )
-       {
-               resolutionType = _RES_960X720;
-       }
-       else if ( resolution.width == 1280 && resolution.height == 720 )
-       {
-               resolutionType = _RES_1280X720;
-       }
-       else if ( resolution.width == 1280 && resolution.height == 960 )
-       {
-               resolutionType = _RES_1280X960;
-       }
-       else if ( resolution.width == 1392 && resolution.height == 1392 )
-       {
-               resolutionType = _RES_1392X1392;
-       }
-       else if ( resolution.width == 1600 && resolution.height == 1200 )
-       {
-               resolutionType = _RES_1600X1200;
-       }
-       else if ( resolution.width == 1920 && resolution.height == 1080 )
-       {
-               resolutionType = _RES_1920X1080;
-       }
-
-       return resolutionType;
-}
-
 typedef struct
 {
        CameraDirection physicalDirection;
index 3716a3a..d88988f 100755 (executable)
@@ -92,8 +92,6 @@ public:
        static result GetDisplayRotation(CameraDirection physicalDirection, Tizen::Graphics::_BufferInfoImpl::Orientation orientation, CameraRotation& displayRotation);
        static result GetDisplayRotation(CameraDirection physicalDirection, CameraRotation physicalRotation, Tizen::Graphics::_BufferInfoImpl::Orientation orientation, CameraRotation& displayRotation);
 
-       static _ResolutionType ConvertResolutionType(const Tizen::Graphics::Dimension &resolution);
-
        static result ConvertColorScale(const Tizen::Base::ByteBuffer& srcBuf, Tizen::Base::ByteBuffer& dstBuf, const Tizen::Graphics::Dimension& dim);
 
 private:
index d2d9ae3..56b3db3 100755 (executable)
@@ -306,93 +306,39 @@ _RecorderUtil::GetMmAudioQuality(CodecType audioCodec, RecordingQuality quality,
 typedef struct
 {
        int mmAttrBitrate;
-       _ResolutionType resolution;
+       int width;              //max boundary
+       int height;             // min boundary
        RecordingQuality quality;
 }_VideoQualityTable;
 
 static const _VideoQualityTable _VIDEO_QUALITY[] =
 {
-       {48000, _RES_128X96, RECORDING_QUALITY_LOW},
-       {64000, _RES_128X96, RECORDING_QUALITY_MEDIUM},
-       {80000, _RES_128X96, RECORDING_QUALITY_HIGH},
-       {72000, _RES_160X120, RECORDING_QUALITY_LOW},
-       {97000, _RES_160X120, RECORDING_QUALITY_MEDIUM},
-       {120000, _RES_160X120, RECORDING_QUALITY_HIGH},
-       {96000, _RES_176X144, RECORDING_QUALITY_LOW},
-       {128000, _RES_176X144, RECORDING_QUALITY_MEDIUM},
-       {160000, _RES_176X144, RECORDING_QUALITY_HIGH},
-       {96000, _RES_176X176, RECORDING_QUALITY_LOW},
-       {128000, _RES_176X176, RECORDING_QUALITY_MEDIUM},
-       {160000, _RES_176X176, RECORDING_QUALITY_HIGH},
-       {96000, _RES_240X320, RECORDING_QUALITY_LOW},
-       {128000, _RES_240X320, RECORDING_QUALITY_MEDIUM},
-       {160000, _RES_240X320, RECORDING_QUALITY_HIGH},
-       {96000, _RES_320X240, RECORDING_QUALITY_LOW},
-       {128000, _RES_320X240, RECORDING_QUALITY_MEDIUM},
-       {160000, _RES_320X240, RECORDING_QUALITY_HIGH},
-       {96000, _RES_240X400, RECORDING_QUALITY_LOW},
-       {128000, _RES_240X400, RECORDING_QUALITY_MEDIUM},
-       {160000, _RES_240X400, RECORDING_QUALITY_HIGH},
-       {96000, _RES_400X240, RECORDING_QUALITY_LOW},
-       {128000, _RES_400X240, RECORDING_QUALITY_MEDIUM},
-       {160000, _RES_400X240, RECORDING_QUALITY_HIGH},
-       {96000, _RES_352X288, RECORDING_QUALITY_LOW},
-       {128000, _RES_352X288, RECORDING_QUALITY_MEDIUM},
-       {160000, _RES_352X288, RECORDING_QUALITY_HIGH},
-       {96000, _RES_480X360, RECORDING_QUALITY_LOW},
-       {128000, _RES_480X360, RECORDING_QUALITY_MEDIUM},
-       {160000, _RES_480X360, RECORDING_QUALITY_HIGH},
-       {96000, _RES_640X360, RECORDING_QUALITY_LOW},
-       {128000, _RES_640X360, RECORDING_QUALITY_MEDIUM},
-       {160000, _RES_640X360, RECORDING_QUALITY_HIGH},
-
-       {2000000, _RES_640X480, RECORDING_QUALITY_LOW},
-       {2500000, _RES_640X480, RECORDING_QUALITY_MEDIUM},
-       {3000000, _RES_640X480, RECORDING_QUALITY_HIGH},
-       {2200000, _RES_720X480, RECORDING_QUALITY_LOW},
-       {2800000, _RES_720X480, RECORDING_QUALITY_MEDIUM},
-       {3300000, _RES_720X480, RECORDING_QUALITY_HIGH},
-
-       {96000, _RES_800X480, RECORDING_QUALITY_LOW},
-       {128000, _RES_800X480, RECORDING_QUALITY_MEDIUM},
-       {160000, _RES_800X480, RECORDING_QUALITY_HIGH},
-       {96000, _RES_800X600, RECORDING_QUALITY_LOW},
-       {128000, _RES_800X600, RECORDING_QUALITY_MEDIUM},
-       {160000, _RES_800X600, RECORDING_QUALITY_HIGH},
-
-       {2000000, _RES_960X720, RECORDING_QUALITY_LOW},
-       {2500000, _RES_960X720, RECORDING_QUALITY_MEDIUM},
-       {3000000, _RES_960X720, RECORDING_QUALITY_HIGH},
-
-       {2000000, _RES_1280X720, RECORDING_QUALITY_LOW},
-       {2500000, _RES_1280X720, RECORDING_QUALITY_MEDIUM},
-       {3000000, _RES_1280X720, RECORDING_QUALITY_HIGH},
-
-       {2000000, _RES_1280X960, RECORDING_QUALITY_LOW},
-       {2500000, _RES_1280X960, RECORDING_QUALITY_MEDIUM},
-       {3000000, _RES_1280X960, RECORDING_QUALITY_HIGH},
-
-       {2000000, _RES_1392X1392, RECORDING_QUALITY_LOW},
-       {2500000, _RES_1392X1392, RECORDING_QUALITY_MEDIUM},
-       {3000000, _RES_1392X1392, RECORDING_QUALITY_HIGH},
-
-       {2200000, _RES_1600X1200, RECORDING_QUALITY_LOW},
-       {2800000, _RES_1600X1200, RECORDING_QUALITY_MEDIUM},
-       {3300000, _RES_1600X1200, RECORDING_QUALITY_HIGH},
-       {2200000, _RES_1920X1080, RECORDING_QUALITY_LOW},
-       {2800000, _RES_1920X1080, RECORDING_QUALITY_MEDIUM},
-       {3300000, _RES_1920X1080, RECORDING_QUALITY_HIGH},
+       {48000, 128, 96, RECORDING_QUALITY_LOW},
+       {64000, 128, 96, RECORDING_QUALITY_MEDIUM},
+       {80000, 128, 96, RECORDING_QUALITY_HIGH},
+
+       {72000, 162, 120, RECORDING_QUALITY_LOW},
+       {97000, 160, 120, RECORDING_QUALITY_MEDIUM},
+       {120000, 160, 120, RECORDING_QUALITY_HIGH},
+
+       {96000, 800, 600, RECORDING_QUALITY_LOW},
+       {128000, 800, 600, RECORDING_QUALITY_MEDIUM},
+       {160000, 800, 600, RECORDING_QUALITY_HIGH},
+
+       {96000, 0xfffe, 0xfffe, RECORDING_QUALITY_LOW},
+       {160000, 0xfffe, 0xfffe, RECORDING_QUALITY_MEDIUM},
+       {4000000, 0xfffe, 0xfffe, RECORDING_QUALITY_HIGH},
 };
 
 result
-_RecorderUtil::GetMmVideoQuality(_ResolutionType resolution, RecordingQuality quality, int& mmAttrBitrate)
+_RecorderUtil::GetMmVideoQuality(const Tizen::Graphics::Dimension& dim, RecordingQuality quality, int& mmAttrBitrate)
 {
        bool findFlag = false;
        int size = sizeof(_VIDEO_QUALITY)/sizeof(_VIDEO_QUALITY[0]);
 
        for (int i = 0; i < size; i++)
        {
-               if (_VIDEO_QUALITY[i].resolution == resolution && _VIDEO_QUALITY[i].quality == quality)
+               if (_VIDEO_QUALITY[i].width >= dim.width && _VIDEO_QUALITY[i].height >= dim.height && _VIDEO_QUALITY[i].quality == quality)
                {
                        mmAttrBitrate = _VIDEO_QUALITY[i].mmAttrBitrate;
                        findFlag = true;
index 2b14bda..9bd27da 100755 (executable)
@@ -25,6 +25,7 @@
 #define _FMEDIA_INTERNAL_RECORDER_UTIL_H_
 
 #include <recorder.h>
+#include <FGrpDimension.h>
 #include <FMediaTypes.h>
 #include <FMediaCameraTypes.h>
 #include <FMediaRecorderTypes.h>
@@ -52,7 +53,7 @@ public:
        static result GetOspAudioContainer(recorder_file_format_e mmAttr, MediaContainerType& value);
 
        static result GetMmAudioQuality(CodecType audioCodec, RecordingQuality quality, int& mmAttrSamplerate, int& mmAttrChannel, int& mmAttrBitrate);
-       static result GetMmVideoQuality(_ResolutionType resolution, RecordingQuality quality, int& mmAttrBitrate);
+       static result GetMmVideoQuality(const Tizen::Graphics::Dimension& dim, RecordingQuality quality, int& mmAttrBitrate);
 
        static result GetMmRotation(RecordingRotation value, recorder_rotation_e& mmAttr);
        static result GetOspRotation(recorder_rotation_e mmAttr, RecordingRotation& value);
index 1ac2ad2..d6d9db6 100755 (executable)
@@ -1160,7 +1160,7 @@ _VideoRecorderImpl::SetQualityAttr(RecordingQuality quality,      CodecType audioCod
                r = ConvertResult(err);
                SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Bitrate set  failed. attr:%d", GetErrorMessage(r), attrAudioBitrate);
        }
-       r = _RecorderUtil::GetMmVideoQuality(_CameraUtil::ConvertResolutionType(__recordingResolution), quality, attrVideoBitrate);
+       r = _RecorderUtil::GetMmVideoQuality(__recordingResolution, quality, attrVideoBitrate);
        SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. videoCodec:%d, quality:%d", GetErrorMessage(r), videoCodec, quality);
 
        err = recorder_attr_set_video_encoder_bitrate(__handle, attrVideoBitrate);