Forum: GNU Radio atsc - field sync mux/demux questions

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
Dc48f9c00e3e6de9640898a531c26d89?d=identicon&s=25 Charles Swiger (Guest)
on 2006-04-21 23:05
(Received via mailing list)
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?

2) 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 there's:

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

and in it's:

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

Dc48f9c00e3e6de9640898a531c26d89?d=identicon&s=25 Charles Swiger (Guest)
on 2006-04-22 00:53
(Received via mailing list)
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 *)
      d_lost_index = in[0].index + ii;

understandably gets: In member function `virtual int
atsc_field_sync_demux::work(int, gr_vector_const_void_star&,
gr_vector_void_star&)': error: 'const class atsc_data_segment' has
no member named 'index'
This topic is locked and can not be replied to.