media: vidtv: properly fill EIT service_id
authorMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Mon, 23 Nov 2020 12:51:31 +0000 (13:51 +0100)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Thu, 26 Nov 2020 07:05:23 +0000 (08:05 +0100)
The EIT header ID field should not contain the network ID, but,
instead, the service_id of the program described at EIT.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/test-drivers/vidtv/vidtv_channel.c
drivers/media/test-drivers/vidtv/vidtv_psi.c
drivers/media/test-drivers/vidtv/vidtv_psi.h

index b49fb61847e178bcb2b85caf7f4b3aaeed4aa420..77e33f33afee12f8e7a41b24e7f98db111ae9b5c 100644 (file)
@@ -450,7 +450,8 @@ int vidtv_channel_si_init(struct vidtv_mux *m)
                goto free_service_list;
 
        m->si.eit = vidtv_psi_eit_table_init(m->network_id,
-                                            m->transport_stream_id);
+                                            m->transport_stream_id,
+                                            programs->service_id);
        if (!m->si.eit)
                goto free_nit;
 
index 341af312ad56d64cd2f3d61828587eb4be59bdc7..02dd217bdbf659590c2eafb8ddf2ee529cc63b84 100644 (file)
@@ -1809,7 +1809,8 @@ void vidtv_psi_eit_event_assign(struct vidtv_psi_table_eit *eit,
 
 struct vidtv_psi_table_eit
 *vidtv_psi_eit_table_init(u16 network_id,
-                         u16 transport_stream_id)
+                         u16 transport_stream_id,
+                         __be16 service_id)
 {
        struct vidtv_psi_table_eit *eit;
        const u16 SYNTAX = 0x1;
@@ -1824,7 +1825,7 @@ struct vidtv_psi_table_eit
 
        eit->header.bitfield = cpu_to_be16((SYNTAX << 15) | (ONE << 14) | (ONES << 12));
 
-       eit->header.id = cpu_to_be16(network_id);
+       eit->header.id = service_id;
        eit->header.current_next = ONE;
 
        eit->header.version = 0x1f;
index 4fcb2c0615bb2f395f01b954436905a27310f3ce..d8645d75c3f14307d8bd7be3d84d68437ec4b33e 100644 (file)
@@ -738,7 +738,8 @@ struct vidtv_psi_table_eit {
 
 struct vidtv_psi_table_eit
 *vidtv_psi_eit_table_init(u16 network_id,
-                         u16 transport_stream_id);
+                         u16 transport_stream_id,
+                         u16 service_id);
 
 /**
  * struct vidtv_psi_eit_write_args - Arguments for writing an EIT section