class MARKUP( object ):
MARK_UNSET = -10
MARK_UPDATED_CUT = -3
MARK_EDIT_MODE = -2
MARK_CUT_END = 0
MARK_CUT_START = 1
MARK_BOOKMARK = 2
MARK_BLANK_FRAME = 3
MARK_COMM_START = 4
MARK_COMM_END = 5
MARK_GOP_START = 6
MARK_KEYFRAME = 7
MARK_SCENE_CHANGE = 8
MARK_GOP_BYFRAME = 9
MARK_ASPECT_1_1 = 10
MARK_ASPECT_4_3 = 11
MARK_ASPECT_16_9 = 12
MARK_ASPECT_2_21_1 = 13
MARK_ASPECT_CUSTOM = 14
MARK_VIDEO_WIDTH = 30
MARK_VIDEO_HEIGHT = 31
class MARKUPLIST( object ):
def _buildlist(self, start, end):
start = []
stop = []
for mark in self:
if mark.type == start:
if len(start) == len(stop):
# start new cut
start.append(mark.mark)
#else: a cut has already been started
elif mark.type == end:
if len(start) == 0:
# endpoint found without startpoint
start.append(0)
if len(start) > len(stop):
# end cut
stop.append(mark.mark)
else:
# replace cut endpoint
stop[len(stop)-1] = mark.mark
if len(start) > len(stop):
# endpoint missing, no known better option
stop.append(9999999)
return zip(start, stop)
class Recorded( DBDataWrite, CMPRecord ):
class _Seek( DBDataRef, MARKUP, MARKUPLIST ):
_table = 'recordedseek'
_ref = ['chanid','starttime']
def getskiplist(self):
return self._buildlist(self.MARK_COMM_START, self.MARK_COMM_END)
def getunskiplist(self):
return self._buildlist(self.MARK_COMM_END, self.MARK_COMM_START)
class _Markup( DBDataRef, MARKUP, MARKUPLIST ):
_table = 'recordedmarkup'
_ref = ['chanid','starttime']
def getcutlist(self):
return self._buildlist(self.MARK_CUT_START, self.MARK_CUT_END)
def getuncutlist(self):
return self._buildlist(self.MARK_CUT_END, self.MARK_CUT_START)