diff --git a/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c b/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c index a34caf245..8a294af4e 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c @@ -1378,6 +1378,20 @@ static void MovieExe_RawEncodeFileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) static void MovieExe_UserEventCb(UINT32 id, MOVIE_USER_CB_EVENT event_id, UINT32 value) { switch ((UINT32)event_id) { + + case MOVIE_USER_CB_EVENT_SET_ENC_RC_INFO: { + HD_H26XENC_RATE_CONTROL2 *ptr = (HD_H26XENC_RATE_CONTROL2 *)value; + if (id == _CFG_REC_ID_1 || id == _CFG_CLONE_ID_1) { + ptr->rc_mode = HD_RC_MODE_VBR; + ptr->vbr.init_i_qp = 26; + ptr->vbr.max_i_qp = 51; + ptr->vbr.min_i_qp = 1; + ptr->vbr.init_p_qp = 26; + ptr->vbr.max_p_qp = 51; + ptr->vbr.min_p_qp = 1; + } + } + break; case MOVIE_USER_CB_EVENT_STAMP_CB: { } break; diff --git a/code/application/source/sf_app/code/include/sf_mcu_upgrade.h b/code/application/source/sf_app/code/include/sf_mcu_upgrade.h index f0a86d7f5..70fea7492 100755 --- a/code/application/source/sf_app/code/include/sf_mcu_upgrade.h +++ b/code/application/source/sf_app/code/include/sf_mcu_upgrade.h @@ -44,6 +44,7 @@ typedef enum{ FWUPGRADE_TRANSFER_PACKET_STATE, FWUPGRADE_TRANSFER_FINISH_STATE, FWUPGRADE_ERROR_OCCUR_STATE, + FWUPGRADE_END, }FW_UPGRADE_STATE_e; extern unsigned char mcu_upgrade_buf[32]; diff --git a/code/application/source/sf_app/code/source/app/sf_system.c b/code/application/source/sf_app/code/source/app/sf_system.c index 88d9862c0..7c81ebd72 100755 --- a/code/application/source/sf_app/code/source/app/sf_system.c +++ b/code/application/source/sf_app/code/source/app/sf_system.c @@ -925,7 +925,7 @@ void sf_power_off(void) sf_power_off_check_sd(); sf_power_off_check_sd_fail(); - + sf_poweroff_check_lpa_excute_cmd(); sf_poweroff_check_lpa_enable_profile(); @@ -1317,7 +1317,7 @@ void* sf_sys_do_4g_upgrade(void *arg) } - ModeuleUpgradeTskParam.IsRun = 2; + ModeuleUpgradeTskParam.IsRun = 0; SLOGW("Begin to do 4G Upgrade e\n"); return NULL; @@ -1326,10 +1326,12 @@ void* sf_sys_do_4g_upgrade(void *arg) void sf_do_4g_upgrade_thread(void) { printf("ModeuleUpgradeTskParam.IsRun:%d\n", ModeuleUpgradeTskParam.IsRun); - if(ModeuleUpgradeTskParam.IsRun == 2) + if(ModeuleUpgradeTskParam.IsRun != 0) { - ModeuleUpgradeTskParam.IsRun = 0; - pthread_join(ModeuleUpgradeTskParam.TskId, NULL); + // ModeuleUpgradeTskParam.IsRun = 0; + // pthread_join(ModeuleUpgradeTskParam.TskId, NULL); + SLOGW("4G Upgrade thread run\n"); + return; } if(!ModeuleUpgradeTskParam.IsRun) @@ -1641,13 +1643,21 @@ void* sf_app_mcu_updata_thread(void *arg) { SLOGI("thread run\n"); - McuUpDataTskCfg.IsRun = 1; MLOGI("MCU_UPGRADE\n"); UINT32 McuFsize = 0; SINT8 ret = 0; int sdflag = 0; int emmcflag = 0; char file_path[64] = {0}; + + if(SF_FAILURE == sf_check_sd()) + { + MLOGE("ERROR sf_check_sd\n"); + McuUpDataTskCfg.IsRun = 0; + SLOGI("thread end\n"); + return NULL; + } + if((access("/mnt/sd/Mupgrade.bin", F_OK) == 0)) { sdflag = 1; @@ -1682,7 +1692,6 @@ void* sf_app_mcu_updata_thread(void *arg) MLOGI(" sf_power_off_msg_to_cardv\n"); sf_power_off_msg_to_cardv(); } - McuUpDataTskCfg.IsRun = 0; SLOGI("thread end\n"); return NULL; @@ -1695,6 +1704,7 @@ SINT32 sf_app_mcu_updata_start(void) SLOGE("thread has already run !!!\n"); return SF_FAILURE; } + McuUpDataTskCfg.IsRun = 1; ret = pthread_create(&McuUpDataTskCfg.TskId, NULL, sf_app_mcu_updata_thread, NULL); if(ret != SF_SUCCESS) { @@ -1704,3 +1714,4 @@ SINT32 sf_app_mcu_updata_start(void) return SF_SUCCESS; } + diff --git a/code/application/source/sf_app/code/source/systemMng/sf_mcu_upgrade.c b/code/application/source/sf_app/code/source/systemMng/sf_mcu_upgrade.c index d99a3c4a0..cddb9d161 100755 --- a/code/application/source/sf_app/code/source/systemMng/sf_mcu_upgrade.c +++ b/code/application/source/sf_app/code/source/systemMng/sf_mcu_upgrade.c @@ -39,6 +39,7 @@ #include "sf_system.h" #include "sf_fileMng.h" #include "sf_storeMng.h" +#include "sf_commu_mcu.h" #ifdef __cplusplus #if __cplusplus extern "C" { @@ -228,12 +229,13 @@ SINT8 Fw_Read(UINT8* cmd, void * data, UINT32* size) } //len = read(fd, recvBuf, len); + ret = sf_commu_wait(MCU_FLAG_GET); + while(mcu_upgrade_buf_len == 0 && trytimes < 100) { trytimes++; usleep(10000); } - //ret = depack(recvBuf, len, cmd, data, size); ret = depack(mcu_upgrade_buf, mcu_upgrade_buf_len, cmd, (UINT8*)data, size); mcu_upgrade_buf_len = 0; @@ -352,11 +354,13 @@ static void * FwUpgradeTask(void * argv) { snprintf(file_path, sizeof(file_path), "/mnt/sd2/Mupgrade.bin"); } + printf("file_path:%s\r\n",file_path); if(file_path[0] == '\0') { MLOGE("no update file\n"); return NULL; } + FwUpgradeState = FWUPGRADE_INIT_STATE; while(FwUpgradeExit == 0) { @@ -476,7 +480,9 @@ static void * FwUpgradeTask(void * argv) ret = Fw_Send(0xee, &data, len + 4); ret = Fw_Read(&cmd, recvBuf, &recvl); - + // for(unsigned int i = 0; i < recvl; i++){ + // printf("srecv 0x%x\r\n", recvBuf[i]); + // } ack_id = ((UINT16)recvBuf[1]) << 8 | recvBuf[2]; printf("cmd %x, ack_id %d, pkt_id %d, recv3 %x\r\n", cmd, ack_id, pkt_id, recvBuf[3]); @@ -488,6 +494,10 @@ static void * FwUpgradeTask(void * argv) if(fw_packet.fw_total_size == fw_packet.fw_complete_size) { ret = Fw_Read(&cmd, recvBuf, &recvl); + // printf("cmd %x\r\n",cmd); + // for(unsigned int i = 0; i < recvl; i++){ + // printf("recv 0x%x\r\n", recvBuf[i]); + // } if(recvBuf[1] == 0) { FwUpgradeState = FWUPGRADE_TRANSFER_FINISH_STATE; @@ -512,25 +522,35 @@ static void * FwUpgradeTask(void * argv) case FWUPGRADE_TRANSFER_FINISH_STATE: printf("FWUPGRADE_TRANSFER_FINISH_STATE\r\n"); //sf_sys_status_led_set(SF_LED_SYS_STATE_UPGRADE_SUCCESS); - free(fw_packet.fw_content); + if(fw_packet.fw_content != NULL) + { + free(fw_packet.fw_content); + fw_packet.fw_content = NULL; + } /*exit upgrade thread*/ - FwUpgradeExit = 1; + FwUpgradeExit = 1; + FwUpgradeState = FWUPGRADE_END; break; case FWUPGRADE_ERROR_OCCUR_STATE: printf("FWUPGRADE_ERROR_OCCUR_STATE\r\n"); if(fw_packet.fw_content != NULL) { - free(fw_packet.fw_content); + free(fw_packet.fw_content); + fw_packet.fw_content = NULL; } data[0] = 0; ret = Fw_Send(0xec, data, 1); /*notify mcu to exit upgrade mode*/ + recvl = 0; Fw_Read(&cmd, recvBuf, &recvl); - + printf("cmd %x\r\n",cmd); + for(unsigned int i = 0; i < recvl; i++) + printf("recv 0x%x\r\n", recvBuf[i]); sf_power_off_msg_to_cardv(); /*exit upgrade thread*/ FwUpgradeExit = 1; + FwUpgradeState = FWUPGRADE_END; break; default: @@ -539,9 +559,9 @@ static void * FwUpgradeTask(void * argv) usleep(200000); } - free(file_path); printf("ret is %d\r\n", ret); - pthread_exit(NULL); + return NULL; +//pthread_exit(NULL); } diff --git a/code/lib/include/ImageApp/ImageApp_MovieMulti.h b/code/lib/include/ImageApp/ImageApp_MovieMulti.h index acdeae1ff..bcd3ea748 100755 --- a/code/lib/include/ImageApp/ImageApp_MovieMulti.h +++ b/code/lib/include/ImageApp/ImageApp_MovieMulti.h @@ -598,6 +598,7 @@ typedef enum { MOVIE_USER_CB_EVENT_JENC_DONE, MOVIE_USER_CB_EVENT_UVAC, MOVIE_USER_CB_EVENT_PREV_CARSH_FILE_COMPLETED, + MOVIE_USER_CB_EVENT_SET_ENC_RC_INFO, // ERROR MOVIE_USER_CB_ERROR_CARD_SLOW = 0x0000E400, diff --git a/code/lib/source/ImageApp/MovieMulti/libimageapp_moviemulti.a b/code/lib/source/ImageApp/MovieMulti/libimageapp_moviemulti.a index 639070553..9091ab6e6 100644 Binary files a/code/lib/source/ImageApp/MovieMulti/libimageapp_moviemulti.a and b/code/lib/source/ImageApp/MovieMulti/libimageapp_moviemulti.a differ diff --git a/code/lib/source/ImageApp/MovieMulti/libimageapp_moviemulti.so b/code/lib/source/ImageApp/MovieMulti/libimageapp_moviemulti.so index 661dbbd46..506961905 100644 Binary files a/code/lib/source/ImageApp/MovieMulti/libimageapp_moviemulti.so and b/code/lib/source/ImageApp/MovieMulti/libimageapp_moviemulti.so differ diff --git a/code/lib/source/sifar/code/source/common/sf_common.c b/code/lib/source/sifar/code/source/common/sf_common.c index a4831ccd5..9724c0a24 100755 --- a/code/lib/source/sifar/code/source/common/sf_common.c +++ b/code/lib/source/sifar/code/source/common/sf_common.c @@ -2351,7 +2351,7 @@ void* sf_sys_do_upgrade(void *arg) } //sf_set_fw_update(0); - UpgradeTskParam.IsRun = 2; + UpgradeTskParam.IsRun = 0; return NULL; } @@ -2359,12 +2359,11 @@ void* sf_sys_do_upgrade(void *arg) void sf_do_upgrade_thread(void) { printf("UpgradeTskParam.IsRun:%d\n", UpgradeTskParam.IsRun); - if(UpgradeTskParam.IsRun == 2) + if(UpgradeTskParam.IsRun != 0) { - UpgradeTskParam.IsRun = 0; - pthread_join(UpgradeTskParam.TskId, NULL); + SLOGW("cam Upgrade thread run\n"); + return ; } - if(!UpgradeTskParam.IsRun) { pthread_create(&UpgradeTskParam.TskId, NULL, sf_sys_do_upgrade, NULL); diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c index 56510b9ff..cbf2f93d3 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c @@ -1207,6 +1207,20 @@ static void MovieFast_UserEventCb(UINT32 id, MOVIE_USER_CB_EVENT event_id, UINT3 //static UINT32 u32Cnt = 0; switch ((UINT32)event_id) { + + case MOVIE_USER_CB_EVENT_SET_ENC_RC_INFO: { + HD_H26XENC_RATE_CONTROL2 *ptr = (HD_H26XENC_RATE_CONTROL2 *)value; + if (id == _CFG_REC_ID_1 || id == _CFG_CLONE_ID_1) { + ptr->rc_mode = HD_RC_MODE_VBR; + ptr->vbr.init_i_qp = 26; + ptr->vbr.max_i_qp = 51; + ptr->vbr.min_i_qp = 1; + ptr->vbr.init_p_qp = 26; + ptr->vbr.max_p_qp = 51; + ptr->vbr.min_p_qp = 1; + } + } + break; #if 0 case MOVIE_USER_CB_EVENT_REC_ONE_SECOND: { u32Cnt++; @@ -2284,12 +2298,6 @@ static void MovieFast_Close(void) while(1) { - if(PhotoFast_Sliceencode2_Enq_Frame(&frame) == E_OK){ - break; - } - else{ - vos_util_delay_ms(5); - } vos_perf_mark(&t2); if((vos_perf_duration(t1, t2) / 1000) > (20*1000)) { @@ -2297,6 +2305,12 @@ static void MovieFast_Close(void) DBG_ERR("failed es timeout\n"); goto EXIT; } + if(PhotoFast_Sliceencode2_Enq_Frame(&frame) == E_OK){ + break; + } + else{ + vos_util_delay_ms(5); + } } } diff --git a/rtos/code/lib/include/ImageApp/ImageApp_MovieMulti.h b/rtos/code/lib/include/ImageApp/ImageApp_MovieMulti.h index 5242d6e07..7271e5deb 100755 --- a/rtos/code/lib/include/ImageApp/ImageApp_MovieMulti.h +++ b/rtos/code/lib/include/ImageApp/ImageApp_MovieMulti.h @@ -101,7 +101,7 @@ typedef enum { IAMOVIE_VPRC_EX_ALG, IAMOVIE_VPRC_EX_DISP2, IAMOVIE_VPRC_EX_ALG2, - IAMOVIE_VPRC_EX_MAX, + IAMOVIE_VPRC_EX_MAX, ENUM_DUMMY4WORD(IAMOVIE_VPRC_EX_PATH) } IAMOVIE_VPRC_EX_PATH; @@ -601,6 +601,7 @@ typedef enum { MOVIE_USER_CB_EVENT_JENC_DONE, MOVIE_USER_CB_EVENT_UVAC, MOVIE_USER_CB_EVENT_PREV_CARSH_FILE_COMPLETED, + MOVIE_USER_CB_EVENT_SET_ENC_RC_INFO, // ERROR MOVIE_USER_CB_ERROR_CARD_SLOW = 0x0000E400, diff --git a/rtos/code/lib/output/libimageapp_moviemulti.a b/rtos/code/lib/output/libimageapp_moviemulti.a index 02b0aa1a4..abdfde1d5 100644 Binary files a/rtos/code/lib/output/libimageapp_moviemulti.a and b/rtos/code/lib/output/libimageapp_moviemulti.a differ