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

📄 buffer.c

📁 JPEG-MPEG編解碼技術書集的代碼
💻 C
字号:

#include "mplex.h"
/******************************************************************
	Buffer_Clean
	如果DTS小于实际的SCR,则该函数从FIFO缓存中清除内容,。这表明这些
	数据已经解码完毕了。

******************************************************************/

void buffer_clean (buffer, SCR)
Buffer_struc  *buffer;
Timecode_struc *SCR;
{
    Buffer_queue *pointer;

    while ((buffer->first != NULL) &&
	(comp_timecode(&buffer->first->DTS, SCR)))
    {
	pointer = buffer->first;
	buffer->first = buffer->first->next;
	free (pointer);	
    }
}

/******************************************************************
	Buffer_Space
	返回缓存中可用的空间大小。
******************************************************************/

unsigned  int buffer_space (buffer)
Buffer_struc *buffer;
{
    unsigned int used_bytes;
    Buffer_queue *pointer;

    pointer=buffer->first;
    used_bytes=0;

    while (pointer != NULL)
    {
	used_bytes += pointer->size;
	pointer = pointer->next;
    }

    return (buffer->max_size - used_bytes);

}

/******************************************************************
	Queue_Buffer
	向FIFO队列中加入内容

******************************************************************/

void queue_buffer (buffer, bytes, TS)
Buffer_struc *buffer;
unsigned int bytes;
Timecode_struc *TS;
{
    Buffer_queue *pointer;

    pointer=buffer->first;
    if (pointer==NULL)
    {
	buffer->first = (Buffer_queue*) malloc (sizeof (Buffer_queue));
	buffer->first->size = bytes;
	buffer->first->next=NULL;
	copy_timecode (TS, &buffer->first->DTS);
    } else
    {
	while ((pointer->next)!=NULL)
	{
	    pointer = pointer->next;
	}
    
	pointer->next = (Buffer_queue*) malloc (sizeof (Buffer_queue));
	pointer->next->size = bytes;
	pointer->next->next = NULL;
	copy_timecode (TS, &pointer->next->DTS);
    }
}

⌨️ 快捷键说明

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