aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias P. Braendli <matthias.braendli@mpb.li>2014-03-27 20:35:02 +0100
committerMatthias P. Braendli <matthias.braendli@mpb.li>2014-03-27 20:35:02 +0100
commit41c3c609e857c8943575581022cd1c0030c3b5e7 (patch)
tree90d274a564fc19f82746a88db48075a50e6c5bb4
parenta96ff49819b5016e61197256cd8b53dc17386b29 (diff)
downloadtoolame-dab-41c3c609e857c8943575581022cd1c0030c3b5e7.tar.gz
toolame-dab-41c3c609e857c8943575581022cd1c0030c3b5e7.tar.bz2
toolame-dab-41c3c609e857c8943575581022cd1c0030c3b5e7.zip
Fix pad encoding, constant length x-pad
-rw-r--r--toolame.c15
-rw-r--r--xpad.c7
-rw-r--r--xpad.h3
3 files changed, 14 insertions, 11 deletions
diff --git a/toolame.c b/toolame.c
index 93d769d..1522e9d 100644
--- a/toolame.c
+++ b/toolame.c
@@ -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;
diff --git a/xpad.c b/xpad.c
index 231bdd9..472e40c 100644
--- a/xpad.c
+++ b/xpad.c
@@ -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) {
diff --git a/xpad.h b/xpad.h
index 2a06399..718778f 100644
--- a/xpad.h
+++ b/xpad.h
@@ -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