home *** CD-ROM | disk | FTP | other *** search
- /*************************************************************************
- BUFFER.cpp
-
- 03/02/08 Xiaohong
- *************************************************************************/
- #include "buffer.h"
- #include <windows.h>
-
- Buffer_queue::Buffer_queue(const unsigned int s)
- {
- size = s;
- next = NULL;
- }
-
- Buffer_struc::Buffer_struc()
- {
- max_size = 0;
- first = NULL;
- }
-
- Buffer_struc::~Buffer_struc()
- {
- Buffer_queue *pointer = first;
- while(first != NULL)
- {
- pointer = first;
- first = first->next;
- delete pointer;
- }
- }
-
- void Buffer_struc::clean(Timecode_struc* SCR)
- {
- Buffer_queue *pointer;
-
- while (first != NULL &&
- (comp_timecode(&first->DTS, SCR)))
- {
- pointer = first;
- first = first->next;
- delete pointer;
- }
- }
- unsigned int Buffer_struc::space(void)
- {
- unsigned int used_bytes;
- Buffer_queue *pointer;
-
- pointer = first;
- used_bytes = 0;
-
- while (pointer != NULL)
- {
- used_bytes += pointer->size;
- pointer = pointer->next;
- }
-
- return (max_size - used_bytes);
- }
- bool Buffer_struc::queue(const unsigned int bytes,Timecode_struc* TS)
- {
- Buffer_queue *pointer;
-
- pointer = first;
- if (pointer == NULL)
- {
- if((first = new Buffer_queue(bytes)) == NULL)
- {
- return false;
- }
- first->DTS = *TS;
- }
- else
- {
- while ((pointer->next)!=NULL)
- {
- pointer = pointer->next;
- }
- if((pointer->next = new Buffer_queue(bytes)) == NULL)
- {
- return false;
- }
- pointer->next->DTS = *TS;
- }
- return true;
- }
-