Files
2026-02-09 20:10:14 +08:00

84 lines
1.6 KiB
C#

//-----------------------------------------------------------------------------
// Copyright 2015-2025 RenderHeads Ltd. All rights reserved.
//-----------------------------------------------------------------------------
namespace RenderHeads.Media.AVProVideo
{
public interface ITimedMetadata
{
bool HasNewTimedMetadataItem();
TimedMetadataItem GetTimedMetadataItem();
}
public class TimedMetadataItem
{
public double PresentationTime
{
get
{
return _presentationTime;
}
}
public string Text
{
get
{
return _text;
}
}
internal TimedMetadataItem(double presentationTime, string text)
{
_presentationTime = presentationTime;
_text = text;
}
private TimedMetadataItem()
{
}
private double _presentationTime;
private string _text;
}
public partial class BaseMediaPlayer : ITimedMetadata
{
public bool HasNewTimedMetadataItem()
{
return _hasNewTimedMetadataItem;
}
public TimedMetadataItem GetTimedMetadataItem()
{
_hasNewTimedMetadataItem = false;
return _timedMetadataItem;
}
protected void UpdateTimedMetadata()
{
var hasUpdatedTimedMetadata = InternalHasUpdatedTimedMetadata();
if (hasUpdatedTimedMetadata)
{
_timedMetadataItem = InternalGetTimedMetadataItem();
_hasNewTimedMetadataItem = true;
}
}
protected virtual bool InternalHasUpdatedTimedMetadata()
{
return false;
}
protected virtual TimedMetadataItem InternalGetTimedMetadataItem()
{
return null;
}
private TimedMetadataItem _timedMetadataItem = null;
private bool _hasNewTimedMetadataItem = false;
}
}