1 #include "FrameProperties.h" 2 #include "ADM_imageFlags.h" 3 4 namespace ADM_qtScript 5 { FrameProperties(IEditor * editor,uint64_t time)6 FrameProperties::FrameProperties(IEditor * editor, uint64_t time) : QtScriptObject(editor) 7 { 8 this->_time = time; 9 10 uint32_t flags, quantiser; 11 12 if (time == editor->getCurrentFramePts()) 13 { 14 editor->getCurrentFrameFlags(&flags, &quantiser); 15 16 this->_fieldType = this->getFieldType(flags); 17 this->_frameType = this->getFrameType(flags); 18 this->_quantiser = quantiser; 19 } 20 else 21 { 22 // currently too awkward to retrieve properties of a frame 23 // without affecting the editor since everything is tightly coupled 24 this->_fieldType = FrameProperties::UnknownField; 25 this->_frameType = FrameProperties::UnknownFrame; 26 this->_quantiser = 0; 27 } 28 } 29 getFieldType(void)30 QScriptValue FrameProperties::getFieldType(void) 31 { 32 return (int)this->_fieldType; 33 } 34 getFrameType(void)35 QScriptValue FrameProperties::getFrameType(void) 36 { 37 return (int)this->_frameType; 38 } 39 getQuantiser(void)40 QScriptValue FrameProperties::getQuantiser(void) 41 { 42 return this->_quantiser; 43 } 44 getTime(void)45 QScriptValue FrameProperties::getTime(void) 46 { 47 return (double)this->_time; 48 } 49 getFrameType(int frameType)50 FrameProperties::CodingType FrameProperties::getFrameType(int frameType) 51 { 52 switch (frameType & AVI_FRAME_TYPE_MASK) 53 { 54 case AVI_KEY_FRAME: 55 return FrameProperties::I_Frame; 56 57 case AVI_B_FRAME: 58 return FrameProperties::B_Frame; 59 60 case 0: 61 return FrameProperties::P_Frame; 62 63 default: 64 return FrameProperties::UnknownFrame; 65 } 66 } 67 getFieldType(int frameType)68 FrameProperties::FieldType FrameProperties::getFieldType(int frameType) 69 { 70 switch (frameType & AVI_STRUCTURE_TYPE_MASK) 71 { 72 case AVI_TOP_FIELD + AVI_FIELD_STRUCTURE: 73 return FrameProperties::TopField; 74 75 case AVI_BOTTOM_FIELD + AVI_FIELD_STRUCTURE: 76 return FrameProperties::BottomField; 77 78 case AVI_FRAME_STRUCTURE: 79 return FrameProperties::NoField; 80 81 default: 82 return FrameProperties::UnknownField; 83 } 84 } 85 } 86