?? avistripesystem.h
字號(hào):
// VirtualDub - Video processing and capture application
// Copyright (C) 1998-2001 Avery Lee
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#ifndef f_AVISTRIPESYSTEM_H
#define f_AVISTRIPESYSTEM_H
#include <vfw.h>
#include "VirtualDub.h"
#include "AVIReadHandler.h"
#pragma warning(push)
#pragma warning(disable: 4200) // nonstandard extension used
class AVIStripe {
public:
enum {
FLAG_INDEX = 1,
FLAG_VIDEO = 2,
FLAG_AUDIO = 4,
MODE_MASTER = FLAG_INDEX | FLAG_AUDIO, // contains index + *all* audio
MODE_INDEX = FLAG_INDEX, // contains index only
MODE_VIDEO = FLAG_VIDEO, // contains video segments
MODE_AUDIO = FLAG_AUDIO, // contains audio segments
MODE_BOTH = FLAG_VIDEO | FLAG_AUDIO, // contains a/v segments
};
long lBufferSize, lChunkSize;
int iNameLen;
char cStripeMode;
signed char scPriority;
char szName[];
void *operator new(size_t stSize, int iNameBytes);
BOOL isIndex() { return !!(cStripeMode & FLAG_INDEX); }
BOOL isVideo() { return !!(cStripeMode & FLAG_VIDEO); }
BOOL isAudio() { return !!(cStripeMode & FLAG_AUDIO); }
};
#pragma warning(pop)
class AVIStripeSystem {
private:
int nStripes;
AVIStripe **stripe;
void _construct(int nStripes);
void _destruct();
public:
AVIStripeSystem(int nStripes);
AVIStripeSystem(char *szFile);
~AVIStripeSystem();
void Save(char *szFile);
int getStripeCount();
AVIStripe * getStripeInfo(int nStripe);
};
////////////////////////////////////
class AVIStripeIndexEntry {
public:
long lSampleFirst;
long lSampleCount;
long lStripe;
long lStripeSample;
};
#define DEFINETEST(type) bool inline operator##type(long lSample, AVIStripeIndexEntry& asie)
DEFINETEST(< ) { return lSample < asie.lSampleFirst; }
DEFINETEST(>=) { return lSample >= asie.lSampleFirst; }
DEFINETEST(> ) { return lSample >= asie.lSampleFirst + asie.lSampleCount; }
DEFINETEST(<=) { return lSample < asie.lSampleFirst + asie.lSampleCount; }
DEFINETEST(==) {
long t = lSample - asie.lSampleFirst;
return t>=0 && t<asie.lSampleCount;
}
DEFINETEST(!=) {
long t = lSample - asie.lSampleFirst;
return t<0 || t>=asie.lSampleCount;
}
#undef DEFINETEST
////////////////////////////////////
class AVIStripeIndexLookup {
private:
AVIStripeIndexEntry *index_table;
long index_table_size;
public:
AVIStripeIndexLookup(IAVIReadStream *pAVIIndex);
~AVIStripeIndexLookup();
AVIStripeIndexEntry *lookup(long sample);
};
#endif
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -