⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 keyframeman.cpp

📁 symbian下的FLV播放视频源码 可以快速便捷的播放FLV格式的视频
💻 CPP
字号:
#include "KeyFrameMan.h"

struct TKeyFrameElement* g_KeyFrameRoot = NULL;

void ClearKeyFrame()
{
	struct TKeyFrameElement* tKeyFrameP = g_KeyFrameRoot;
	struct TKeyFrameElement* tKeyFrameN;
	while (tKeyFrameP)
	{
		tKeyFrameN = tKeyFrameP->next;
		free(tKeyFrameP);
		tKeyFrameP = tKeyFrameN;
	}
	g_KeyFrameRoot = NULL;
}

void AddKeyFrame(int _duration, int _position)
{
	if (!g_KeyFrameRoot)
	{
		struct TKeyFrameElement* item = (struct TKeyFrameElement*)malloc(sizeof(struct TKeyFrameElement));
		item->duration = _duration;
		item->position = _position;
		item->next = NULL;
		g_KeyFrameRoot = item;
	}
	else
	{
		struct TKeyFrameElement* tKeyFrameP = g_KeyFrameRoot;
		struct TKeyFrameElement* item;
		while (tKeyFrameP->next)
		{
			if (tKeyFrameP->duration == _duration)
				return;
			tKeyFrameP = tKeyFrameP->next;
		}
		item = (struct TKeyFrameElement*)malloc(sizeof(struct TKeyFrameElement));
		item->duration = _duration;
		item->position = _position;
		item->next = NULL;
		tKeyFrameP->next = item;
	}
}

int GetFirstKeyFramePosition()
{
	if (!g_KeyFrameRoot)
		return -1;
	else
		return g_KeyFrameRoot->position;
}

int GetFirstKeyFramePositionBeforeFP(CNeoFILE* aNeoFile)
{
	int retVal = -1;
	int duration;
	struct TKeyFrameElement* tKeyFrameP = g_KeyFrameRoot;
	if (!g_KeyFrameRoot)
		return -1;
	if (/*feof(fp)*/aNeoFile->FEof())
		duration = (int)(FLVGetDuration() * 1000);
	else if (flv_read_pts(aNeoFile, duration) == -1)
		return -1;
	while (tKeyFrameP)
	{
		if (tKeyFrameP->duration < duration)
			if (retVal == -1)
				retVal = tKeyFrameP->position;
			else if (duration - tKeyFrameP->duration >= 2000)
				retVal = tKeyFrameP->position;
		tKeyFrameP = tKeyFrameP->next;
	}
	if (retVal == -1)
		retVal = g_KeyFrameRoot->position;
	return retVal;
}

int GetFirstKeyFramePositionAfterFP(CNeoFILE* aNeoFile)
{
	int duration;
	int position;
	struct TKeyFrameElement* tKeyFrameP = g_KeyFrameRoot;
	if (!g_KeyFrameRoot)
		return -1;
	if (flv_read_pts(aNeoFile, duration) == -1)
		return -1;
	while (tKeyFrameP)
	{
		if (tKeyFrameP->duration > duration)
			return tKeyFrameP->position;
		tKeyFrameP = tKeyFrameP->next;
	}
	// Not Found in List
	// Let's seek throught the file
	if (!flv_find_next_keyframe(aNeoFile, duration, position))
		return position;
	return -1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -