[mythtvnz] tv_grab_dvd

Nick Rout mythtvnz@lists.linuxnut.co.nz
Wed, 9 Aug 2006 23:18:44 +1200


On Wed, 9 Aug 2006 19:46:52 +1200
"Steve Hodge" <stevehodge@gmail.com> wrote:

> On 8/9/06, Nick Rout <nick@rout.co.nz> wrote:
> > > "toby" <toby@np.co.nz> wrote:
> > > > As those who use it know, you get the following entries in the output xml...
> > > >         <!--Unknown_Please_Report ID="55" Len="4" -->
> > > >         <!--Unknown_Please_Report ID="5f" Len="4" -->
> > Basically the 55 field is "Parental Rating Descriptor" and 5f is "Private Data Specifier Descriptor"
> 
> I think you'll find that those examples Toby gave were inside
> <category></category> tags - they are from the Content Descriptor's
> field, not from the descriptor tag. The stuff he's looking for is in
> Table 28.

well I do not profess to be a c expert, but the message "Unknown_Please_Report ID=..." comes from this bit of code:

tag=*(desc+i) &0xff;
                        taglen=*(desc+i+1) &0xff;
                        if (taglen>0)
                        {
                                switch (tag)
                                {
                                        case 0:
                                                break;;
                                        case 0x4D: //short evt desc, [title] [desc]
                                                if (round == 0)
                                                        parseEventDescription(desc+i);
                                                break;;
                                        case 0x4E: //long evt descriptor
                                                if (round == 0)
                                                        printf("\t<!-- Long Event Info Detected - Bug Author to decode -->\n
");
                                                break;;
                                        case 0x50: //component desc [video] [audio]
                                                if (round == 2)
                                                        parseComponentDescription(CastComponentDescriptor(desc+i), 1, &seen)
;
                                                else if (round == 3)
                                                        parseComponentDescription(CastComponentDescriptor(desc+i), 0, &seen)
;
                                                break;;
                                        case 0x54: //content desc [category]
                                                if (round == 1)
                                                        parseContentDescription(CastContentDescriptor(desc+i));
                                                break;;
                                        case 0x64: //Data broadcast desc - Text Desc for Data components
                                                break;;
                                        default:
                                                if (round == 0)
                                                        printf("\t<!--Unknown_Please_Report ID=\"%x\" Len=\"%d\" -->\n",tag,
taglen);

It looks to me that the switch statement is sorting tag values that correspond to table 12 in the spec, and in table 12 the tag values 55 and 5f have the meanings I described earlier. (in the same way that the tag values described in the code (4d, 4e, 50, 54, 64) correspond to entries in Table 12.

But if I am wrong, I am sorry for leading people up the garden path. I don't really understand the code, but would like to!