MCPcopy Create free account
hub / github.com/Tencent/libpag / IsStaticComposition

Function IsStaticComposition

exporter/src/utils/AEHelper.cpp:638–691  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

636}
637
638bool IsStaticComposition(const AEGP_CompH& compositionHandle) {
639 bool isStatic = true;
640 AEGP_ItemH itemHandle = GetCompItemH(compositionHandle);
641 pag::Frame totalFrames = GetItemDuration(itemHandle);
642 if (totalFrames <= 1) {
643 return isStatic;
644 }
645
646 AEGP_RenderOptionsH renderOptions = nullptr;
647 float frameRate = GetItemFrameRate(itemHandle);
648
649 Suites->RenderOptionsSuite3()->AEGP_NewFromItem(PluginID, itemHandle, &renderOptions);
650 if (renderOptions == nullptr) {
651 return isStatic;
652 }
653
654 uint8_t* curData = nullptr;
655 uint8_t* preData = nullptr;
656 pag::Frame step = 1;
657 while (true) {
658 pag::Frame value = totalFrames / step;
659 if (value < 100) {
660 break;
661 }
662 step *= 10;
663 }
664 for (pag::Frame frame = 0; frame < totalFrames; frame += step) {
665 SetRenderTime(renderOptions, frameRate, frame);
666 A_long width = 0;
667 A_long height = 0;
668 A_u_long stride = 0;
669 GetRenderFrameSize(renderOptions, stride, width, height);
670 if (curData == nullptr) {
671 curData = new uint8_t[stride * height];
672 }
673 GetRenderFrame(curData, stride, stride, width, height, renderOptions);
674 if (curData != nullptr && preData != nullptr &&
675 !exporter::ImageIsStatic(curData, preData, width, height, stride)) {
676 isStatic = false;
677 break;
678 }
679 std::swap(curData, preData);
680 }
681
682 if (curData != nullptr) {
683 delete[] curData;
684 }
685 if (preData != nullptr) {
686 delete[] preData;
687 }
688 Suites->RenderOptionsSuite3()->AEGP_Dispose(renderOptions);
689
690 return isStatic;
691}
692
693std::string GetStreamMatchName(const AEGP_StreamRefH& streamHandle) {
694 char matchName[200] = {0};

Callers 1

GetCompositionTypeFunction · 0.85

Calls 7

GetCompItemHFunction · 0.85
GetItemDurationFunction · 0.85
GetItemFrameRateFunction · 0.85
SetRenderTimeFunction · 0.85
GetRenderFrameSizeFunction · 0.85
GetRenderFrameFunction · 0.85
ImageIsStaticFunction · 0.85

Tested by

no test coverage detected