h at realh.co.uk
Wed Mar 16 17:13:40 PDT 2011
On Wed, 16 Mar 2011 23:40:39 +0100
Alberto Milla <amilla at vicomtech.org> wrote:
> I'm afraid that I can't give you a good answer, because my experience
> with gstreamer and DVB-T are quite short. Then be careful.
> When you say "dvbsrc does all the low-level parsing itself". I
> disagree IMHO, the EIT parsing is done in mpegtsparse
Yes, I think I was wrong about that, it makes more sense that
mpegtsparse would do this.
> If you look at "mpegts_parse_handle_psi" function, there classifies
> the type of table that has arrived. If Freeview is not DVB-T compliant
> I think that is there where you will have to modify the code. In the
> case of Freesat I can't give you any answer because I have only worked
> with the terrestrial standard.
I checked Freeview today. mpegtsparse does parse its LCN descriptors
:-). I don't know about Freesat yet, I'll check that shortly.
> Continuing with the program recording and the EPG data extraction. In
> France for example, they send all the channels' schedule by all the
> multiplex, however in Spain the only send the schedule of the channels
> that form the multiplex at you are listen to. Reading you question It
> looks like the UK system is like the spanish. I think the solution is
> in the tuner, if you use a simple tuner you can't get two dvbsrc, but
> if you have a dual digital tuner it must be possible.
Both Freeview and Freesat send the entire schedule on each transponder.
However, I want to read EIT tables at the same time as streaming/
recoding video from the same tuner. As a dvbsrc's pids property is
write-only I can't read which pids a dvbbasebin has chosen and add the
EIT pids to it. Maybe dvbbasebin adds EIT pids anyway, but that won't
work for Freesat due to its non-standard pids.
After thinking about it a bit deeper, I don't think it will be possible
to have two dvbsrc objects on the same tuner because a frontend only
allows one pseudo-file handle at a time.
So I probably won't be able to use dvbbasebin; I'll just have to parse
the PAT and PMT and select the video and audio pids for dvbsrc myself.
> On 16 March 2011 15:09, Tony Houghton <h at realh.co.uk> wrote:
> > On Wed, 16 Mar 2011 00:13:31 +0000
> > Tony Houghton <h at realh.co.uk> wrote:
> >> I wrote a small test program in python, based on what I learnt from
> >> the dvbscan.c code; I've attached it. The mpegtsparse element doesn't
> >> seem to be working at all; the only ELEMENT messages I'm getting are
> >> dvb-adapter and dvb-frontend-stats which I think come from dvbsrc, not
> >> mpegtsparse. And mpegtsparse doesn't create any pads. If I don't
> >> include the extra video/audio pids as well as the SI pids I get a
> >> dvb-read-failure ELEMENT message.
> > I spotted my own mistake, I only set the dvbsource to STATE_PLAYING
> > instead of the pipeline. It's working now. I still get the
> > dvb-read-failure messages if I only include SI pids but it seems
> > harmless and I get the section messages OK.
> > I'm still puzzled by the other two issues though:
> >> Another oddity is that I originally used
> >> set_properties("adapter", adapter, "frontend", frontend) instead of a
> >> separate set_property for each property, but it didn't work. The
> >> adapter number stayed 0 after I had set it to 1 (also if I reordered
> >> the properties so adapter came after frontend).
> >> Also, why is the "pids" property write-only? In a complex application
> >> it would be nice to know what the pids already are to make sure
> >> different functions don't conflict with each other.
> > The most useful aspect of being able to read pids would be so that I
> > could use a dvbbasebin to stream or record a programme and add EIT pids
> > to its child dvbsrc to "harvest" the EPG at the same time.
> > Or is it possible to use two dvbsrc elements on the same adapter and
> > frontend simultaneously?
More information about the gstreamer-devel