亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ssbsiph264encode.c

?? 6410BSP3
?? C
字號:
#include <windows.h>

#include "MfcDriver.h"
#include "MfcDrvParams.h"

#include "SsbSipH264Encode.h"
#include "SsbSipLogMsg.h"


#define _MFCLIB_H264_ENC_MAGIC_NUMBER        0x92242002

typedef struct
{
    DWORD   magic;
    HANDLE  hOpen;

    unsigned int width, height;
    unsigned int framerate, bitrate;
    unsigned int gop_num;

    unsigned int intraqp;
    unsigned int qpmax;
    float gamma;

    int     enc_strm_size;

//    DWORD   proc_id;    // process ID

    int     fInit;
} _MFCLIB_H264_ENC;



void *SsbSipH264EncodeInit(unsigned int uiWidth,     unsigned int uiHeight,
                           unsigned int uiFramerate, unsigned int uiBitrate_kbps,
                           unsigned int uiGOPNum, unsigned int uiIntraQP, unsigned int uiQPMax, float uiGamma)
{
    _MFCLIB_H264_ENC   *pCTX;
    HANDLE              hOpen;


    //////////////////////////////
    /////     CreateFile     /////
    //////////////////////////////
    hOpen = CreateFile(L"MFC1:",
                       GENERIC_READ|GENERIC_WRITE,
                       0,
                       NULL,
                       OPEN_EXISTING,
                       FILE_ATTRIBUTE_NORMAL,
                       NULL);
    if (hOpen == INVALID_HANDLE_VALUE) {
        LOG_MSG(LOG_ERROR, "SsbSipH264EncodeInit", "MFC Open failure.\n");
        return NULL;
    }

    pCTX = (_MFCLIB_H264_ENC *) malloc(sizeof(_MFCLIB_H264_ENC));
    if (pCTX == NULL) {
        LOG_MSG(LOG_ERROR, "SsbSipH264EncodeInit", "malloc failed.\n");
        CloseHandle(hOpen);
        return NULL;
    }
    memset(pCTX, 0, sizeof(_MFCLIB_H264_ENC));

    pCTX->magic = _MFCLIB_H264_ENC_MAGIC_NUMBER;
    pCTX->hOpen = hOpen;
    pCTX->fInit = 0;

    pCTX->width     = uiWidth;
    pCTX->height    = uiHeight;
    pCTX->framerate = uiFramerate;
    pCTX->bitrate   = uiBitrate_kbps;
    pCTX->gop_num   = uiGOPNum;

    pCTX->intraqp = uiIntraQP;
    pCTX->qpmax = uiQPMax;
    pCTX->gamma = uiGamma;

    pCTX->enc_strm_size = 0;

    return (void *) pCTX;
}


int SsbSipH264EncodeExe(void *openHandle)
{
    _MFCLIB_H264_ENC  *pCTX;

    BOOL                r;
    MFC_ARGS            mfc_args;


    ////////////////////////////////
    //  Input Parameter Checking  //
    ////////////////////////////////
    if (openHandle == NULL) {
        LOG_MSG(LOG_ERROR, "SsbSipH264EncodeExe", "openHandle is NULL\n");
        return SSBSIP_H264_ENC_RET_ERR_INVALID_HANDLE;
    }


    pCTX  = (_MFCLIB_H264_ENC *) openHandle;

    if (!pCTX->fInit) {
        mfc_args.enc_init.in_width        = pCTX->width;
        mfc_args.enc_init.in_height        = pCTX->height;
        mfc_args.enc_init.in_bitrate    = pCTX->bitrate;
        mfc_args.enc_init.in_gopNum        = pCTX->gop_num;
        mfc_args.enc_init.in_frameRateRes    = pCTX->framerate;
        mfc_args.enc_init.in_frameRateDiv    = 0;

        mfc_args.enc_init.in_intraqp = pCTX->intraqp;
        mfc_args.enc_init.in_qpmax = pCTX->qpmax;
        mfc_args.enc_init.in_gamma = pCTX->gamma;

        ////////////////////////////////////////////////
        /////          (DeviceIoControl)           /////
        /////       IOCTL_MFC_H264_ENC_INIT        /////
        ////////////////////////////////////////////////
        r = DeviceIoControl(pCTX->hOpen, IOCTL_MFC_H264_ENC_INIT,
                            &mfc_args, sizeof(MFC_ENC_INIT_ARG),
                            NULL, 0,
                            NULL,
                            NULL);
        if ((r < 0) || (mfc_args.enc_init.ret_code < 0)) {
            LOG_MSG(LOG_ERROR, "SsbSipH264EncodeExe", "IOCTL_MFC_MPEG4_ENC_INIT failed.\n");
            return SSBSIP_H264_ENC_RET_ERR_ENCODE_FAIL;
        }

        pCTX->fInit = 1;

        return SSBSIP_H264_ENC_RET_OK;
    }

    /////////////////////////////////////////////////
    /////           (DeviceIoControl)           /////
    /////       IOCTL_MFC_MPEG4_DEC_EXE         /////
    /////////////////////////////////////////////////
    r = DeviceIoControl(pCTX->hOpen, IOCTL_MFC_H264_ENC_EXE,
                        &mfc_args, sizeof(MFC_ENC_EXE_ARG),
                        NULL, 0,
                        NULL,
                        NULL);
    if ((r < 0) || (mfc_args.enc_exe.ret_code < 0)) {
        return SSBSIP_H264_ENC_RET_ERR_ENCODE_FAIL;
    }

    // Encoded stream size is saved. (This value is returned in SsbSipH264EncodeGetOutBuf)
    pCTX->enc_strm_size = mfc_args.enc_exe.out_encoded_size;

    return SSBSIP_H264_ENC_RET_OK;
}


int SsbSipH264EncodeDeInit(void *openHandle)
{
    _MFCLIB_H264_ENC  *pCTX;


    ////////////////////////////////
    //  Input Parameter Checking  //
    ////////////////////////////////
    if (openHandle == NULL) {
        LOG_MSG(LOG_ERROR, "SsbSipH264EncodeDeInit", "openHandle is NULL\n");
        return SSBSIP_H264_ENC_RET_ERR_INVALID_HANDLE;
    }


    pCTX  = (_MFCLIB_H264_ENC *) openHandle;


    CloseHandle(pCTX->hOpen);
    free(pCTX);

    return SSBSIP_H264_ENC_RET_OK;
}


void *SsbSipH264EncodeGetInBuf(void *openHandle, long size)
{
    _MFCLIB_H264_ENC   *pCTX;

    BOOL                r;
    MFC_ARGS            mfc_args;

    ////////////////////////////////
    //  Input Parameter Checking  //
    ////////////////////////////////
    if (openHandle == NULL) {
        LOG_MSG(LOG_ERROR, "SsbSipH264EncodeGetInBuf", "openHandle is NULL\n");
        return NULL;
    }
    if ((size < 0) || (size > 0x100000)) {
        LOG_MSG(LOG_ERROR, "SsbSipH264EncodeGetInBuf", "size is invalid. (size=%d)\n", size);
        return NULL;
    }

    pCTX  = (_MFCLIB_H264_ENC *) openHandle;


    /////////////////////////////////////////////////
    /////           (DeviceIoControl)           /////
    /////     IOCTL_MFC_GET_INPUT_BUF_ADDR      /////
    /////////////////////////////////////////////////
//    mfc_args.get_buf_addr.in_usr_data = GetCurrentProcessId();        // Input argument
    r = DeviceIoControl(pCTX->hOpen, IOCTL_MFC_GET_FRAM_BUF_ADDR,
                        &mfc_args, sizeof(MFC_GET_BUF_ADDR_ARG),
                        NULL, 0,
                        NULL,
                        NULL);
    if ((r < 0) || (mfc_args.get_buf_addr.ret_code < 0)) {
        LOG_MSG(LOG_ERROR, "SsbSipH264EncodeGetInBuf", "Failed in get FRAM_BUF address\n");
        return NULL;
    }


    return (void *)mfc_args.get_buf_addr.out_buf_addr;
}


void *SsbSipH264EncodeGetOutBuf(void *openHandle, long *size)
{
    _MFCLIB_H264_ENC  *pCTX;

    BOOL                r;
    MFC_ARGS            mfc_args;


    ////////////////////////////////
    //  Input Parameter Checking  //
    ////////////////////////////////
    if (openHandle == NULL) {
        LOG_MSG(LOG_ERROR, "SsbSipH264EncodeGetOutBuf", "openHandle is NULL\n");
        return NULL;
    }
    if (size == NULL) {
        LOG_MSG(LOG_ERROR, "SsbSipH264EncodeGetOutBuf", "size is NULL.\n");
        return NULL;
    }

    pCTX  = (_MFCLIB_H264_ENC *) openHandle;


    /////////////////////////////////////////////////
    /////           (DeviceIoControl)           /////
    /////      IOCTL_MFC_GET_STRM_BUF_ADDR      /////
    /////////////////////////////////////////////////
//    mfc_args.get_buf_addr.in_usr_data = GetCurrentProcessId();        // Input argument
    r = DeviceIoControl(pCTX->hOpen, IOCTL_MFC_GET_LINE_BUF_ADDR,
                        &mfc_args, sizeof(MFC_GET_BUF_ADDR_ARG),
                        NULL, 0,
                        NULL,
                        NULL);
    if ((r < 0) || (mfc_args.get_buf_addr.ret_code < 0)) {
        LOG_MSG(LOG_ERROR, "SsbSipH264EncodeGetOutBuf", "Failed in get LINE_BUF address.\n");
        return NULL;
    }

    *size = pCTX->enc_strm_size;

    return (void *)mfc_args.get_buf_addr.out_buf_addr;
}


int SsbSipH264EncodeSetConfig(void *openHandle, H264_ENC_CONF conf_type, void *value)
{
    _MFCLIB_H264_ENC  *pCTX;
    MFC_ARGS           mfc_args;
    BOOL               r;

    unsigned int       num_slices;


    ////////////////////////////////
    //  Input Parameter Checking  //
    ////////////////////////////////
    if (openHandle == NULL) {
        LOG_MSG(LOG_ERROR, "SsbSipH264EncodeSetConfig", "openHandle is NULL\n");
        return SSBSIP_H264_ENC_RET_ERR_INVALID_HANDLE;
    }
    if (value == NULL) {
        LOG_MSG(LOG_ERROR, "SsbSipH264EncodeSetConfig", "value is NULL\n");
        return SSBSIP_H264_ENC_RET_ERR_INVALID_PARAM;
    }

    pCTX  = (_MFCLIB_H264_ENC *) openHandle;

    switch (conf_type) {
    case H264_ENC_SETCONF_NUM_SLICES:

        num_slices = *((unsigned int *) value);

        mfc_args.set_config.in_config_param     = MFC_SET_CONFIG_ENC_SLICE_MODE;
        mfc_args.set_config.in_config_value[0]  = (num_slices ? 1 : 0);
        mfc_args.set_config.in_config_value[1]  = num_slices;
        r = DeviceIoControl(pCTX->hOpen, IOCTL_MFC_SET_CONFIG,
                            &mfc_args, sizeof(MFC_SET_CONFIG_ARG),
                            NULL, 0,
                            NULL,
                            NULL);
        if ((r == FALSE) || (mfc_args.set_config.ret_code != 0)) {
            LOG_MSG(LOG_ERROR, "SsbSipH264EncodeSetConfig", "Error in H264_ENC_SETCONF_NUM_SLICES.\n");
            return SSBSIP_H264_ENC_RET_ERR_SETCONF_FAIL;
        }
        break;

    case H264_ENC_SETCONF_PARAM_CHANGE:

        mfc_args.set_config.in_config_param     = MFC_SET_CONFIG_ENC_PARAM_CHANGE;
        mfc_args.set_config.in_config_value[0]  = ((unsigned int *) value)[0];
        mfc_args.set_config.in_config_value[1]  = ((unsigned int *) value)[1];
        r = DeviceIoControl(pCTX->hOpen, IOCTL_MFC_SET_CONFIG,
                            &mfc_args, sizeof(MFC_SET_CONFIG_ARG),
                            NULL, 0,
                            NULL,
                            NULL);
        if ((r == FALSE) || (mfc_args.set_config.ret_code != 0)) {
            LOG_MSG(LOG_ERROR, "SsbSipH264EncodeSetConfig", "Error in H264_ENC_SETCONF_PARAM_CHANGE.\n");
            return SSBSIP_H264_ENC_RET_ERR_SETCONF_FAIL;
        }
        break;


    case H264_ENC_SETCONF_CUR_PIC_OPT:

        mfc_args.set_config.in_config_param     = MFC_SET_CONFIG_ENC_CUR_PIC_OPT;
        mfc_args.set_config.in_config_value[0]  = ((unsigned int *) value)[0];
        mfc_args.set_config.in_config_value[1]  = ((unsigned int *) value)[1];
        r = DeviceIoControl(pCTX->hOpen, IOCTL_MFC_SET_CONFIG,
                            &mfc_args, sizeof(MFC_SET_CONFIG_ARG),
                            NULL, 0,
                            NULL,
                            NULL);
        if ((r == FALSE) || (mfc_args.set_config.ret_code != 0)) {
            LOG_MSG(LOG_ERROR, "SsbSipH264EncodeSetConfig", "Error in H264_ENC_SETCONF_CUR_PIC_OPT.\n");
            return SSBSIP_H264_ENC_RET_ERR_SETCONF_FAIL;
        }
        break;

    default:
        LOG_MSG(LOG_ERROR, "SsbSipH264EncodeSetConfig", "No such conf_type is supported.\n");
        return SSBSIP_H264_ENC_RET_ERR_SETCONF_FAIL;
    }

    return SSBSIP_H264_ENC_RET_OK;
}


#if 0


int SsbSipH264DecodeGetConfig(void *openHandle, MPEG4_DEC_CONF conf_type, void *value)
{
    _MFCLIB_H264_ENC  *pCTX;


    ////////////////////////////////
    //  Input Parameter Checking  //
    ////////////////////////////////
    if (openHandle == NULL) {
        return NULL;
    }

    pCTX  = (_MFCLIB_H264_ENC *) openHandle;


    switch (conf_type) {
    case MPEG4_DEC_GETCONF_STREAMINFO:
        ((SSBSIP_MPEG4_STREAM_INFO *)value)->width  = pCTX->width;
        ((SSBSIP_MPEG4_STREAM_INFO *)value)->height = pCTX->height;
        break;

    default:
        break;
    }


    return 0;
}


#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久精品99国产精品| 日韩视频中午一区| 日韩一区二区三区在线视频| 日本一区二区综合亚洲| 国产美女一区二区| 欧美高清www午色夜在线视频| 国产欧美日韩三级| 蓝色福利精品导航| 欧美美女直播网站| 亚洲精品免费电影| 成人免费观看男女羞羞视频| 精品成人免费观看| 美女在线一区二区| 欧美蜜桃一区二区三区| 日韩理论片中文av| av午夜精品一区二区三区| 久久人人97超碰com| 蜜臀av一区二区在线免费观看| 欧美综合色免费| 亚洲男人电影天堂| 91在线免费视频观看| 亚洲国产精品成人综合 | 91麻豆精品国产91久久久资源速度 | 亚洲电影一级片| 99国产精品国产精品久久| 久久夜色精品国产欧美乱极品| 免费高清视频精品| 91精品国产乱码久久蜜臀| 一二三区精品视频| 欧美日韩中文精品| 婷婷开心激情综合| 91精品欧美久久久久久动漫| 日日夜夜免费精品| 日韩三级电影网址| 国产一区二区三区综合| 国产午夜精品一区二区三区视频 | 777精品伊人久久久久大香线蕉| 亚洲卡通动漫在线| 欧洲中文字幕精品| 日韩福利视频网| 欧美一区二区成人| 久久99精品久久久久婷婷| 精品国产乱码久久久久久夜甘婷婷| 喷水一区二区三区| 久久久久久久久免费| 成人福利视频在线| 亚洲人成网站在线| 欧美日韩一区不卡| 精久久久久久久久久久| 国产日韩欧美精品综合| 99久久国产综合精品色伊| 亚洲精选视频在线| 欧美一区二区视频网站| 国产一区二区三区精品欧美日韩一区二区三区 | 在线观看成人小视频| 日韩av在线免费观看不卡| 26uuu国产在线精品一区二区| 国产91精品一区二区麻豆亚洲| 国产欧美日韩精品a在线观看| 97久久超碰国产精品电影| 婷婷一区二区三区| 欧美韩日一区二区三区四区| 在线看一区二区| 国模套图日韩精品一区二区| 中文字幕一区免费在线观看| 91.com在线观看| 成人免费av网站| 秋霞影院一区二区| 国产精品视频一二三区| 欧美日韩精品福利| 国产91丝袜在线观看| 五月天激情综合网| 亚洲国产高清在线| 91精品在线免费观看| 欧美日韩一区小说| 国产成人免费在线视频| 五月激情综合网| 国产精品久久久久影院亚瑟| 日韩一区二区三区免费看 | 国产九九视频一区二区三区| 亚洲欧美另类久久久精品2019| 91精品黄色片免费大全| 99国内精品久久| 久久精品国产色蜜蜜麻豆| 亚洲视频一区二区在线| 精品sm捆绑视频| 欧美日本国产一区| 99这里只有精品| 国产精品白丝av| 欧美aaaaaa午夜精品| 亚洲国产精品精华液网站| 国产人伦精品一区二区| 日韩欧美电影在线| 欧美猛男gaygay网站| 在线视频中文字幕一区二区| av成人免费在线| 国模大尺度一区二区三区| 日韩av电影一区| 亚欧色一区w666天堂| 亚洲欧美另类在线| 中文字幕一区二区三| 国产午夜精品一区二区三区嫩草| 欧美成人性战久久| 日韩午夜精品视频| 日韩一级大片在线| 欧美一区二区观看视频| 在线成人免费视频| 在线播放日韩导航| 欧美绝品在线观看成人午夜影视| 在线精品观看国产| 欧美日韩激情一区二区三区| 欧美日韩国产美| 欧美日韩在线电影| 88在线观看91蜜桃国自产| 欧美在线观看18| 欧美日本高清视频在线观看| 欧美精品免费视频| 日韩一区二区在线观看视频| 日韩一二三四区| 精品不卡在线视频| 国产欧美日韩综合精品一区二区 | 欧美精三区欧美精三区| 欧美老女人在线| 日韩一区二区免费视频| 欧美一区二区三区小说| 精品乱人伦小说| 国产亲近乱来精品视频| 欧美国产激情一区二区三区蜜月| 国产精品三级av在线播放| 亚洲视频一区二区在线观看| 亚洲伊人色欲综合网| 日韩av中文字幕一区二区| 看片网站欧美日韩| 成人三级伦理片| 91国偷自产一区二区三区成为亚洲经典 | 亚洲人成在线播放网站岛国| 亚洲宅男天堂在线观看无病毒| 午夜欧美电影在线观看| 久久国产生活片100| 成人午夜电影网站| 欧洲精品在线观看| 日韩精品一区二区在线| 国产精品免费aⅴ片在线观看| 一区二区三区在线看| 免费亚洲电影在线| 成人国产精品免费观看视频| 欧美视频一区二区在线观看| 日韩欧美国产不卡| 亚洲欧洲综合另类| 美女视频黄 久久| 99久久精品国产一区| 欧美一级在线视频| 亚洲欧洲三级电影| 麻豆免费精品视频| 色呦呦一区二区三区| 日韩精品中文字幕一区| 亚洲欧洲av一区二区三区久久| 亚洲6080在线| 99精品欧美一区二区蜜桃免费 | 一本到不卡免费一区二区| 欧美丰满高潮xxxx喷水动漫| 亚洲国产高清在线| 日韩高清一区在线| 91香蕉视频mp4| 久久天天做天天爱综合色| 亚洲在线观看免费视频| 国内精品久久久久影院薰衣草| 91福利国产成人精品照片| 国产人妖乱国产精品人妖| 日韩和欧美一区二区| 色综合久久88色综合天天免费| 久久久亚洲精品石原莉奈| 亚洲1区2区3区4区| 日本韩国精品在线| 国产精品麻豆一区二区| 日本道在线观看一区二区| 国产三级一区二区三区| 日韩激情中文字幕| 欧美日韩综合一区| 亚洲猫色日本管| eeuss鲁片一区二区三区| 久久久久久久久蜜桃| 六月婷婷色综合| 欧美一区在线视频| 亚洲va欧美va人人爽| 91久久久免费一区二区| 国产精品久久久久久久浪潮网站| 国产真实精品久久二三区| 日韩一区二区三区视频在线| 日韩精品乱码免费| 777久久久精品| 日本欧美一区二区三区乱码| 欧美伊人久久久久久午夜久久久久| 亚洲人精品午夜| 91福利视频久久久久| 一区二区三区欧美激情| 欧美在线视频不卡| 一区二区高清在线| 欧美午夜一区二区三区免费大片| 亚洲自拍偷拍图区|