HI,
I use h263 codec on dm365 platform and get the test.mpeg4 with the encode demo.(dvsdk_3_10_00_19/dm365_codecs_03_10_00_07)
But I'not sure the test.mpeg4 is real h263.
when I use H263PLAY.exe to play the test.mpeg4,the H263PLAY.exe report error:ERROR:Picture Header not match.
the file 263PLAY.rar include H263PLAY.exe,test.mpeg4 and the real h263 video missqcif.263 for test.
flow with my create h263 codec engine code:
VIDENC1_Params defaultParams = Venc1_Params_DEFAULT;
VIDENC1_DynamicParams defaultDynParams = Venc1_DynamicParams_DEFAULT;
IMP4HDVICPENC_Params mp4hdvicpParams;
IMP4HDVICPENC_DynamicParams mp4hdvicpDynParams;
mp4hdvicpParams = IMPEG4VENC_PARAMS;
mp4hdvicpParams.videncParams.maxWidth = 1920;
mp4hdvicpParams.videncParams.maxHeight = 1088;
mp4hdvicpParams.videncParams.maxInterFrameInterval = 1;
mp4hdvicpParams.videncParams.inputChromaFormat = IMP4HDVICPENC_YUV_420IUV;
mp4hdvicpParams.videncParams.reconChromaFormat =IMP4HDVICPENC_YUV_420IUV;
mp4hdvicpParams.videncParams.size = sizeof(IMP4HDVICPENC_Params);
mp4hdvicpParams.videncParams.maxBitRate = 20000000;
mp4hdvicpParams.videncParams.maxFrameRate = 30000;
mp4hdvicpParams.videncParams.dataEndianness = XDM_BYTE;
mp4hdvicpParams.videncParams.inputContentType = IVIDEO_PROGRESSIVE;
memcpy(&mp4hdvicpDynParams,&defaultDynParams,sizeof(defaultDynParams));
mp4hdvicpDynParams.videncDynamicParams.size = sizeof(IMP4HDVICPENC_DynamicParams);
/*h.263 baseline profile level 10*/
mp4hdvicpParams.MPEG4_mode = 0;
mp4hdvicpParams.levelIdc = 10;
mp4hdvicpParams.useVOS = 1;
mp4hdvicpParams.useGOV = 0;
mp4hdvicpParams.useDataPartition = 0;
mp4hdvicpParams.useRVLC =0;
mp4hdvicpParams.aspectRatio = IMP4HDVICPENC_AR_DEFAULT;
mp4hdvicpParams.pixelRange = IMP4HDVICPENC_PR_DEFAULT;
mp4hdvicpParams.timerResolution = 30000;
mp4hdvicpParams.ME_Type = 0;
mp4hdvicpParams.UMV = 1;
mp4hdvicpParams.EncQuality_mode = 0;
mp4hdvicpParams.hdvicpHandle = NULL;
memcpy(( VIDENC1_Params *)&mp4hdvicpParams,envp->params ? envp->params : &defaultParams,sizeof(VIDENC1_Params));
mp4hdvicpDynParams.maxDelay = 1000;
mp4hdvicpDynParams.PacketSize = 0;
mp4hdvicpDynParams.Four_MV_mode = 0;
mp4hdvicpDynParams.qpIntra = 10;
mp4hdvicpDynParams.qpInter = 10;
mp4hdvicpDynParams.useHEC = 0;
mp4hdvicpDynParams.airRate = 0;
mp4hdvicpDynParams.useGOBSync = 1;
mp4hdvicpDynParams.RcAlgo = 8;
mp4hdvicpDynParams.QPMax = 31;
mp4hdvicpDynParams.QPMin = 2;
mp4hdvicpDynParams.qpInit = 8;
mp4hdvicpDynParams.PerceptualRC = 0;
mp4hdvicpDynParams.mvSADoutFlag = 0;
params = envp->params ? envp->params : (VIDENC1_Params *)&mp4hdvicpParams;
dynParams = envp->dynParams ? envp->dynParams : (VIDENC1_DynamicParams *)&mp4hdvicpDynParams;
/* Set up codec parameters */
params->maxWidth = envp->imageWidth;
params->maxHeight = envp->imageHeight;
params->encodingPreset = XDM_HIGH_SPEED;
if (colorSpace == ColorSpace_YUV420PSEMI) {
params->inputChromaFormat = XDM_YUV_420SP;
} else {
params->inputChromaFormat = XDM_YUV_422ILE;
}
params->reconChromaFormat = XDM_YUV_420SP;
params->maxFrameRate = envp->videoFrameRate;
/* Set up codec parameters depending on bit rate */
if (envp->videoBitRate < 0) {
/* Variable bit rate */
params->rateControlPreset = IVIDEO_NONE;
/*
* If variable bit rate use a bogus bit rate value (> 0)
* since it will be ignored.
*/
params->maxBitRate = 0;
}
else {
/* Constant bit rate */
params->rateControlPreset = IVIDEO_STORAGE;
params->maxBitRate = envp->videoBitRate;
}
dynParams->targetBitRate = params->maxBitRate;
dynParams->inputWidth = params->maxWidth;
dynParams->inputHeight = params->maxHeight;
dynParams->refFrameRate = params->maxFrameRate;
dynParams->targetFrameRate = params->maxFrameRate;
dynParams->interFrameInterval = 0;
/* Create the video encoder */
hVe1 = Venc1_create(hEngine, envp->videoEncoder, params, dynParams);
if (hVe1 == NULL) {
ERR("Failed to create video encoder: %s\n", envp->videoEncoder);
cleanup(THREAD_FAILURE);
}
can anyone help me?
Thanks very much.