119 lines
3.7 KiB
Markdown
119 lines
3.7 KiB
Markdown
# sstv e36 encoder
|
|
|
|
This is a SSTV "encoder", currently it is in work, but it has some modes already: (update of 09.04.26 - We now have a component with miniaudio which is able to stream in live microphone data)
|
|
|
|
Future plans for a decoder have been made. I do not plan to do any decoding
|
|
soon. Wayy to much of a workload, high cortisol!
|
|
|
|
## Support Table:
|
|
|
|
|Support?|Mode | Encode | Decode |
|
|
|--------|------------|--------|--------|
|
|
|[x] |Martin 1 |[x] |[] |
|
|
|[x] |Martin 2 |[x] |[] |
|
|
|[x] |Robot 36 |[x] |[] |
|
|
|[x] |Scottie 1 |[x] |[] |
|
|
|[x] |Scottie 2 |[x] |[] |
|
|
|[x] |ScottieD(S)X|[x] |[] |
|
|
|
|
|
|
Written in _pure_ **C** with some _Makefiles_ to pull it together
|
|
|
|
## Changes:
|
|
|
|
- 09.04.26
|
|
- Added Audio stream provider ([.c](/src/decoder/provider/audio_in_provider.c), [.h](/include/decoder/provider/audio_in_provider.h), [test](/src/decoder/test/audio_in_provider_test.c))
|
|
- Added Licenses to [third party](/third_party/license/)
|
|
- Added a few things to the [gitignore](.gitignore)
|
|
- Added new [AP_TEST](/include/decoder/provider/audio_in_provider.h) to [Makefile](Makefile)
|
|
- Added [miniaudio.h](https://miniaud.io/)
|
|
|
|
### For developing or adding to the source code:
|
|
|
|
_**This is just standard C17 Standard**_
|
|
|
|
Compilation is done via the gcc compiler, we do NOT allow MSVC here.
|
|
If you are on Windows then i suggest to use the WSL.
|
|
|
|
Be sure to follow this style of code, it is not that complex,
|
|
and some parts you can even tell Vim or Emacs or whatever you use to automate it,
|
|
like the header definitions (default i think on vs and some others).
|
|
|
|
#### Defining Headers:
|
|
|
|
Try to follow this general pattern.
|
|
In of itself it is relativley easy to maintain this structure.
|
|
And it is also relativley easy to write in this style!
|
|
|
|
_**This is just standard C17 Standard**_
|
|
```h
|
|
#ifndef HEADER_H
|
|
#define HEADER_H
|
|
|
|
#include <stdint.h> // <> is for "glibc" stuff
|
|
#include "encoder/sound/wav.h" // "" for local stuff. which isnt "glibc"
|
|
|
|
typedef struct {
|
|
uint8_t type;
|
|
} mystruct_t;
|
|
|
|
int method_to_use(mystruct_t type);
|
|
|
|
#endif // !HEADER_H
|
|
```
|
|
|
|
Refer to "[Using Headers](#using-headers)" for how to use Headers!
|
|
|
|
#### Using Headers:
|
|
|
|
You may define your Header files as module like structures! Like in Java!
|
|
This is nicer to work with cause you dont need to then dump everything into the project root!
|
|
|
|
In you C File:
|
|
```c
|
|
#include "decoder/modes/martin.h" // for example
|
|
```
|
|
|
|
#### C Files:
|
|
|
|
For a real implementation this stub below would make 0 sense,
|
|
but this is the general style you should follow, it includes CAPITAL definitions,
|
|
local imports in "" and at the top, others below.
|
|
|
|
Try to comment your code if it does not make sense.
|
|
If you encounter something like `Q_rsqrt` (The Quake inverse square root), then you are
|
|
permitted to comment some swear words.
|
|
|
|
Great example of commenting : "robot36.c"
|
|
|
|
```c
|
|
#include "header.h" // Refer to Using Headers
|
|
|
|
#define PI 3
|
|
#define SOME_DEF 67
|
|
|
|
int method_to_use(mystruct_t type) {
|
|
return 67 * type;
|
|
}
|
|
```
|
|
|
|
References:
|
|
- [Using Headers](#using-headers)
|
|
- [Defining Headers](#defining-headers)
|
|
|
|
|
|
#### Defining new Modes:
|
|
|
|
If you have the balls to define a new Mode, then refer to the Dayton Papers!
|
|
And when your done make this [Table](#support-table) complete!
|
|
|
|
#### Defining Stuff in the Makefile:
|
|
|
|
If you were to add new Modules then add them to the makefile.
|
|
As a Example are our CFLAGS. which define which include directories to use! Currently it is just include and third_party (for stbi)
|
|
|
|
### Licensing:
|
|
|
|
All Third-Party Licenses are available under *[./third_party/license/](./third_party/license/)*
|
|
|
|
Our Licenses is a MIT License is available under [*./LICENSE*](./LICENSE) |