Skip to content

Commit

Permalink
libmatroska2: rename all timecode API's to timestamp
Browse files Browse the repository at this point in the history
  • Loading branch information
robUx4 committed Apr 5, 2021
1 parent 0ca8845 commit 08f975a
Show file tree
Hide file tree
Showing 8 changed files with 315 additions and 315 deletions.
44 changes: 22 additions & 22 deletions libmatroska2/MatroskaParser/MatroskaParser.c
Original file line number Diff line number Diff line change
Expand Up @@ -257,16 +257,16 @@ static bool_t parseSegmentInfo(ebml_element *SegmentInfo, MatroskaFile *File, ch
}
File->pSegmentInfo = EBML_ElementPosition(SegmentInfo);
File->SegmentInfo = SegmentInfo;
File->Seg.TimecodeScale = MATROSKA_getContextTimestampScale()->DefaultValue;
File->Seg.TimestampScale = MATROSKA_getContextTimestampScale()->DefaultValue;

for (Elt = EBML_MasterChildren(SegmentInfo);Elt;Elt = EBML_MasterNext(Elt))
{
if (EBML_ElementClassID(Elt) == MATROSKA_getContextTimestampScale()->Id)
{
File->Seg.TimecodeScale = EBML_IntegerValue(Elt);
if (File->Seg.TimecodeScale==0)
File->Seg.TimestampScale = EBML_IntegerValue(Elt);
if (File->Seg.TimestampScale==0)
{
strncpy(err_msg,"Segment timecode scale is zero",err_msgSize);
strncpy(err_msg,"Segment timestamp scale is zero",err_msgSize);
return 0;
}
}
Expand Down Expand Up @@ -337,7 +337,7 @@ static bool_t parseSegmentInfo(ebml_element *SegmentInfo, MatroskaFile *File, ch
}
}
if (duration > 0.0)
File->Seg.Duration = (timecode_t)(duration * File->Seg.TimecodeScale);
File->Seg.Duration = (mkv_timestamp_t)(duration * File->Seg.TimestampScale);

return 1;
}
Expand All @@ -357,12 +357,12 @@ static bool_t parseTrackEntry(ebml_element *Track, MatroskaFile *File, char *err
return 0;

memset(&track,0,sizeof(track));
track.DefaultDuration = INVALID_TIMECODE_T;
track.DefaultDuration = INVALID_TIMESTAMP_T;
track.Enabled = MATROSKA_getContextTrackEnabled()->DefaultValue;
track.Default = MATROSKA_getContextTrackDefault()->DefaultValue;
track.Lacing = MATROSKA_getContextTrackLacing()->DefaultValue;
track.DecodeAll = MATROSKA_getContextTrackCodecDecodeAll()->DefaultValue;
track.TimecodeScale = (float)MATROSKA_getContextTrackTimestampScale()->DefaultValue;
track.TimestampScale = (float)MATROSKA_getContextTrackTimestampScale()->DefaultValue;
memcpy(track.Language, "eng", 4);

for (Elt = EBML_MasterChildren(Track);Elt;Elt = EBML_MasterNext(Elt))
Expand Down Expand Up @@ -409,7 +409,7 @@ static bool_t parseTrackEntry(ebml_element *Track, MatroskaFile *File, char *err
else if (EBML_ElementClassID(Elt) == MATROSKA_getContextTrackDefaultDuration()->Id)
track.DefaultDuration = EBML_IntegerValue(Elt);
else if (EBML_ElementClassID(Elt) == MATROSKA_getContextTrackTimestampScale()->Id)
track.TimecodeScale = (float)((ebml_float*)Elt)->Value;
track.TimestampScale = (float)((ebml_float*)Elt)->Value;
else if (EBML_ElementClassID(Elt) == MATROSKA_getContextTrackMaxBlockAdditionID()->Id)
track.MaxBlockAdditionID = (size_t)EBML_IntegerValue(Elt);
else if (EBML_ElementClassID(Elt) == MATROSKA_getContextTrackLanguage()->Id)
Expand Down Expand Up @@ -797,7 +797,7 @@ static bool_t parseChapter(ebml_element *Chapter, MatroskaFile *File, char *err_
return 0;
pChapter = ARRAYEND(Parent->aChildren,struct Chapter)-1;
memset(pChapter,0,sizeof(*pChapter));
pChapter->Start = INVALID_TIMECODE_T;
pChapter->Start = INVALID_TIMESTAMP_T;
if (!parseChapter(Elt,File,err_msg,err_msgSize,pChapter,NULL))
ArrayRemove(&Parent->aChildren,struct Chapter,pChapter,NULL,NULL);
}
Expand Down Expand Up @@ -855,7 +855,7 @@ static bool_t parseChapters(ebml_element *Chapters, MatroskaFile *File, char *er

pChapter = &Chap;
memset(pChapter,0,sizeof(*pChapter));
Chap.Start = INVALID_TIMECODE_T;
Chap.Start = INVALID_TIMESTAMP_T;
Chap.Ordered = MATROSKA_getContextEditionOrdered()->DefaultValue;
Chap.Hidden = MATROSKA_getContextEditionHidden()->DefaultValue;
Chap.Default = MATROSKA_getContextEditionDefault()->DefaultValue;
Expand Down Expand Up @@ -1334,11 +1334,11 @@ int mkv_ReadFrame(MatroskaFile *File, int mask, unsigned int *track, ulonglong *
}

Skip = 0;
if (EBML_ElementClassID(Elt) == MATROSKA_getContextClusterTimecode()->Id)
if (EBML_ElementClassID(Elt) == MATROSKA_getContextClusterTimestamp()->Id)
{
if (EBML_ElementReadData(Elt,(stream*)File->Input,&File->ClusterContext,1, SCOPE_ALL_DATA)!=ERR_NONE)
return EOF; // TODO: memory leak
Elt2 = EBML_MasterFindFirstElt(File->CurrentCluster,MATROSKA_getContextClusterTimecode(),1,1);
Elt2 = EBML_MasterFindFirstElt(File->CurrentCluster,MATROSKA_getContextClusterTimestamp(),1,1);
if (!Elt2)
return EOF; // TODO: memory leak
EBML_IntegerSetValue((ebml_integer*)Elt2,EBML_IntegerValue(Elt));
Expand Down Expand Up @@ -1415,21 +1415,21 @@ int mkv_ReadFrame(MatroskaFile *File, int mask, unsigned int *track, ulonglong *
break;
}

if (Frame.Timecode!=INVALID_TIMECODE_T)
if (Frame.Timestamp!=INVALID_TIMESTAMP_T)
{
if (StartTime)
*StartTime = Frame.Timecode;
if (EndTime && Frame.Duration != INVALID_TIMECODE_T)
*EndTime = Frame.Timecode + Frame.Duration;
*StartTime = Frame.Timestamp;
if (EndTime && Frame.Duration != INVALID_TIMESTAMP_T)
*EndTime = Frame.Timestamp + Frame.Duration;
}

if (FilePos)
*FilePos = EBML_ElementPosition((ebml_element*)File->CurrentBlock);
if (FrameFlags)
{
if (Frame.Timecode == INVALID_TIMECODE_T)
if (Frame.Timestamp == INVALID_TIMESTAMP_T)
*FrameFlags |= FRAME_UNKNOWN_START;
if (Frame.Duration == INVALID_TIMECODE_T)
if (Frame.Duration == INVALID_TIMESTAMP_T)
*FrameFlags |= FRAME_UNKNOWN_END;
if (MATROSKA_BlockKeyframe(File->CurrentBlock))
*FrameFlags |= FRAME_KF;
Expand Down Expand Up @@ -1462,23 +1462,23 @@ static void SeekToPos(MatroskaFile *File, filepos_t SeekPos)
File->Input->io->ioseek(File->Input->io,SeekPos,SEEK_SET);
}

void mkv_Seek(MatroskaFile *File, timecode_t timecode, int flags)
void mkv_Seek(MatroskaFile *File, mkv_timestamp_t timestamp, int flags)
{
matroska_cuepoint *CuePoint;
filepos_t SeekPos;

if (File->flags & MKVF_AVOID_SEEKS || File->pFirstCluster==INVALID_FILEPOS_T || timecode==INVALID_TIMECODE_T)
if (File->flags & MKVF_AVOID_SEEKS || File->pFirstCluster==INVALID_FILEPOS_T || timestamp==INVALID_TIMESTAMP_T)
return;

if (timecode==0)
if (timestamp==0)
{
SeekToPos(File, File->pFirstCluster);
return;
}
if (!File->CueList)
return;

CuePoint = MATROSKA_CuesGetTimecodeStart(File->CueList,timecode);
CuePoint = MATROSKA_CuesGetTimestampStart(File->CueList,timestamp);
if (CuePoint==NULL)
return;

Expand Down
14 changes: 7 additions & 7 deletions libmatroska2/MatroskaParser/MatroskaParser.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ typedef struct TrackInfo

uint8_t *CodecPrivate;
size_t CodecPrivateSize;
timecode_t DefaultDuration;
mkv_timestamp_t DefaultDuration;
char *CodecID;
char *Name;
char Language[4];
Expand All @@ -72,7 +72,7 @@ typedef struct TrackInfo
bool_t Default;
bool_t Lacing;
bool_t DecodeAll;
float TimecodeScale;
float TimestampScale;

int TrackOverlay;
uint8_t MinCache;
Expand Down Expand Up @@ -131,8 +131,8 @@ typedef struct Chapter
size_t nDisplay;
struct ChapterDisplay *Display;

timecode_t Start;
timecode_t End;
mkv_timestamp_t Start;
mkv_timestamp_t End;
uint64_t UID;

bool_t Enabled;
Expand Down Expand Up @@ -190,8 +190,8 @@ typedef struct SegmentInfo
char *MuxingApp;
char *WritingApp;

timecode_t TimecodeScale;
timecode_t Duration;
mkv_timestamp_t TimestampScale;
mkv_timestamp_t Duration;

datetime_t DateUTC;

Expand All @@ -218,7 +218,7 @@ int mkv_ReadFrame(MatroskaFile *File, int mask, unsigned int *track, ulonglong *

#define MKVF_SEEK_TO_PREV_KEYFRAME 1

void mkv_Seek(MatroskaFile *File, timecode_t timecode, int flags);
void mkv_Seek(MatroskaFile *File, mkv_timestamp_t timestamp, int flags);

void mkv_GetTags(MatroskaFile *File, Tag **, unsigned *Count);
void mkv_GetAttachments(MatroskaFile *File, Attachment **, unsigned *Count);
Expand Down
36 changes: 18 additions & 18 deletions libmatroska2/matroska2/matroska.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@
MATROSKA_DLL err_t MATROSKA_Init(parsercontext *p);
MATROSKA_DLL void MATROSKA_Done(parsercontext *p);

#define INVALID_TIMECODE_T MAX_INT64
typedef int64_t timecode_t; // in nanoseconds
#define INVALID_TIMESTAMP_T MAX_INT64
typedef int64_t mkv_timestamp_t; // in nanoseconds

#define TRACK_TYPE_VIDEO 1
#define TRACK_TYPE_AUDIO 2
Expand Down Expand Up @@ -118,8 +118,8 @@ typedef struct matroska_frame
{
uint8_t *Data;
uint32_t Size;
timecode_t Timecode;
timecode_t Duration;
mkv_timestamp_t Timestamp;
mkv_timestamp_t Duration;

} matroska_frame;

Expand All @@ -139,14 +139,14 @@ MATROSKA_DLL err_t MATROSKA_LinkBlockWriteSegmentInfo(matroska_block *Block, ebm
MATROSKA_DLL err_t MATROSKA_LinkCueSegmentInfo(matroska_cuepoint *Cue, ebml_master *SegmentInfo);
MATROSKA_DLL err_t MATROSKA_LinkCuePointBlock(matroska_cuepoint *Cue, matroska_block *Block);
MATROSKA_DLL err_t MATROSKA_CuePointUpdate(matroska_cuepoint *Cue, ebml_element *Segment, int ForProfile);
MATROSKA_DLL double MATROSKA_TrackTimecodeScale(const ebml_master *Track);
MATROSKA_DLL timecode_t MATROSKA_SegmentInfoTimecodeScale(const ebml_master *SegmentInfo);
MATROSKA_DLL void MATROSKA_ClusterSetTimecode(matroska_cluster *Cluster, timecode_t Timecode);
MATROSKA_DLL err_t MATROSKA_BlockSetTimecode(matroska_block *Block, timecode_t Timecode, timecode_t ClusterTimecode);
MATROSKA_DLL timecode_t MATROSKA_ClusterTimecode(matroska_cluster *Cluster);
MATROSKA_DLL timecode_t MATROSKA_ClusterTimecodeScale(matroska_cluster *Cluster, bool_t Read);
MATROSKA_DLL timecode_t MATROSKA_BlockTimecode(matroska_block *Block);
MATROSKA_DLL timecode_t MATROSKA_CueTimecode(const matroska_cuepoint *Cue);
MATROSKA_DLL double MATROSKA_TrackTimestampScale(const ebml_master *Track);
MATROSKA_DLL mkv_timestamp_t MATROSKA_SegmentInfoTimestampScale(const ebml_master *SegmentInfo);
MATROSKA_DLL void MATROSKA_ClusterSetTimestamp(matroska_cluster *Cluster, mkv_timestamp_t Timestamp);
MATROSKA_DLL err_t MATROSKA_BlockSetTimestamp(matroska_block *Block, mkv_timestamp_t Timestamp, mkv_timestamp_t ClusterTimestamp);
MATROSKA_DLL mkv_timestamp_t MATROSKA_ClusterTimestamp(matroska_cluster *Cluster);
MATROSKA_DLL mkv_timestamp_t MATROSKA_ClusterTimestampScale(matroska_cluster *Cluster, bool_t Read);
MATROSKA_DLL mkv_timestamp_t MATROSKA_BlockTimestamp(matroska_block *Block);
MATROSKA_DLL mkv_timestamp_t MATROSKA_CueTimestamp(const matroska_cuepoint *Cue);
MATROSKA_DLL filepos_t MATROSKA_CuePosInSegment(const matroska_cuepoint *Cue);
MATROSKA_DLL int16_t MATROSKA_BlockTrackNum(const matroska_block *Block);
MATROSKA_DLL bool_t MATROSKA_BlockKeyframe(const matroska_block *Block);
Expand All @@ -162,7 +162,7 @@ MATROSKA_DLL bool_t MATROSKA_MetaSeekIsClass(const matroska_seekpoint *MetaSeek,
MATROSKA_DLL filepos_t MATROSKA_MetaSeekPosInSegment(const matroska_seekpoint *MetaSeek);
MATROSKA_DLL filepos_t MATROSKA_MetaSeekAbsolutePos(const matroska_seekpoint *MetaSeek);

MATROSKA_DLL matroska_cuepoint *MATROSKA_CuesGetTimecodeStart(const ebml_element *Cues, timecode_t Timecode);
MATROSKA_DLL matroska_cuepoint *MATROSKA_CuesGetTimestampStart(const ebml_element *Cues, mkv_timestamp_t Timestamp);

#if defined(CONFIG_EBML_WRITING)
MATROSKA_DLL int MATROSKA_TrackGetBlockCompression(const matroska_trackentry *TrackEntry, int ForProfile);
Expand Down Expand Up @@ -193,17 +193,17 @@ MATROSKA_DLL void MATROSKA_BlockSetKeyframe(matroska_block *Block, bool_t Set);
MATROSKA_DLL void MATROSKA_BlockSetDiscardable(matroska_block *Block, bool_t Set);
MATROSKA_DLL err_t MATROSKA_BlockProcessFrameDurations(matroska_block *Block, stream *Input, int ForProfile);
MATROSKA_DLL size_t MATROSKA_BlockGetFrameCount(const matroska_block *Block);
MATROSKA_DLL timecode_t MATROSKA_BlockGetFrameDuration(const matroska_block *Block, size_t FrameNum);
MATROSKA_DLL timecode_t MATROSKA_BlockGetFrameStart(const matroska_block *Block, size_t FrameNum);
MATROSKA_DLL timecode_t MATROSKA_BlockGetFrameEnd(const matroska_block *Block, size_t FrameNum);
MATROSKA_DLL mkv_timestamp_t MATROSKA_BlockGetFrameDuration(const matroska_block *Block, size_t FrameNum);
MATROSKA_DLL mkv_timestamp_t MATROSKA_BlockGetFrameStart(const matroska_block *Block, size_t FrameNum);
MATROSKA_DLL mkv_timestamp_t MATROSKA_BlockGetFrameEnd(const matroska_block *Block, size_t FrameNum);
MATROSKA_DLL size_t MATROSKA_BlockGetLength(const matroska_block *Block, size_t FrameNum);

MATROSKA_DLL err_t MATROSKA_BlockGetFrame(const matroska_block *Block, size_t FrameNum, matroska_frame *Frame, bool_t WithData);
MATROSKA_DLL err_t MATROSKA_BlockAppendFrame(matroska_block *Block, const matroska_frame *Frame, timecode_t ClusterTimecode);
MATROSKA_DLL err_t MATROSKA_BlockAppendFrame(matroska_block *Block, const matroska_frame *Frame, mkv_timestamp_t ClusterTimestamp);
MATROSKA_DLL bool_t MATROSKA_BlockIsKeyframe(const matroska_block *Block);


MATROSKA_DLL matroska_block *MATROSKA_GetBlockForTimecode(matroska_cluster *Cluster, timecode_t Timecode, int16_t Track);
MATROSKA_DLL matroska_block *MATROSKA_GetBlockForTimestamp(matroska_cluster *Cluster, mkv_timestamp_t Timestamp, int16_t Track);
MATROSKA_DLL void MATROSKA_LinkClusterBlocks(matroska_cluster *Cluster, ebml_master *RSegmentInfo, ebml_master *Tracks, bool_t KeepUnmatched, int ForProfile);

MATROSKA_DLL const ebml_context *MATROSKA_getContextStream();
Expand Down
8 changes: 4 additions & 4 deletions libmatroska2/matroska2/matroska_classes.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,12 @@
struct matroska_block
{
ebml_binary Base;
timecode_t GlobalTimecode;
mkv_timestamp_t GlobalTimestamp;
filepos_t FirstFrameLocation;
array SizeList; // int32_t
array SizeListIn; // int32_t
array Data; // uint8_t
array Durations; // timecode_t
array Durations; // mkv_timestamp_t
ebml_master *ReadTrack;
ebml_master *ReadSegInfo;
#if defined(CONFIG_EBML_WRITING)
Expand All @@ -60,8 +60,8 @@ struct matroska_block
bool_t IsKeyframe;
bool_t IsDiscardable;
bool_t Invisible;
bool_t LocalTimecodeUsed;
int16_t LocalTimecode;
bool_t LocalTimestampUsed;
int16_t LocalTimestamp;
uint16_t TrackNumber;
char Lacing;
};
Expand Down
Loading

0 comments on commit 08f975a

Please sign in to comment.