DragonWins Home Page

BBC Home Page


BBC Processing Engine

(Last Mod: 27 November 2010 21:37:20 )



Overview

The BBC Processing Engine is a script-driven, ANSI-C (C99) compliant software application used to perform a large variety of processing tasks related to BBC-based concurrent codes. It is primarily a research-oriented tool and is therefore subject to rather frequent and severe changes. It also lacks a user-friendly interface, a complete and well-organized documentation set, and any of the version-control, distribution, installation, or other features that most commercial and many open-source applications have.

For those hardy souls that are interested in understanding how BBC works and, more importantly, in modifying it to suit their specific needs, the short answer is that is sucks to be you. The long answer is that quite a bit of effort has gone into making the code highly compartmentalized and self-documenting. In addition, many files have a significant amount of commenting in them. While this will help, it will still take a lot of exploring the code, which totals over 11,000 lines of text spread over more than 30 files, to really know what is going on at the deepest level.

However, if you can get a good appreciation for the high-level organization of the application you should be able to focus on those code elements that affect you and, if you are reasonably careful, you should be able to make significant modifications without needing to know how the rest of the code works. In theory anyway, but it's a start.

The code is organized in such a way that most parts of it bear a strong resemblance to object-oriented programming. This is done by creating structures that contain a particular set of data, defining primitive functions that are the only functions allowed to directly access and/or modify the contents of those structures, and then defining higher level functions that perform increasingly more complex and abstract operations on the structure. Those functions intended to be used by the programmer, akin to public functions, are made accessible by placing their prototypes in a header file. The remainder are akin to private functions and are only accessible by other functions within the file in which they are defined. It should be noted that this strategy of data abstraction results in many layers of function calls that are not strictly needed and therefore the code is not particularly efficient.

Each source code file is accompanied by a header file. The primary purpose of the header file is to hold the function prototypes that higher level functions may need to call. The header file also contains any file inclusion directives that are needed in order to use the functions declared by the prototypes.


BBC-related Files

bbc

bbc_env

bbc_fileset

bbc_codec

bbc_packet

bbc_wav


Image Related Files

bmp

image

color


Sound Related Files

wav

sound


Linked List Related Files

list

list_node


General Support Files

bytes

dirtyd

pseudo1D

sha1


File Formats

BBC Processing Engine Commands

BBC Script File (*.bbc)

This is a text file containing a list of commands in the same format that would be used to enter commands at the BBC prompt.

BBC Packet Data

Windows Bitmap File (*.bmp)

This is a standard Windows bitmap file with the restriction that only full-color and monochrome files are supported.

BBC Text Format Packet File (*.pkt)

 

BBC Binary Format Packet File (*.pkb)

 

Waveform Data

Windows Wave File (*.wav)

This is a standard Windows wave file with the restriction that only 16-bit, uncompressed, monaural files are supported.

Time Sampled Data File (*.smp)

 

USRP Data File (*.srp)

This is a binary file format consisting of quadrature (IQ) data pairs represented as IEEE single-precision floating point numbers.

 

 bbc.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "dirtyd.h"
#include "bbc.h"

#include <math.h>
#include "wav.h"