MediaProfiles的用法

来源:互联网 发布:矩阵计算 袁亚湘 编辑:程序博客网 时间:2024/05/30 05:26

MediaProfiles类主要用于录像和Video Editor,包括设置视频的分辨率,Audio和Video的编解码参数等。

MediaProfiles.h文件中对camcorder质量的定义如下,包括了常见的视频视频分辨率。需要注意的是,下面的定义与CamcorderProfile.java中定义的视频分辨率是对应的,两者需要保持一致。

enum camcorder_quality {    CAMCORDER_QUALITY_LIST_START = 0,    CAMCORDER_QUALITY_LOW  = 0,    CAMCORDER_QUALITY_HIGH = 1,    CAMCORDER_QUALITY_QCIF = 2,    CAMCORDER_QUALITY_CIF = 3,    CAMCORDER_QUALITY_480P = 4,    CAMCORDER_QUALITY_720P = 5,    CAMCORDER_QUALITY_1080P = 6,    CAMCORDER_QUALITY_QVGA = 7,    CAMCORDER_QUALITY_MIDDLE = 8,#ifdef CONFIG_CAMERA_SUPPORT_720P    CAMCORDER_QUALITY_MIDDLE_HIGH = 9,    CAMCORDER_QUALITY_LIST_END = 9,#else    CAMCORDER_QUALITY_LIST_END = 8,#endif    CAMCORDER_QUALITY_TIME_LAPSE_LIST_START = 1000,    CAMCORDER_QUALITY_TIME_LAPSE_LOW  = 1000,    CAMCORDER_QUALITY_TIME_LAPSE_HIGH = 1001,    CAMCORDER_QUALITY_TIME_LAPSE_QCIF = 1002,    CAMCORDER_QUALITY_TIME_LAPSE_CIF = 1003,    CAMCORDER_QUALITY_TIME_LAPSE_480P = 1004,    CAMCORDER_QUALITY_TIME_LAPSE_720P = 1005,    CAMCORDER_QUALITY_TIME_LAPSE_1080P = 1006,    CAMCORDER_QUALITY_TIME_LAPSE_QVGA = 1007,    CAMCORDER_QUALITY_TIME_LAPSE_MIDDLE = 1008,#ifdef CONFIG_CAMERA_SUPPORT_720P    CAMCORDER_QUALITY_TIME_LAPSE_MIDDLE_HIGH = 1009,    CAMCORDER_QUALITY_TIME_LAPSE_LIST_END = 1009,#else    CAMCORDER_QUALITY_TIME_LAPSE_LIST_END = 1008,#endif};

顺便总结一下屏幕分辨率:
Sub-QCIF  128x96
QCIF           176x144
CIF              352x288
4CIF            704x576
QVGA          240×320
HVGA          480*320
VGA             640X480
SVGA          800X600
XGA            1024X768
SXGA          1280X1024
SXGA+       1400X1050
UXGA         1600X1200
WXGA        1280X800
WXGA+      1400X900
WSXGA     1600X1024
WSXGA+   1680X1050
WUXGA     1920X1200
WQXGA     2560X1600

目前只有在StagefrightRecorder中用到了MediaProfiles,用于初始化录像参数;其他代码中还没有用到MediaProfiles。

调用流程如下:

StagefrightRecorder::start() -> startMPEG4Recording() -> setupMPEG4Recording -> setupMediaSource -> setupCameraSource -> checkVideoEncoderCapabilities ->

在checkVideoEncoderCapabilities()函数中调用了以下五个函数设置录像参数,每个函数分别调用MediaProfiles的相关函数取得参数后设置给录像参数。

        clipVideoBitRate();
        clipVideoFrameRate();
        clipVideoFrameWidth();
        clipVideoFrameHeight();
        setDefaultProfileIfNecessary();