Atsc - field sync mux/demux questions


#1

some questions toward porting GrAtscFieldSyncMux/Demux:

  1. Is there a good concrete example for using ‘forecast’?

it will be necessary since a FIELD SYNC field is (IIUC) a special
equalizer training and info field inserted every 312 data segments,
so the mux will take in 624 ds and output 626 ds. Also is there
a “sampling frequency” to jack up by 313/312 like in the 0.9 version?

  1. What is the 2.0 version of type VrSampleIndex ? Tracked it
    back to

typedef unsigned long long VrSampleIndex;

in VrTypes.h. Maybe gr_uint64 from gr_types.h ?

There’s (lots) more but I think using forecast is the thing to focus on
for now.

I see in gr_block.cc there’s:

void
gr_block::forecast (int noutput_items, gr_vector_int
&ninput_items_required)
{
unsigned ninputs = ninput_items_required.size ();
for (unsigned i = 0; i < ninputs; i++)
ninput_items_required[i] = noutput_items;
}

and in gr_sync_block.cc it’s:

void
gr_sync_block::forecast (int noutput_items, gr_vector_int
&ninput_items_required)
{
unsigned ninputs = ninput_items_required.size();
for (unsigned i = 0; i < ninputs; i++)
ninput_items_required[i] = fixed_rate_noutput_to_ninput
(noutput_items);
}

–Chuck


#2

Well - the good news - plowing blindly ahead I shoveled
everything from GrAtscFieldSyncMux into a new
atsc_field_sync_mux and it actually compiles and might
be producing meaningful results. At least scrolling out
to segment 313 shows a segment full of 1’s and 6’s that
might match a pn511 reference symbol field.

However it’s not so simple with demux - the old code has:

GrAtscFieldSyncDemux::work (VrSampleRange output, void *ao[],
VrSampleRange inputs[], void *ai[])

d_lost_index = inputs[0].index + ii;

But that won’t compile in 2.0. Using something like:

atsc_field_sync_demux::work (int noutput_items,
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
const atsc_data_segment *in = (const atsc_data_segment *)
input_items[0];

d_lost_index = in[0].index + ii;

understandably gets:

atsc_field_sync_demux.cc: In member function `virtual int
atsc_field_sync_demux::work(int, gr_vector_const_void_star&,
gr_vector_void_star&)’:
atsc_field_sync_demux.cc:79: error: ‘const class atsc_data_segment’ has
no member named ‘index’