0

私は、やや「友好的でない」中国のビデオ圧縮ボードの API を使用しています。ドライバーから返される各ビデオ フレーム バッファーには、ビデオのタイムスタンプがあります。ただし、タイムスタンプは 2 つの独立したフリーランニング コンポーネントに分割されます。

1) 次のように定義された DateTime 構造体

struct DateTime
{
    unsigned long second    :6;   // 0-59
    unsigned long minute    :6;   // 0-59
    unsigned long hour      :5;   // 0-23
    unsigned long day       :5;   // 1-31
    unsigned long month     :4;   // 1-12
    unsigned long year      :6;   // 2000-2063
};

2) ロールオーバーするフリーランニングの 16 ビット (2 バイト) 符号なしミリ秒カウンター。

これら 2 つのタイムスタンプ間で同期されるものはありません。ミリ秒のロールオーバーは、DateTime.second の増分に対応していません。ミリ秒タイマーで単純なモジュロ 1000 除算を実行しても、DateTime.second のインクリメントには対応しません。

これらの両方を組み合わせて、常に単調に増加する統一されたビデオ フレームのタイムスタンプを作成する方法を考え出す必要があります。ドライバーによって配信された元のタイムスタンプを保持したいのですが、ドライバーのタイムスタンプをオーバーライドして、独自のタイムスタンプを添付することもできます。どんな提案でも大歓迎です!

4

1 に答える 1