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