diff options
author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2014-03-27 20:35:02 +0100 |
---|---|---|
committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2014-03-27 20:35:02 +0100 |
commit | 41c3c609e857c8943575581022cd1c0030c3b5e7 (patch) | |
tree | 90d274a564fc19f82746a88db48075a50e6c5bb4 | |
parent | a96ff49819b5016e61197256cd8b53dc17386b29 (diff) | |
download | toolame-dab-41c3c609e857c8943575581022cd1c0030c3b5e7.tar.gz toolame-dab-41c3c609e857c8943575581022cd1c0030c3b5e7.tar.bz2 toolame-dab-41c3c609e857c8943575581022cd1c0030c3b5e7.zip |
Fix pad encoding, constant length x-pad
-rw-r--r-- | toolame.c | 15 | ||||
-rw-r--r-- | xpad.c | 7 | ||||
-rw-r--r-- | xpad.h | 3 |
3 files changed, 14 insertions, 11 deletions
@@ -393,6 +393,7 @@ int main (int argc, char **argv) for (i = 0; i < adb; i++) put1bit (&bs, 0); + uint8_t xpadbyte; if (header.dab_extension) { if (xpad_len()) { /* Reserve some bytes for X-PAD in DAB mode */ @@ -404,7 +405,8 @@ int main (int argc, char **argv) */ for (i = 0; i < header.dab_length; i++) { - putbits (&bs, xpad_byte(), 8); + xpadbyte = xpad_byte(); + putbits (&bs, xpadbyte, 8); } } else { @@ -419,7 +421,10 @@ int main (int argc, char **argv) /* reserved 2 bytes for F-PAD in DAB mode */ putbits (&bs, crc, 8); } - putbits (&bs, xpad_fpad(), 16); // CI + xpadbyte = xpad_byte(); + putbits (&bs, xpadbyte, 8); + xpadbyte = xpad_byte(); + putbits (&bs, xpadbyte, 8); //header.dab_length = xpad_len(); // set xpad-length for next frame @@ -573,7 +578,7 @@ void usage (void) fprintf (stdout, "\t-o mark as original\n"); fprintf (stdout, "\t-e add error protection\n"); fprintf (stdout, "\t-r force padding bit/frame off\n"); - fprintf (stdout, "\t-D portnum activate DAB-mode. Listen for pad data on port portnum\n"); + fprintf (stdout, "\t-D xpadlen activate DAB-mode. Read xpadlen bytes per frame from the pad file (hardcoded in xpad.c)\n"); fprintf (stdout, "\t-t talkativity 0=no messages (dflt 2)"); fprintf (stdout, "Files\n"); fprintf (stdout, @@ -793,8 +798,8 @@ void parse_args (int argc, char **argv, frame_info * frame, int *psy, break; case 'D': argUsed = 1; - header->dab_length = atoi(arg); - //header->dab_length = xpad_len(); + const int fpad_len = 2; + header->dab_length = atoi(arg) - fpad_len; header->error_protection = TRUE; header->dab_extension = 2; header->padding = 0; @@ -11,15 +11,16 @@ static int xpad_fd = 0; -uint16_t xpad_fpad() { +/* The F-PAD has to be: uint16_t fpad = 0x2; // CI flag if (xpad_len()) { fpad |= 1<<13; // variable length X-PAD } - return fpad; -} + which is included by mot-encoder in the file/fifo + it generates + */ int xpad_len() { if (xpad_fd == 0) { @@ -12,8 +12,5 @@ int xpad_len(void); */ uint8_t xpad_byte(void); -/* Calculate the two F-PAD bytes */ -uint16_t xpad_fpad(void); - #endif |