kopia lustrzana https://github.com/dnet/pySSTV
replaced WAV writer with stdlib wave module
rodzic
6b22ae32b5
commit
3a81a8ef83
23
sstv.py
23
sstv.py
|
@ -3,7 +3,8 @@
|
|||
from __future__ import division, with_statement
|
||||
from math import sin, pi, floor
|
||||
from random import random
|
||||
import struct
|
||||
from contextlib import closing
|
||||
import struct, wave
|
||||
|
||||
FREQ_VIS_BIT1 = 1100
|
||||
FREQ_SYNC = 1200
|
||||
|
@ -25,23 +26,13 @@ class SSTV(object):
|
|||
|
||||
BITS_TO_STRUCT = {8: 'b', 16: 'h'}
|
||||
def write_wav(self, filename):
|
||||
bytes_per_sec = self.bits // 8
|
||||
fmt = '<' + self.BITS_TO_STRUCT[self.bits]
|
||||
data = ''.join(struct.pack(fmt, b) for b in self.gen_samples())
|
||||
payload = ''.join((
|
||||
'WAVE',
|
||||
'fmt ',
|
||||
struct.pack('<IHHIIHH', 16, 1, 1, self.samples_per_sec,
|
||||
self.samples_per_sec * bytes_per_sec, bytes_per_sec,
|
||||
self.bits),
|
||||
'data',
|
||||
struct.pack('<I', len(data))
|
||||
))
|
||||
header = 'RIFF' + struct.pack('<I', len(payload) + len(data))
|
||||
with file(filename, 'wb') as wav:
|
||||
wav.write(header)
|
||||
wav.write(payload)
|
||||
wav.write(data)
|
||||
with closing(wave.open(filename, 'wb')) as wav:
|
||||
wav.setnchannels(1)
|
||||
wav.setsampwidth(self.bits // 8)
|
||||
wav.setframerate(self.samples_per_sec)
|
||||
wav.writeframes(data)
|
||||
|
||||
def gen_samples(self):
|
||||
"""generates bits from gen_values"""
|
||||
|
|
Ładowanie…
Reference in New Issue