📄 p64encoder.cxx
字号:
/*p64encoder.h copyright (c)Indranet Technologies ltd (lara@indranet.co.nz) * Author Derek J Smithies (derek@indranet.co.nz) * *This file contains code which is the top level of * a)video grabbing * b)transformation into h261 packets. * * Questions may be address to Derek J Smithies. * ****************************************************************/#include "p64encoder.h"P64Encoder::P64Encoder(int videoInput, BOOL videoIsPal){ trans = new Transmitter(); h261_edr = new H261PixelEncoder(trans); video_grab = new VideoGrabber(videoInput, videoIsPal); vid_frame = new VideoFrame(0,WIDTH,HEIGHT); pre_vid = new Pre_Vid_Coder(); video_grab->SetSize(WIDTH,HEIGHT); video_grab->Start();}P64Encoder::~P64Encoder(){ video_grab->Stop(); delete video_grab; delete pre_vid; delete vid_frame; delete h261_edr; delete trans; }void P64Encoder::SetSize(int width,int height) { vid_frame->SetSize(width,height);}void P64Encoder::GrabOneFrame() { video_grab->Grab(vid_frame); }void P64Encoder::ProcessOneFrame(){ pre_vid->ProcessFrame(vid_frame); h261_edr->consume(vid_frame);} void P64Encoder::ReadOnePacket( u_char * buffer, /// Buffer of encoded data unsigned & length /// Actual length of encoded data buffer ){ u_char * b_ptr; u_char * h_ptr; unsigned len_head,len_buff; trans->GetNextPacket(&h_ptr,&b_ptr, len_head,len_buff); length=len_head+len_buff; long int h261_hdr=*(long int *)h_ptr; *(long int *)buffer= htonl(h261_hdr); memcpy(buffer+len_head,b_ptr,len_buff);}const u_char* P64Encoder::Frame(){ if(vid_frame) return vid_frame->frameptr; return NULL; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -