From 9dc8f8b18043e71b50b3a254cb52bf355e97e6fa Mon Sep 17 00:00:00 2001
From: Tom Rondeau <trondeau@vt.edu>
Date: Sat, 24 Nov 2012 19:09:02 -0500
Subject: core: Update file_meta_sink to inject headers into data stream.

When a tag with updated metadata information is received, close out the previous header (by setting the segment size) and create a new header with the new data. Specifically for sample rate and time stamps. Will be useful for extra_dict when implemented.
---
 gr-utils/src/python/gr_read_file_metadata | 33 ++++++++++++++++++++-----------
 1 file changed, 21 insertions(+), 12 deletions(-)

(limited to 'gr-utils/src')

diff --git a/gr-utils/src/python/gr_read_file_metadata b/gr-utils/src/python/gr_read_file_metadata
index 657ad7c2b5..47109aead2 100644
--- a/gr-utils/src/python/gr_read_file_metadata
+++ b/gr-utils/src/python/gr_read_file_metadata
@@ -29,19 +29,28 @@ from gnuradio import parse_file_metadata
 def main(filename):
     handle = open(filename, "rb")
 
-    # just read out header bytes
-    header_str = handle.read(parse_file_metadata.HEADER_LENGTH)
-
-    # Convert from string to PMT (should be a dictionary)
-    try:
-        header = gr.pmt_deserialize_str(header_str)
-    except RuntimeError:
-        sys.stderr.write("Could not deserialize header: invalid or corrupt data file.\n")
-        sys.exit(1)
-    #gr.pmt_print(header)
+    nread = 0
+    while(True):
+        # read out next header bytes
+        hdr_start = handle.tell()
+        header_str = handle.read(parse_file_metadata.HEADER_LENGTH)
+        if(len(header_str) == 0):
+            break
+
+        # Convert from string to PMT (should be a dictionary)
+        try:
+            header = gr.pmt_deserialize_str(header_str)
+        except RuntimeError:
+            sys.stderr.write("Could not deserialize header: invalid or corrupt data file.\n")
+            sys.exit(1)
+        #gr.pmt_print(header)
+
+        info = parse_file_metadata.parse_header(header, hdr_start, True)
+        print "\n\n"
+
+        nread += info['nbytes'] + parse_file_metadata.HEADER_LENGTH
 
-    info = parse_file_metadata.parse_header(header, True)
-    #print info
+        handle.seek(nread, 0)
 
 if __name__ == "__main__":
     usage="%prog: [options] filename"
-- 
cgit v1.2.3