int CGit::GetShortLog(CString &logOut,CTGitPath * path, int count) { CString cmd; CString log; int n; if(count<0) n=100; else n=count; cmd.Format(_T("git.exe log --left-right --boundary --topo-order -n%d --pretty=format:\""),n); BuildOutputFormat(log,false); cmd += log+_T("\""); if (path) cmd+= _T(" -- \"")+path->GetGitPathString()+_T("\""); //cmd += CString(_T("\" HEAD~40..HEAD")); return Run(cmd,&logOut); }
static int Process( ffmpeg_video* p, const packet* Packet, const flowstate* State ) { int Picture; int Len; if (Packet) { if (State->DropLevel) { if (State->DropLevel>1) { p->SkipToKey = 1; p->DropToKey = 1; p->Dropping = 1; p->Context->hurry_up = 5; } else p->Context->hurry_up = 1; if (!SupportDrop(p)) p->Context->hurry_up = 0; } else p->Context->hurry_up = 0; if (!Packet->Key && p->DropToKey) { if (p->Dropping) { flowstate DropState; DropState.CurrTime = TIME_UNKNOWN; DropState.DropLevel = 1; p->Codec.Out.Process(p->Codec.Out.Pin.Node,NULL,&DropState); } if (SupportDrop(p)) avcodec_flush_buffers(p->Context); return ERR_DROPPING; } if (p->DropToKey) p->DropToKey = 0; if (Packet->RefTime >= 0) p->Codec.Packet.RefTime = Packet->RefTime; BufferPack(&p->Buffer,0); if(p->Codec.In.Pin.Node->Class==FOURCC('R','V','_','0')&& (p->Codec.In.Format.Format.Video.Pixel.FourCC == FOURCC('R','V','1','0')|| p->Codec.In.Format.Format.Video.Pixel.FourCC == FOURCC('R','V','2','0')|| p->Codec.In.Format.Format.Video.Pixel.FourCC == FOURCC('R','V','3','0')|| p->Codec.In.Format.Format.Video.Pixel.FourCC == FOURCC('R','V','4','0'))) { int32_t ret = rm_assemble_video_frame(p,Packet); if(ret != ERR_NONE) return ERR_NEED_MORE_DATA; } else { BufferWrite(&p->Buffer,Packet->Data[0],Packet->Length,2048); } } else { if (p->FrameTime<0) p->Codec.Packet.RefTime = TIME_UNKNOWN; else if (!State) p->Codec.Packet.RefTime += p->FrameTime; if (!State && p->Buffer.WritePos == p->Buffer.ReadPos) return ERR_NEED_MORE_DATA; } if (p->SkipToKey) p->Picture->pict_type = 0; Len = avcodec_decode_video(p->Context, p->Picture, &Picture, p->Buffer.Data + p->Buffer.ReadPos, p->Buffer.WritePos - p->Buffer.ReadPos); if (Len < 0) { BufferDrop(&p->Buffer); return ERR_INVALID_DATA; } p->Buffer.ReadPos += Len; if (!Picture) { if (p->SkipToKey>1 && p->Picture->pict_type) --p->SkipToKey; return ERR_NEED_MORE_DATA; } if (p->SkipToKey>0) { if ((!p->Picture->key_frame && p->Picture->pict_type) || p->SkipToKey>1) { if (p->SkipToKey>1) --p->SkipToKey; if (p->Dropping) { flowstate DropState; DropState.CurrTime = TIME_UNKNOWN; DropState.DropLevel = 1; p->Codec.Out.Process(p->Codec.Out.Pin.Node,NULL,&DropState); } return ERR_DROPPING; } p->SkipToKey = 0; } if (p->Context->pix_fmt != p->PixelFormat || p->Context->sample_aspect_ratio.num != p->Aspect.num || p->Context->sample_aspect_ratio.den != p->Aspect.den || p->Context->width != p->Codec.Out.Format.Format.Video.Width || p->Context->height != p->Codec.Out.Format.Format.Video.Height || p->Picture->linesize[0] != p->Codec.Out.Format.Format.Video.Pitch) { if (!BuildOutputFormat(p)) return ERR_INVALID_DATA; ConnectionUpdate(&p->Codec.Node,CODEC_OUTPUT,p->Codec.Out.Pin.Node,p->Codec.Out.Pin.No); } p->Codec.Packet.Data[0] = p->Picture->data[0]; p->Codec.Packet.Data[1] = p->Picture->data[1]; p->Codec.Packet.Data[2] = p->Picture->data[2]; return ERR_NONE; }
static int UpdateInput( ffmpeg_video* p ) { if (p->Context) avcodec_close(p->Context); av_free(p->Context); av_free(p->Picture); p->Context = NULL; p->Picture = NULL; BufferClear(&p->Buffer); if (p->Codec.In.Format.Type == PACKET_VIDEO) { AVCodec *Codec; const codecinfo *i; for (i=Info;i->Id;++i) if (i->Id == p->Codec.Node.Class) break; if (!i->Id) return ERR_INVALID_DATA; Codec = avcodec_find_decoder(i->CodecId); if (!Codec) return ERR_INVALID_DATA; p->Context = avcodec_alloc_context(); p->Picture = avcodec_alloc_frame(); if (!p->Context || !p->Picture) return ERR_OUT_OF_MEMORY; if ((p->Codec.In.Format.Format.Video.Pixel.Flags & PF_FRAGMENTED) && (Codec->capabilities & CODEC_CAP_TRUNCATED)) p->Context->flags|= CODEC_FLAG_TRUNCATED; UpdateSettings(p); p->Context->palctrl = NULL; p->Context->bit_rate = 0; p->Context->extradata = p->Codec.In.Format.Extra; p->Context->extradata_size = p->Codec.In.Format.ExtraLength; p->Context->width = p->Codec.In.Format.Format.Video.Width; p->Context->height = p->Codec.In.Format.Format.Video.Height; p->Context->bits_per_coded_sample = p->Codec.In.Format.Format.Video.Pixel.BitCount; if (p->Codec.In.Format.Format.Video.Pixel.Palette && p->Codec.In.Format.Format.Video.Pixel.BitCount<=8) { int i,n = 1 << p->Codec.In.Format.Format.Video.Pixel.BitCount; for (i=0;i<n;++i) p->Palette.palette[i] = INT32LE(p->Codec.In.Format.Format.Video.Pixel.Palette[i].v); p->Palette.palette_changed = 1; p->Context->palctrl = &p->Palette; } p->CodecId = i->CodecId; if (avcodec_open(p->Context,Codec)<0) { // avoid calling avcodec_close at next UpdateInput av_free(p->Context); p->Context = NULL; return ERR_INVALID_DATA; } if (!BuildOutputFormat(p)) return ERR_INVALID_DATA; p->SkipToKey = 1; p->DropToKey = 1; p->Dropping = 0; } return ERR_NONE; }
//int CGit::GetLog(CGitCall* pgitCall, CString &hash, CTGitPath *path ,int count,int mask) int CGit::GetLog(CGitCall* pgitCall, CString &hash, CTGitPath *path, int count, int mask,CString *from,CString *to) { CString cmd; CString log; CString num; CString since; CString file; if(path) file.Format(_T(" -- \"%s\""),path->GetGitPathString()); if(count>0) num.Format(_T("-n%d"),count); CString param; if(mask& LOG_INFO_STAT ) param += _T(" --numstat "); if(mask& LOG_INFO_FILESTATE) param += _T(" --raw "); if(mask& LOG_INFO_FULLHISTORY) param += _T(" --full-history "); if(mask& LOG_INFO_BOUNDARY) param += _T(" --left-right --boundary "); if(mask& CGit::LOG_INFO_ALL_BRANCH) param += _T(" --all "); if(mask& CGit::LOG_INFO_DETECT_COPYRENAME) param += _T(" -C "); if(mask& CGit::LOG_INFO_DETECT_RENAME ) param += _T(" -M "); if(mask& CGit::LOG_INFO_FIRST_PARENT ) param += _T(" --first-parent "); if(mask& CGit::LOG_INFO_NO_MERGE ) param += _T(" --no-merges "); if(mask& CGit::LOG_INFO_FOLLOW) param += _T(" --follow "); if(from != NULL && to != NULL) { CString range; range.Format(_T(" %s..%s "),*from,*to); param += range; } param+=hash; cmd.Format(_T("git.exe log %s -z --topo-order %s --parents --pretty=format:\""), num,param); BuildOutputFormat(log,!(mask&CGit::LOG_INFO_ONLY_HASH)); cmd += log; cmd += CString(_T("\" "))+hash+file; pgitCall->SetCmd(cmd); return Run(pgitCall); // return Run(cmd,&logOut); }