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

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Charles S. (Guest)
on 2006-04-22 01: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 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
Charles S. (Guest)
on 2006-04-22 02: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 *)
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'
This topic is locked and can not be replied to.