This commit is contained in:
AlanRen 2023-07-14 08:51:08 -06:00
parent 61586c816e
commit 732bb17a9a
4 changed files with 89 additions and 54 deletions

View File

@ -5,7 +5,7 @@ namespace SecMedia
{
int GeneHWSecritySEI(uint8_t* dst, CodecId code_type, uint8_t SecrityLevel,uint32_t vid_len, uint8_t sign_len,uint8_t* sign,char* rtp_head,uint16_t rtp_len)
{
char SEIdata[1024] = { 0x00,0x00,0x00,0x01,0x00 };
char SEIdata[2048] = { 0x00,0x00,0x00,0x01,0x00 };
// const char uuid[] = { "U0VDIFZJRCBQUk9U" };
const uint8_t uuid[] = { 0x86,0xb1 ,0x16 ,0x6e ,0xad ,0xef ,0x67 ,0x3f ,0x70 ,0xbc ,0xe7 ,0xc7 ,0xe6 ,0x95 ,0xc6 ,0x09 };
char* ptr = SEIdata;

View File

@ -36,8 +36,8 @@ using namespace std;
#define TRACEL(x,...) //PRINT(WHITE,x,##__VA_ARGS__)
#define DEBUGL(x,...) //PRINT(LIGHT_GRAY,x,##__VA_ARGS__)
#define INFOL(x,...) PRINT(BLUE,x,##__VA_ARGS__)
#define NOTICEL(x,...)PRINT(BROWN,x,##__VA_ARGS__)
#define INFOL(x,...) //PRINT(BLUE,x,##__VA_ARGS__)
#define NOTICEL(x,...)//PRINT(BROWN,x,##__VA_ARGS__)
#define WRNGL(x,...) PRINT(YELLOW,x,##__VA_ARGS__)
#define ERROL(x,...) PRINT(RED,x,##__VA_ARGS__)

View File

@ -259,7 +259,7 @@ void send_rtp(HWsign* Handle,const char * buf, const uint32_t len ,int tcp,void
Handle->rtp_cb(send_buff,len,param);
free(send_buff);
}
void sign_data(HWsign* Handle,const char * buf, const uint32_t len,uint8_t offset,int tcp,void * param,const char * sei_head){
void sign_data(HWsign* Handle,const char * buf, const uint32_t len,uint8_t offset,int tcp,void * param,const char * sei_head, const uint16_t sei_len){
uint8_t sha[128],sign[128],sei[2048],sei_race[1024];
uint16_t sign_len=64;
sm3_update(Handle->sm3_hd,(uint8_t*)buf+offset,len-offset);
@ -274,21 +274,21 @@ void sign_data(HWsign* Handle,const char * buf, const uint32_t len,uint8_t offse
print_data2((char*)sign,64,64);
Handle->sei_param=nullptr;
auto rtp_len=SecMedia::GeneHWSecritySEI(sei,Handle->track_type,1,len-offset,sign_len,sign,(char *)sei_head,Handle->sei_len);
rtp_len=add_racing_code(sei_race,sei+Handle->sei_len,rtp_len-Handle->sei_len);
memcpy(sei+Handle->sei_len,sei_race,rtp_len);
rtp_len+=Handle->sei_len;
DEBUGL("success!!!!!!!!!! sei package\n");
auto rtp_len=SecMedia::GeneHWSecritySEI(sei,Handle->track_type,1,len-offset,sign_len,sign,(char *)sei_head,sei_len);
rtp_len=add_racing_code(sei_race,sei+sei_len,rtp_len-sei_len);
memcpy(sei+sei_len,sei_race,rtp_len);
rtp_len+=sei_len;
SUCSL("success sign!!!!!!!!!! sei package\n");
send_rtp(Handle,(char *) sei,rtp_len,tcp,param);
// Handle->seq_accu++;
}
void none_sign_data(HWsign* Handle,uint8_t offset,int tcp,void * param,const char * sei_head){
uint8_t sei[1024];
auto rtp_len=SecMedia::GeneHWSecritySEI(sei,Handle->track_type,0,0,64,nullptr,(char *)sei_head, Handle->sei_len);
Handle->sei_param=nullptr;
WRNGL("Warning!!!!!!!!!! none sei package\n");
send_rtp(Handle,(char *) sei,rtp_len,tcp,param);
}
// void none_sign_data(HWsign* Handle,uint8_t offset,int tcp,void * param,const char * sei_head){
// uint8_t sei[1024];
// auto rtp_len=SecMedia::GeneHWSecritySEI(sei,Handle->track_type,0,0,64,nullptr,(char *)sei_head, Handle->sei_len);
// Handle->sei_param=nullptr;
// WRNGL("Warning!!!!!!!!!! none sei package\n");
// send_rtp(Handle,(char *) sei,rtp_len,tcp,param);
// }
int HWSign_rtp_out(void* Handle, char * buf, uint32_t * len, void ** param){
HWsign* HWSign_hd=(HWsign*) Handle;
if(!HWSign_hd) return -1;
@ -344,9 +344,15 @@ int HWSign_rtp_264(HWsign* HWSign_hd, const char * buf, const uint32_t len,int t
case 6:{
DEBUGL("SEI!!!!!!!!!! package\n");
if(len<1300){
memcpy(HWSign_hd->sei_rtp_head,buf,len);
HWSign_hd->sei_len=len;
HWSign_hd->sei_param=param;
if (!HWSign_hd->buff->empty())
{
sign_data(HWSign_hd,HWSign_hd->buff->data(),HWSign_hd->buff->size(),0, tcp,param,buf,len);
HWSign_hd->buff->clear();
}else
{
HWSign_hd->rtp_cb(buf,len,param);
}
}
return 1;
}
@ -367,35 +373,32 @@ int HWSign_rtp_264(HWsign* HWSign_hd, const char * buf, const uint32_t len,int t
if (fu.S) { //第一个rtp包
if(!HWSign_hd->buff->empty()){
WRNGL("Warning!!!!!!!!!! missing package\n");
if (HWSign_hd->sei_param!=nullptr)
{
none_sign_data(HWSign_hd,offset,tcp, HWSign_hd->sei_param,HWSign_hd->sei_rtp_head);
}
// if (HWSign_hd->sei_param!=nullptr)
// {
// none_sign_data(HWSign_hd,offset,tcp, HWSign_hd->sei_param,HWSign_hd->sei_rtp_head);
// }
flush_all(HWSign_hd);
// flush_all(HWSign_hd);
}
DEBUGL("!!!!!!!!!! I head\n");
HWSign_hd->I_seq=now_seq;
auto rtp_str=make_shared<string>(buf,len);
HWSign_hd->rtp_buff->push_back(make_pair(rtp_str,param));
// auto rtp_str=make_shared<string>(buf,len);
// HWSign_hd->rtp_buff->push_back(make_pair(rtp_str,param));
HWSign_hd->buff->assign(rtp+2,length-2);
HWSign_hd->rtp_cb(buf,len,param);
return 1;
}
if(HWSign_hd->I_seq>=0){
auto rtp_str=make_shared<string>(buf,len);
HWSign_hd->rtp_buff->push_back(make_pair(rtp_str,param));
// auto rtp_str=make_shared<string>(buf,len);
// HWSign_hd->rtp_buff->push_back(make_pair(rtp_str,param));
HWSign_hd->buff->append(rtp+2,length-2);
HWSign_hd->rtp_cb(buf,len,param);
if (!fu.E) { //中间rtp包
return 1;
}
if (HWSign_hd->sei_param!=nullptr)
{
sign_data(HWSign_hd,HWSign_hd->buff->data(),HWSign_hd->buff->size(),0, tcp,HWSign_hd->sei_param,HWSign_hd->sei_rtp_head);
}
flush_all(HWSign_hd);
// flush_all(HWSign_hd);
HWSign_hd->I_seq=-1;
return 1;
}else{
@ -435,9 +438,17 @@ int HWSign_rtp_265(HWsign* HWSign_hd, const char * buf, const uint32_t len,int t
case NAL_SEI_PREFIX:{
DEBUGL("SEI!!!!!!!!!! package\n");
if(len<1300){
memcpy(HWSign_hd->sei_rtp_head,buf,len);
HWSign_hd->sei_len=len;
HWSign_hd->sei_param=param;
if (!HWSign_hd->buff->empty())
{
sign_data(HWSign_hd,HWSign_hd->buff->data(),HWSign_hd->buff->size(),0, tcp,param,buf,len);
HWSign_hd->buff->clear();
}else
{
HWSign_hd->rtp_cb(buf,len,param);
}
// memcpy(HWSign_hd->sei_rtp_head,buf,len);
// HWSign_hd->sei_len=len;
// HWSign_hd->sei_param=param;
}
return 1;
}
@ -457,33 +468,31 @@ int HWSign_rtp_265(HWsign* HWSign_hd, const char * buf, const uint32_t len,int t
if (fu.S) { //第一个rtp包
if(!HWSign_hd->buff->empty()){
WRNGL("Warning!!!!!!!!!! missing package\n");
if (HWSign_hd->sei_param!=nullptr)
{
none_sign_data(HWSign_hd,offset,tcp, HWSign_hd->sei_param,HWSign_hd->sei_rtp_head);
}
// if (HWSign_hd->sei_param!=nullptr)
// {
// none_sign_data(HWSign_hd,offset,tcp, HWSign_hd->sei_param,HWSign_hd->sei_rtp_head);
// }
flush_all(HWSign_hd);
// flush_all(HWSign_hd);
}
DEBUGL("!!!!!!!!!! I head\n");
HWSign_hd->I_seq=now_seq;
auto rtp_str=make_shared<string>(buf,len);
HWSign_hd->rtp_buff->push_back(make_pair(rtp_str,param));
// auto rtp_str=make_shared<string>(buf,len);
// HWSign_hd->rtp_buff->push_back(make_pair(rtp_str,param));
HWSign_hd->buff->assign(rtp+3,length-3);
HWSign_hd->rtp_cb(buf,len,param);
return 1;
}
if(HWSign_hd->I_seq>=0){
auto rtp_str=make_shared<string>(buf,len);
HWSign_hd->rtp_buff->push_back(make_pair(rtp_str,param));
// auto rtp_str=make_shared<string>(buf,len);
// HWSign_hd->rtp_buff->push_back(make_pair(rtp_str,param));
HWSign_hd->buff->append(rtp+3,length-3);
HWSign_hd->rtp_cb(buf,len,param);
if (!fu.E) { //中间rtp包
return 1;
}
if (HWSign_hd->sei_param!=nullptr)
{
sign_data(HWSign_hd,HWSign_hd->buff->data(),HWSign_hd->buff->size(),0, tcp,HWSign_hd->sei_param,HWSign_hd->sei_rtp_head);
}
flush_all(HWSign_hd);
HWSign_hd->I_seq=-1;
return 1;
}else{
@ -556,7 +565,7 @@ int HWSign_rtp_input(void* Handle, const char * buf, const uint32_t len,int tcp,
}
return ret;
return 1;
}

View File

@ -165,6 +165,32 @@ void UDPtest(){
ARRAY(20,42)
ARRAY(21,42)
ARRAY(1,42)
ARRAY(2,42)
ARRAY(3,42)
ARRAY(4,42)
ARRAY(5,42) //I
ARRAY(6,42)
ARRAY(7,42)
ARRAY(8,42)
ARRAY(9,42)
ARRAY(10,42)
ARRAY(11,42)
ARRAY(12,42)
ARRAY(13,42)
ARRAY(14,42)
ARRAY(15,42)
ARRAY(16,42)
ARRAY(17,42)
ARRAY(18,42)
ARRAY(19,42)
ARRAY(20,42)
ARRAY(21,42)
///Verify init
int vef_ret=-2;
@ -181,8 +207,8 @@ void UDPtest(){
// if(len>1400){
// buf_h[1000]=0x01;
// }
vef_ret=HWVerify_rtp_input(Verify_handle,buf_h,len,0,nullptr);
printf("verify status: %d \n",vef_ret);
// vef_ret=HWVerify_rtp_input(Verify_handle,buf_h,len,0,nullptr);
// printf("verify status: %d \n",vef_ret);
if (ret==-1) break;
udpsocket->Send((char*)buf_h,len,string("192.168.123.1"),30000);