I have no idea what happened here...
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: PySSTV
|
||||
Version: 0.4.3
|
||||
Summary: Python classes for generating Slow-scan Television transmissions
|
||||
Home-page: https://github.com/dnet/pySSTV
|
||||
Author: András Veres-Szentkirályi
|
||||
Author-email: vsza@vsza.hu
|
||||
License: MIT
|
||||
Description: SSTV generator in pure Python
|
||||
=============================
|
||||
|
||||
[](https://travis-ci.org/dnet/pySSTV)
|
||||
|
||||
PySSTV generates SSTV modulated WAV files from any image that PIL can open
|
||||
(PNG, JPEG, GIF, and many others). These WAV files then can be played by any
|
||||
audio player connected to a shortwave radio for example.
|
||||
|
||||
My main motivation was to understand the internals of SSTV in practice, so
|
||||
performance is far from optimal. I tried keeping the code readable, and only
|
||||
performed such optimizations that wouldn't have complicated the codebase.
|
||||
|
||||
Command line usage
|
||||
------------------
|
||||
|
||||
$ python -m pysstv -h
|
||||
usage: __main__.py [-h]
|
||||
[--mode {MartinM1,MartinM2,ScottieS1,ScottieS2,Robot36,PasokonP3,PasokonP5,PasokonP7,PD90,PD120,PD160,PD180,PD240,Robot8BW,Robot24BW}]
|
||||
[--rate RATE] [--bits BITS] [--vox] [--fskid FSKID]
|
||||
[--chan CHAN]
|
||||
image.png output.wav
|
||||
|
||||
Converts an image to an SSTV modulated WAV file.
|
||||
|
||||
positional arguments:
|
||||
image.png input image file name
|
||||
output.wav output WAV file name
|
||||
|
||||
optional arguments:
|
||||
-h, --help show this help message and exit
|
||||
--mode {MartinM1,MartinM2,ScottieS1,ScottieS2,Robot36,PasokonP3,PasokonP5,PasokonP7,PD90,PD120D160,PD180,PD240,Robot8BW,Robot24BW}
|
||||
image mode (default: Martin M1)
|
||||
--rate RATE sampling rate (default: 48000)
|
||||
--bits BITS bits per sample (default: 16)
|
||||
--vox add VOX tones at the beginning
|
||||
--fskid FSKID add FSKID at the end
|
||||
--chan CHAN number of channels (default: mono)
|
||||
|
||||
Python interface
|
||||
----------------
|
||||
|
||||
The `SSTV` class in the `sstv` module implements basic SSTV-related
|
||||
functionality, and the classes of other modules such as `grayscale` and
|
||||
`color` extend this. Most instances implement the following methods:
|
||||
|
||||
- `__init__` takes a PIL image, the samples per second, and the bits per
|
||||
sample as a parameter, but doesn't perform any hard calculations
|
||||
- `gen_freq_bits` generates tuples that describe a sine wave segment with
|
||||
frequency in Hz and duration in ms
|
||||
- `gen_values` generates samples between -1 and +1, performing sampling
|
||||
according to the samples per second value given during construction
|
||||
- `gen_samples` generates discrete samples, performing quantization
|
||||
according to the bits per sample value given during construction
|
||||
- `write_wav` writes the whole image to a Microsoft WAV file
|
||||
|
||||
The above methods all build upon those above them, for example `write_wav`
|
||||
calls `gen_samples`, while latter calls `gen_values`, so typically, only
|
||||
the first and the last, maybe the last two should be called directly, the
|
||||
others are just listed here for the sake of completeness and to make the
|
||||
flow easier to understand.
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
The whole project is available under MIT license.
|
||||
|
||||
Useful links
|
||||
------------
|
||||
|
||||
- receive-only "counterpart": https://github.com/windytan/slowrx
|
||||
- free SSTV handbook: http://www.sstv-handbook.com/
|
||||
- robot 36 encoder/decoder in C: https://github.com/xdsopl/robot36/
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
||||
- Python 2.7 (tested on 2.7.9; 2.6 might work, but test suite lacks support)
|
||||
or 3.x (tested on 3.2, 3.3, 3.4 and 3.5)
|
||||
- Python Imaging Library (Debian/Ubuntu package: `python-imaging`)
|
||||
|
||||
Keywords: HAM SSTV slow-scan television Scottie Martin Robot Pasokon
|
||||
Platform: UNKNOWN
|
||||
Classifier: Development Status :: 4 - Beta
|
||||
Classifier: Topic :: Communications :: Ham Radio
|
||||
Classifier: Topic :: Multimedia :: Video :: Conversion
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Operating System :: OS Independent
|
||||
Description-Content-Type: text/markdown
|
||||
@@ -0,0 +1,40 @@
|
||||
.gitignore
|
||||
.travis.yml
|
||||
LICENSE.txt
|
||||
MANIFEST.in
|
||||
README.md
|
||||
requirements.txt
|
||||
setup.cfg
|
||||
setup.py
|
||||
PySSTV.egg-info/PKG-INFO
|
||||
PySSTV.egg-info/SOURCES.txt
|
||||
PySSTV.egg-info/dependency_links.txt
|
||||
PySSTV.egg-info/requires.txt
|
||||
PySSTV.egg-info/top_level.txt
|
||||
pysstv/__init__.py
|
||||
pysstv/__main__.py
|
||||
pysstv/color.py
|
||||
pysstv/grayscale.py
|
||||
pysstv/sstv.py
|
||||
pysstv/examples/__init__.py
|
||||
pysstv/examples/codegen.py
|
||||
pysstv/examples/codeman.c
|
||||
pysstv/examples/get_floats.py
|
||||
pysstv/examples/get_freq_bits.py
|
||||
pysstv/examples/gimp-plugin.py
|
||||
pysstv/examples/overlay.py
|
||||
pysstv/examples/pyaudio_sstv.py
|
||||
pysstv/examples/repeater.py
|
||||
pysstv/tests/__init__.py
|
||||
pysstv/tests/common.py
|
||||
pysstv/tests/test_color.py
|
||||
pysstv/tests/test_sstv.py
|
||||
pysstv/tests/assets/320x256.png
|
||||
pysstv/tests/assets/MartinM1_encode_line_lena1.p
|
||||
pysstv/tests/assets/MartinM1_encode_line_lena10.p
|
||||
pysstv/tests/assets/MartinM1_encode_line_lena100.p
|
||||
pysstv/tests/assets/MartinM1_freq_bits.p
|
||||
pysstv/tests/assets/MartinM1_freq_bits_lena.p
|
||||
pysstv/tests/assets/MartinM1_values.p
|
||||
pysstv/tests/assets/SSTV_gen_samples.p
|
||||
pysstv/tests/assets/SSTV_gen_values.p
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
../pysstv/__init__.py
|
||||
../pysstv/__main__.py
|
||||
../pysstv/__pycache__/__init__.cpython-39.pyc
|
||||
../pysstv/__pycache__/__main__.cpython-39.pyc
|
||||
../pysstv/__pycache__/color.cpython-39.pyc
|
||||
../pysstv/__pycache__/grayscale.cpython-39.pyc
|
||||
../pysstv/__pycache__/sstv.cpython-39.pyc
|
||||
../pysstv/color.py
|
||||
../pysstv/examples/__init__.py
|
||||
../pysstv/examples/__pycache__/__init__.cpython-39.pyc
|
||||
../pysstv/examples/__pycache__/codegen.cpython-39.pyc
|
||||
../pysstv/examples/__pycache__/get_floats.cpython-39.pyc
|
||||
../pysstv/examples/__pycache__/get_freq_bits.cpython-39.pyc
|
||||
../pysstv/examples/__pycache__/gimp-plugin.cpython-39.pyc
|
||||
../pysstv/examples/__pycache__/overlay.cpython-39.pyc
|
||||
../pysstv/examples/__pycache__/pyaudio_sstv.cpython-39.pyc
|
||||
../pysstv/examples/__pycache__/repeater.cpython-39.pyc
|
||||
../pysstv/examples/codegen.py
|
||||
../pysstv/examples/get_floats.py
|
||||
../pysstv/examples/get_freq_bits.py
|
||||
../pysstv/examples/gimp-plugin.py
|
||||
../pysstv/examples/overlay.py
|
||||
../pysstv/examples/pyaudio_sstv.py
|
||||
../pysstv/examples/repeater.py
|
||||
../pysstv/grayscale.py
|
||||
../pysstv/sstv.py
|
||||
../pysstv/tests/__init__.py
|
||||
../pysstv/tests/__pycache__/__init__.cpython-39.pyc
|
||||
../pysstv/tests/__pycache__/common.cpython-39.pyc
|
||||
../pysstv/tests/__pycache__/test_color.cpython-39.pyc
|
||||
../pysstv/tests/__pycache__/test_sstv.cpython-39.pyc
|
||||
../pysstv/tests/common.py
|
||||
../pysstv/tests/test_color.py
|
||||
../pysstv/tests/test_sstv.py
|
||||
PKG-INFO
|
||||
SOURCES.txt
|
||||
dependency_links.txt
|
||||
requires.txt
|
||||
top_level.txt
|
||||
@@ -0,0 +1,2 @@
|
||||
Pillow
|
||||
six
|
||||
@@ -0,0 +1 @@
|
||||
pysstv
|
||||
Reference in New Issue
Block a user