[linux-dvb] H.264 DVB-T support for dvb-utils and w_scan

Steven Ellis mail_lists at stevencherie.net
Sun Dec 9 05:04:59 CET 2007


DTT tests have just started here in NZ and they are going to be using
H.264 for the video signal. Using the existing builds of dvb-utils-1.1.1
the video PIDs don't appear in the channels.conf because they are using
0x1b for the video stream type.

If I dump the PMT for one of the channels using dvbsnoop it contains the
following info

    Stream_type: 27 (0x1b)  [= AVC video stream as defined in ITU-T Rec.
H.264 | ISO/IEC 14496-10 Video]
    reserved_1: 7 (0x07)
    Elementary_PID: 514 (0x0202)
    reserved_2: 15 (0x0f)
    ES_info_length: 16 (0x0010)

            DVB-DescriptorTag: 82 (0x52)  [= stream_identifier_descriptor]
            Descriptor_length: 1 (0x01)
            component_tag: 5 (0x05)

            MPEG-DescriptorTag: 14 (0x0e)  [= maximum_bitrate_descriptor]
            Descriptor_length: 3 (0x03)
            reserved_1: 3 (0x03)
            maximum_bitrate: 16050 (0x00003eb2)  (= 802500 Bytes/sec)

            MPEG-DescriptorTag: 2 (0x02)  [= video_stream_descriptor]
            Descriptor_length: 3 (0x03)
            multiple_frame_rate_flag: 0 (0x00)
            frame_rate_code: 3 (0x0003)
            MPEG_1_only_flag: 0 (0x00)
            constrained_parameter_flag: 1 (0x01)
            still_picture_flag: 0 (0x00)

            MPEG-DescriptorTag: 6 (0x06)  [=
data_stream_alignment_descriptor]
            Descriptor_length: 1 (0x01)
            alignment_type: 2 (0x02)
               as VideoStream:  (= video access unit)   as AudioStream: 
(= reserved)



At present the tools scan/dvbscan and w_scan assume that the video has a
stream type of 0x01 or 0x02.

For dvb-utils the following diff will provide H.264 scan support

--- linuxtv-dvb-apps-1.1.1.orig/util/scan/scan.c
+++ linuxtv-dvb-apps-1.1.1/util/scan/scan.c
@@ -755,6 +757,7 @@
                switch (buf[0]) {
                case 0x01:
                case 0x02:
+               case 0x1b: /* H.264 video stream */
                        moreverbose("  VIDEO     : PID 0x%04x\n",
elementary_pid);
                        if (s->video_pid == 0)
                                s->video_pid = elementary_pid;
 

In the case of the tool w_scan a similar line is needed in the function
parse_pmt.


Steve



More information about the linux-dvb mailing list