static int cliAVCAlign(crusher_t *crusher, int args, char **argstr) { int val = atoi(argstr[0]); encoderConfigure(crusher, AVE_CFG_VENC_AVCALIGN, val); val = atoi(argstr[1]); encoderConfigureVideoEnc(crusher, AVE_CFG_VENC_SCENECHANGE_NEWGOP, val); return ActivateVideoEncCfg(crusher); };
//ok static int cliVEncGOPSize(crusher_t *crusher, int args, char **argstr) { /* vgopsize 15 (cliVEncGOPSize) * { 3, 1026, 24, 15, 0, 0, 0, 0 }; */ /*uint32_t cmd[8] = { 3, 1026, 24, 0, 0, 0, 0, 0 };*/ int val = atoi(argstr[0]); return encoderConfigure(crusher, AVE_CFG_VENC_GOP_SIZE, val); }
static int cliVEncBitrate(crusher_t *crusher, int args, char **argstr) { /* vbitrate 2000000 (cliVEncBitrate) * { 3, 1026, 21, 2000000, 0, 0, 0, 0 }; */ /*uint32_t cmd[8] = { 3, 1026, 21, 0, 0, 0, 0, 0 };*/ int val = atoi(argstr[0]); return encoderConfigure(crusher, AVE_CFG_VENC_BITRATE, val); }
/* 3, 1026 * 3, 21, 1, 0 */ int encoderConfigureStreamType(crusher_t *crusher, int type) { command_t cmd; memset(&cmd, 0, sizeof(command_t)); encoderConfigure(crusher, AVE_CFG_BITSTREAM_TYPE, type); cmd.controlObjectId = AVENCODER_CTRLOBJ_ID; cmd.opcode = CMD_OPCODE_ACTIVATE_BITSTREAMCFG; cmd.arguments[0] = 1; /* always 1 */ return mg1264_cmd(crusher, &cmd); }
static int cliAudioEnc(crusher_t *crusher, int args, char **argstr) { int val = 0; if (strcmp("pcm", argstr[0]) == 0) { val = AVE_CFP_AENC_CODEC_PCM; } else if (strcmp("aac", argstr[0]) == 0) { val = AVE_CFP_AENC_CODEC_AAC; } else if (strcmp("qma", argstr[0]) == 0) { val = AVE_CFP_AENC_CODEC_QMA; } else { ERROR("Invalid audio codec: %s", argstr[0]); return 0; } return encoderConfigure(crusher, AVE_CFG_AENC_CODEC, val); };
static int cliAudioInput(crusher_t *crusher, int args, char **argstr) { int val = 0; if (strcmp("s", argstr[0]) == 0) { val = AVE_CFP_AI_CHANNELS_STEREO; } else if (strcmp("ss", argstr[0]) == 0) { val = AVE_CFP_AI_CHANNELS_STEREO_SWAP; } else if (strcmp("ml", argstr[0]) == 0) { val = AVE_CFP_AI_CHANNELS_STEREO_MONO_LEFT; } else if (strcmp("mr", argstr[0]) == 0) { val = AVE_CFP_AI_CHANNELS_STEREO_MONO_RIGHT; } else { ERROR("Invalid audio codec input: %s", argstr[0]); return 0; } return encoderConfigure(crusher, AVE_CFG_AI_CHANNELS, val); };
//ok static int cliEncMode(crusher_t *crusher, int args, char **argstr) { /* encmode low * { 3, 1026, 10, 0, 0, 1026, 40, 2 }; */ /*uint32_t cmd[8] = { 3, 1026, 10, 0, 0, 0, 0, 0 };*/ int val = 0; if (strcmp("low", argstr[0]) == 0) { val = AVE_CFG_VENC_OPERATIONAL_MODE_LOW_BITRATE; } else if (strcmp("medium", argstr[0]) == 0) { val = AVE_CFG_VENC_OPERATIONAL_MODE_MED_BITRATE; } else if (strcmp("high", argstr[0]) == 0) { val = AVE_CFG_VENC_OPERATIONAL_MODE_HIGH_BITRATE; } else { ERROR("Invalid mode: %s", argstr[0]); return 0; } return encoderConfigure(crusher, AVE_CFG_VENC_OPERATIONAL_MODE, val); }
//ok static int cliEncInputSelect(crusher_t *crusher, int args, char **argstr) { /* inputselect v (cliEncInputSelect) * { 3, 1026, 40, 2, 0, 1, 28, 1 }; */ /*uint32_t cmd[8] = { 3, 1026, 40, 0, 0, 0, 0, 0 };*/ int val = 0; if (strcmp("av", argstr[0]) == 0) { val = AVE_CFP_ENC_SELECT_AV; } else if (strcmp("v", argstr[0]) == 0) { val = AVE_CFP_ENC_SELECT_VIDEO_ONLY; } else if (strcmp("a", argstr[0]) == 0) { val = AVE_CFP_ENC_SELECT_AUDIO_ONLY; } else { ERROR("Invalid mode: %s", argstr[0]); return 0; } return encoderConfigure(crusher, AVE_CFG_ENC_INPUT_SELECT, val); }
int highScore = armGround// + value still to be tested; ///////////////////////////////////////////////////////////////////////////////////////// // // Pre-Autonomous Functions // // You may want to perform some actions before the competition starts. Do them in the // following function. // ///////////////////////////////////////////////////////////////////////////////////////// void pre_auton() { encoderConfigure(4,2,90,127,(14.375/12.0),(4.0/12.0)); init(PID,potArm,port4); setSetpoint(PID, highScore); setPIDs(PID, KP, KI, KD); enable(PID); }
/****************************************** * CrusherDLL.dll ******************************************/ static int cliAudioBitrate(crusher_t *crusher, int args, char **argstr) { int val = atoi(argstr[0]); return encoderConfigure(crusher, AVE_CFG_AENC_BITRATE, val); };
int mg1264_send_capture_textconfig(crusher_t *crusher) { /* 3, 1026, 10 */ if(crusher->bitrate_mode == BITRATE_MODE_AUTO) { if (crusher->bitrate >= 3000000) encoderConfigure(crusher, AVE_CFG_VENC_OPERATIONAL_MODE, AVE_CFG_VENC_OPERATIONAL_MODE_HIGH_BITRATE); else if (crusher->bitrate >= 750000) encoderConfigure(crusher, AVE_CFG_VENC_OPERATIONAL_MODE, AVE_CFG_VENC_OPERATIONAL_MODE_MED_BITRATE); else encoderConfigure(crusher, AVE_CFG_VENC_OPERATIONAL_MODE, AVE_CFG_VENC_OPERATIONAL_MODE_LOW_BITRATE); } else { encoderConfigure(crusher, AVE_CFG_VENC_OPERATIONAL_MODE, crusher->bitrate_mode); } /* 3, 27, 0 */ RawCmd(crusher, AVENCODER_CTRLOBJ_ID, CMD_OPCODE_PERFORMANCE_MODE, AVE_CMDP_PERFORMANCE_MODE_D1_104, 0, 0, 0, 0, 0); /* 1, 28, 1 */ RawCmd(crusher, 1, 28, 1, 0, 0, 0, 0, 0); /* 3, 17, 9, 1 */ encoderConfigureVideo(crusher, AVE_CFG_VIN_PROG_SOURCE, AVE_CFP_VIN_PROG_SOURCE_PROGRESSIVE); /* 3, 18 */ ActivateVideoInCfg(crusher); /* 3, 17, 36, 1 */ encoderConfigureVideo(crusher, AVE_CFG_VIN_FIELD_CODING, AVE_CFP_VIN_FIELD_CODING_FIELD); /* 3, 18 */ ActivateVideoInCfg(crusher); /* 3, 17, 0, 1 */ if(crusher->framerate_den == 3003) { encoderConfigureVideo(crusher, AVE_CFG_VIDEO_IN_STANDARD, AVE_CFP_VIDEO_INPUT_STANDARD_NTSC); } else { encoderConfigureVideo(crusher, AVE_CFG_VIDEO_IN_STANDARD, AVE_CFP_VIDEO_INPUT_STANDARD_PAL); } /* 3, 17, 28, 3600 */ encoderConfigureVideo(crusher, AVE_CFG_VIDEO_IN_FRAMERATE, crusher->framerate_den); /* 3, 17, 31, 3600 */ encoderConfigureVideo(crusher, AVE_CFG_VIDEO_INOUT_FRAME_TICKS, crusher->framerate_den); /* 3, 17, 120, 3600 */ encoderConfigureVideo(crusher, AVE_CFG_VIDEO_IN_FRAMERATE2, crusher->framerate_den); /* 3, 17, 121, 3600 */ encoderConfigureVideo(crusher, AVE_CFG_VIDEO_IN_FRAMERATE3, crusher->framerate_den); /* 3, 18 */ ActivateVideoInCfg(crusher); /* 1, 1026, 13, 2 */ if(crusher->framerate_den == 3003) { sysConfigure(crusher, SYS_CFG_VENC_VOUT_STANDARD, SYS_CFP_VENC_VOUT_STANDARD_NTSC); } else { sysConfigure(crusher, SYS_CFG_VENC_VOUT_STANDARD, SYS_CFP_VENC_VOUT_STANDARD_PAL); } /* 1, 18, 9, 3600 */ sysVOutConfigure(crusher, SYS_CFG_VOUT_FRAMETICKS, crusher->framerate_den); /* 1, 19 */ sysActivateOutputCfg(crusher); /* 0 |<-1->|<-----------3----------->| 720 +-->+-----------------------------------------+ 2 | | +-->| +-------------------------+ | | | | | | | | | | | | | | | | 4 | | | | | | | | | | | | | | | | | | | +-->| +-------------------------+ | | | 576 +-----------------------------------------+ */ /* 3, 17, 1, 720 */ encoderConfigureVideo(crusher, AVE_CFG_VIDEO_CAPTURE_RECT_W, 720/* #3 */); ///< capture image width 640 for example ("3") /* 3, 17, 2, 576 */ if(crusher->framerate_den == 3003) { encoderConfigureVideo(crusher, AVE_CFG_VIDEO_CAPTURE_RECT_H, 480/* #4 */); ///< capture image height 492 for example } else { encoderConfigureVideo(crusher, AVE_CFG_VIDEO_CAPTURE_RECT_H, 576/* #4 */); ///< capture image height 492 for example } /* 3, 17, 3 */ encoderConfigureVideo(crusher, AVE_CFG_VIDEO_CAPTURE_RECT_X_OS, 0/* #1 */); ///< x-offset for start of rectangle 32 for example /* 3, 17, 4 */ encoderConfigureVideo(crusher, AVE_CFG_VIDEO_CAPTURE_RECT_Y_OS, 0/* #2 */); ///< y-offset for start of rectangle 32 for example /* 3, 17, 5, 720, 320 */ encoderConfigureVideo(crusher, AVE_CFG_VIDEO_IN_DECIMATION_X, crusher->width); ///< encoded image width /* 3, 17, 6, 2 */ /* if 1 - then AVE_CFG_VIDEO_CAPTURE_RECT_H * if 2 - then AVE_CFG_VIDEO_CAPTURE_RECT_H/2 * if crusher->height, then crusher->height*/ //encoderConfigureVideo(crusher, AVE_CFG_VIDEO_IN_DECIMATION_Y, crusher->height); if( (crusher->framerate_den == 3003 && crusher->height == 240) || (crusher->framerate_den == 3600 && (crusher->height == 288 ||crusher->height == 576 )) ) { encoderConfigureVideo(crusher, AVE_CFG_VIDEO_IN_DECIMATION_Y, 2); } else { encoderConfigureVideo(crusher, AVE_CFG_VIDEO_IN_DECIMATION_Y, crusher->height); } /* 3, 18 */ ActivateVideoInCfg(crusher); /* 3, 1026, 1, 2 */ if(crusher->out_format == OUT_FORMAT_QBOX) { encoderConfigure(crusher, AVE_CFG_BITSTREAM_TYPE, AVE_CFP_BITSTREAM_TYPE_QBOX); } else if (crusher->out_format == OUT_FORMAT_VES) { encoderConfigure(crusher, AVE_CFG_BITSTREAM_TYPE, AVE_CFP_BITSTREAM_TYPE_ELEM_VIDEO); } else { ERROR("Unknown format: %d", crusher->out_format); return 0; } /* 3, 1026, 17, 1 */ encoderConfigure(crusher, AVE_CFG_ENC_AV_SELECT, AVE_CFP_ENC_SELECT_AV); /* 3, 1026, 40, 1 */ encoderConfigure(crusher, AVE_CFG_ENC_INPUT_SELECT, AVE_CFP_ENC_SELECT_AV); /* 3, 14, 94, 1 */ encoderConfigureVideoEnc(crusher, AVE_CMD_VENC_SEI_PICT_TIMING, 1); /* 3, 15 */ ActivateVideoEncCfg(crusher); /* 3, 14, 91, 1 */ encoderConfigureVideoEnc(crusher, 91, 1); /* 3, 14, 92, 1000000 */ encoderConfigureVideoEnc(crusher, 92, 1000000); /* 3, 14, 93, 1000000 */ encoderConfigureVideoEnc(crusher, 93, 1000000); /* 3, 15 */ ActivateVideoEncCfg(crusher); /* 3, 1026, 21, 500000 */ encoderConfigure(crusher, AVE_CFG_VENC_BITRATE, crusher->bitrate); /* our edit */ if(crusher->gopsize) { encoderConfigure(crusher, AVE_CFG_VENC_GOP_SIZE, crusher->gopsize); } else { encoderConfigure(crusher, AVE_CFG_VENC_GOP_SIZE, crusher->framerate_num/crusher->framerate_den); } /* 3, 19, 8, 1 */ encoderConfigureRCFile(crusher, AVE_CFG_RCBUFFER_ENABLED, 1); /* 3, 19, 9, 35000000 */ encoderConfigureRCFile(crusher, AVE_CFG_RCBUFFER_BITSIZE, crusher->rc_size); /* 3, 19, 10, 3500000 */ encoderConfigureRCFile(crusher, AVE_CFG_RCBUFFER_TRANSFER_BITRATE, crusher->rc_size/10); /* 3, 19, 11, 180000 */ encoderConfigureRCFile(crusher, AVE_CFG_RCBUFFER_INITIAL_DELAY, 180000 /* ??? */); /* 3, 19, 12, 0 */ encoderConfigureRCFile(crusher, AVE_CFG_RCBUFFER_LOW_DELAY, 0); /* 3, 20 */ ActivateVideoRCCfg(crusher); /* 3, 19, 6, 0 */ encoderConfigureRCFile(crusher, AVE_CFG_RCFILE_ENABLER, 0); /* 3, 20 */ ActivateVideoRCCfg(crusher); if( (crusher->framerate_den == 3003 && crusher->height == 240) || (crusher->framerate_den == 3600 && (crusher->height == 288 || crusher->height == 576)) ) { /* 3, 19, 36, 0 */ encoderConfigureRCFile(crusher, 36, 0); /* 3, 20 */ ActivateVideoRCCfg(crusher); /* this 2 cmds used adaptive framerate? (does not exists for youtube profile) */ /* 3, 19, 29, 1 */ encoderConfigureRCFile(crusher, AVE_CFG_RC_ADAPTIVE_FR_MIN_QP, 1); /* 3, 20 */ ActivateVideoRCCfg(crusher); } if(!crusher->audio_codec) { ERROR("audio codec not set"); return 1; } /* 3, 1026, 67, 2 */ encoderConfigure(crusher, AVE_CFG_AENC_CODEC, crusher->audio_codec); /* TODO: support other samplerates */ if(crusher->audio_samplerate != 48000) { ERROR("forcing 48000 Hz Audio samplerate"); crusher->audio_samplerate = 48000; } /* 1, 1026, 7, 48000 */ sysConfigure(crusher, SYS_CFG_AUDIO_SAMPLERATE, crusher->audio_samplerate); /* 1, 1026, 8, 16 */ sysConfigure(crusher, SYS_CFG_AUDIO_SAMPLESIZE, 16); /* 3, 1026, 19, 1 */ encoderConfigure(crusher, AVE_CFG_AI_CHANNELS, crusher->audio_channels == 2 ? AVE_CFP_AI_CHANNELS_STEREO : AVE_CFP_AI_CHANNELS_STEREO_MONO_LEFT); /* 3, 1026, 35, 128000 */ if(crusher->audio_codec != AUDIO_CODEC_PCM) { encoderConfigure(crusher, AVE_CFG_AENC_BITRATE, crusher->audio_bitrate); } /* 3, 1026, 18, 1 */ encoderConfigure(crusher, AVE_CFG_PREV_AV_SELECT, AVE_CFP_ENC_SELECT_AV); return 1; }
int mg1264_send_encoder_textconfig(crusher_t *crusher) { /* SEND CONFIG: */ /* ------------------- */ /* encmode %s * 3, 1026, 10, 1, 0 */ if (crusher->bitrate >= 2000000) encoderConfigure(crusher, AVE_CFG_VENC_OPERATIONAL_MODE, AVE_CFG_VENC_OPERATIONAL_MODE_HIGH_BITRATE); else if (crusher->bitrate >= 750000) encoderConfigure(crusher, AVE_CFG_VENC_OPERATIONAL_MODE, AVE_CFG_VENC_OPERATIONAL_MODE_MED_BITRATE); else encoderConfigure(crusher, AVE_CFG_VENC_OPERATIONAL_MODE, AVE_CFG_VENC_OPERATIONAL_MODE_LOW_BITRATE); /* ------------------- */ /* rawcmd 1 28 1 * 1, 28, 1, 0 */ RawCmd(crusher, 1, 28, 1, 0, 0, 0, 0, 0); /* ------------------- */ /* streamtype qbox * 3, 1026, 1, 2, 0 */ if(crusher->out_format == OUT_FORMAT_QBOX) { encoderConfigure(crusher, AVE_CFG_BITSTREAM_TYPE, AVE_CFP_BITSTREAM_TYPE_QBOX); } else if (crusher->out_format == OUT_FORMAT_VES) { encoderConfigure(crusher, AVE_CFG_BITSTREAM_TYPE, AVE_CFP_BITSTREAM_TYPE_ELEM_VIDEO); } else { ERROR("Unknown format: %d", crusher->out_format); return -1; } /* ------------------- */ /* avselect v * 3, 1026, 17, 2, 0 */ encoderConfigure(crusher, AVE_CFG_ENC_AV_SELECT, AVE_CFP_ENC_SELECT_VIDEO_ONLY); /* ------------------- */ /* inputselect v * 3, 1026, 40, 2, 0 */ encoderConfigure(crusher, AVE_CFG_ENC_INPUT_SELECT, AVE_CFP_ENC_SELECT_VIDEO_ONLY); /* ------------------- */ /* progsource 1 * 3, 17, 9, 1, 0 */ encoderConfigureVideo(crusher, AVE_CFG_VIN_PROG_SOURCE,AVE_CFP_VIN_PROG_SOURCE_PROGRESSIVE); /* 3, 18, 1, 0 */ ActivateVideoInCfg(crusher); /* ------------------- */ /* vbitrate %d * 3, 1026, 21, 0x20f580, 0 * 2400000 = 640x480 2000kbps * 2160000 - 720x576,640x480 1800kbps * 1200000 - 320x240 1000kbps */ encoderConfigure(crusher, AVE_CFG_VENC_BITRATE, crusher->bitrate * 1.2); /* ------------------- */ /* vgopsize %d * 3, 1026, 24, 25, 0 (25fps) * 3, 1026, 24, 30, 0 (30fps) */ if(crusher->gopsize) { encoderConfigure(crusher, AVE_CFG_VENC_GOP_SIZE, crusher->gopsize); } else { encoderConfigure(crusher, AVE_CFG_VENC_GOP_SIZE, crusher->framerate_num/crusher->framerate_den); } /* ------------------- */ /* vrcsize 1 %d * 3, 19, 6, 1, 0 */ encoderConfigureRCFile(crusher, AVE_CFG_RCFILE_ENABLER, 1); /* 2nd arg. of: vrcsize 1 %d * 3, 19, 7, 2000000, 0 */ encoderConfigureRCFile(crusher, AVE_CFG_RCFILE_SIZE, crusher->rc_size); /* 3, 20, 2000000, 0 */ ActivateVideoRCCfg(crusher); /* ------------------- */ /* vfieldcoding fra xxxx * 3, 17, 36, 0 */ encoderConfigureVideo(crusher, AVE_CFG_VIN_FIELD_CODING, AVE_CFP_VIN_FIELD_CODING_FRAME); /* 3, 18, 0, 2, 0 */ ActivateVideoInCfg(crusher); /* ------------------- */ /* voutscale 0 * 1, 1026, 14, 0 */ sysConfigure(crusher, SYS_CFG_VENC_VOUT_SCALE, 0); /* vintf 0 * 3, 17, 10, 0 */ encoderConfigureVideo(crusher, AVE_CFG_VINTF_FILTER, 0); /* 3, 17, 11, 0 */ encoderConfigureVideo(crusher, AVE_CFG_VINTF_CHROMA_ATTEN, 0); /* 3, 17, 12, 0 */ encoderConfigureVideo(crusher, AVE_CFG_VINTF_LUMA_ATTEN, 0); /* 3, 17, 15, 0 */ encoderConfigureVideo(crusher, AVE_CFG_VINTF_FILTER_P3, 0); /* 3, 18, 0 */ ActivateVideoInCfg(crusher); /* ------------------- */ /* vseipt %d * 3, 14, 94, 1, 0 */ encoderConfigureVideoEnc(crusher, AVE_CMD_VENC_SEI_PICT_TIMING, 1); /* 3, 15, 1, 0 */ ActivateVideoEncCfg(crusher); /* ------------------- */ /* 3, 14, 91, 1, 0 */ encoderConfigureVideoEnc(crusher, 91, 1); /* 3, 14, 92, 1000000, 0 */ encoderConfigureVideoEnc(crusher, 92, 1000000); /* 3, 14, 93, 1000000, 0 */ encoderConfigureVideoEnc(crusher, 93, 1000000); /* 3, 15, 1000000, 0 */ ActivateVideoEncCfg(crusher); /* encperf %s * 3, 27, 4, 16, 3, 3, 0 * TODO: do it needs other args? */ RawCmd(crusher, AVENCODER_CTRLOBJ_ID, CMD_OPCODE_PERFORMANCE_MODE, AVE_CMDP_PERFORMANCE_MODE_ASTRO_HVGA, 16, 3, 3, 0, 0); /* ------------------- */ /* vscnewgop 1 * 3, 14, 115, 1, 0 */ encoderConfigureVideoEnc(crusher, AVE_CFG_VENC_SCENECHANGE_NEWGOP, crusher->scenecut_threshold); // 3, 15, 1, 0 */ ActivateVideoEncCfg(crusher); /* ------------------- */ /* vdeblock 1 0 0 * 3, 14, 3, 1, 0 */ encoderConfigureVideoEnc(crusher, AVE_CFG_VENC_DEBLOCK_ENABLED, crusher->deblock); /* 3, 14, 4, 0 */ encoderConfigureVideoEnc(crusher, AVE_CFG_VENC_DEBLOCK_ALPHA, crusher->deblock_alpha); /* 3, 14, 5, 0 */ encoderConfigureVideoEnc(crusher, AVE_CFG_VENC_DEBLOCK_BETA, crusher->deblock_beta); /* 3, 15, 0 */ ActivateVideoEncCfg(crusher); /* ------------------- */ /* vrectcap %d %d * 3, 17, 1, 720, 0 */ encoderConfigureVideo(crusher, AVE_CFG_VIDEO_CAPTURE_RECT_W, crusher->width); /* 3, 17, 2, 576, 0 */ encoderConfigureVideo(crusher, AVE_CFG_VIDEO_CAPTURE_RECT_H, crusher->height); /* 3, 17, 3, 0 */ encoderConfigureVideo(crusher, AVE_CFG_VIDEO_CAPTURE_RECT_X_OS, 0); /* 3, 17, 4, 0 */ encoderConfigureVideo(crusher, AVE_CFG_VIDEO_CAPTURE_RECT_Y_OS, 0); /* 3, 18, 0 */ ActivateVideoInCfg(crusher); /* 1, 6, 720, 576, 0 */ videoRectDisp(crusher, crusher->width, crusher->height, 0, 0); /* ------------------- */ /* vvuitiming 1 %d 1 %d (v53, 2 * v54) * 3, 14, 108, 1, 0 */ encoderConfigureVideoEnc(crusher, AVE_CMD_VENC_VUTIMING, 1); /* 3, 14, 120, 100, 0 */ encoderConfigureVideoEnc(crusher, AVE_CMD_VENC_VUTIMING_NUM_UNITS_IN_TICK, crusher->framerate_den); /* 3, 14, 119, 1, 0 */ encoderConfigureVideoEnc(crusher, AVE_CMD_VENC_VUTIMING_FIXED_FRAMERATE, 1); /* 3, 14, 150, 5000, 0 * 30fps=6000 */ encoderConfigureVideoEnc(crusher, AVE_CMD_VENC_VUTIMING_TICKS, crusher->framerate_num*2); /* 3, 15, 5000, 0 */ ActivateVideoEncCfg(crusher); /* -------------------*/ /* vinticks %d %d %d (v54, v53, v53) * 3, 17, 48, 2500, * 30fps=3000 */ encoderConfigureVideo(crusher, AVE_CFG_VIDEO_INOUT_FRAME_TICKSNUM, crusher->framerate_num); /* 3, 17, 28, 100, */ encoderConfigureVideo(crusher, AVE_CFG_VIDEO_IN_FRAMERATE, crusher->framerate_den); /* 3, 17, 31, 100, */ encoderConfigureVideo(crusher, AVE_CFG_VIDEO_INOUT_FRAME_TICKS, crusher->framerate_den); /* 3, 18, */ ActivateVideoInCfg(crusher); /* 3, 14, 121, 100, */ encoderConfigureVideoEnc(crusher, AVE_CFG_VENC_FRAMETICKS, crusher->framerate_den); /* 3, 19, 11, 37500, * 30fps=45000 */ encoderConfigureRCFile(crusher, AVE_CFG_RCBUFFER_INITIAL_DELAY, 15*crusher->framerate_num); /* 3, 15 */ ActivateVideoEncCfg(crusher); /* ------------------- */ /* avcalign 0 0 * 3, 1026, 59, 0 */ encoderConfigure(crusher, AVE_CFG_VENC_AVCALIGN, 0); /* 3, 14, 138, 0 */ encoderConfigureVideoEnc(crusher, AVE_CFG_VENC_AVCALIGN_LEN, 0); /* 3, 15, 0 */ ActivateVideoEncCfg(crusher); /* ------------------- */ /* voutar %d %d */ if (crusher->aspect_ratio_x && crusher->aspect_ratio_y) { /* 1, 18, 5, 16, 0 320x240,640x480:(1,18,5,1), 720x576:(1,18,5,16)*/ sysVOutConfigure(crusher, SYS_CFG_VOUT_ASPECT_X, crusher->aspect_ratio_x); /* 1, 18, 6, 15, 0 320x240,640x480:(1,18,6,1) 720x576:(1,18,5,15)*/ sysVOutConfigure(crusher, SYS_CFG_VOUT_ASPECT_Y, crusher->aspect_ratio_y); /* 1, 19, 15, 0 */ sysActivateOutputCfg(crusher); } /* ------------------- */ if(crusher->offset_x) encoderConfigureVideoEnc(crusher, AVE_CFG_VENC_OFFSET_X, (crusher->width-crusher->offset_x)/2); if(crusher->offset_y) encoderConfigureVideoEnc(crusher, AVE_CFG_VENC_OFFSET_Y, (crusher->height-crusher->offset_y)/2); if(crusher->offset_x||crusher->offset_y) ActivateVideoEncCfg(crusher); /* ------------------- */ /* rawcmd 3 19 1 22 * 3, 19, 1, 22, 0 */ encoderConfigureRCFile(crusher, 1, 22); /* rawcmd 3 20 * 3, 20, 0 */ ActivateVideoRCCfg(crusher); /* ------------------- */ /* rawcmd 3 14 2 * 3, 14, 2, 0 */ encoderConfigureVideoEnc(crusher, 2, 0); /* rawcmd 3 15 * 3, 15, 0 */ ActivateVideoEncCfg(crusher); /* ------------------- */ if (crusher->width == 272 || crusher->width == 528 || crusher->width == 544) { /*rawcmd 3 17 47 1*/ encoderConfigureVideo(crusher, 47, 1); /*rawcmd 3 15*/ ActivateVideoEncCfg(crusher); } return 1; }