@@ -1306,70 +1306,76 @@ struct vidtv_psi_table_sdt *vidtv_psi_sdt_table_init(u16 network_id,
13061306 return sdt ;
13071307}
13081308
1309- u32 vidtv_psi_sdt_write_into (struct vidtv_psi_sdt_write_args args )
1309+ u32 vidtv_psi_sdt_write_into (struct vidtv_psi_sdt_write_args * args )
13101310{
1311- struct vidtv_psi_table_sdt_service * service = args .sdt -> service ;
1311+ struct header_write_args h_args = {
1312+ .dest_buf = args -> buf ,
1313+ .dest_offset = args -> offset ,
1314+ .h = & args -> sdt -> header ,
1315+ .pid = VIDTV_SDT_PID ,
1316+ .dest_buf_sz = args -> buf_sz ,
1317+ };
1318+ struct psi_write_args psi_args = {
1319+ .dest_buf = args -> buf ,
1320+ .len = sizeof_field (struct vidtv_psi_table_sdt , network_id ) +
1321+ sizeof_field (struct vidtv_psi_table_sdt , reserved ),
1322+ .pid = VIDTV_SDT_PID ,
1323+ .new_psi_section = false,
1324+ .is_crc = false,
1325+ .dest_buf_sz = args -> buf_sz ,
1326+ };
1327+ struct desc_write_args d_args = {
1328+ .dest_buf = args -> buf ,
1329+ .pid = VIDTV_SDT_PID ,
1330+ .dest_buf_sz = args -> buf_sz ,
1331+ };
1332+ struct crc32_write_args c_args = {
1333+ .dest_buf = args -> buf ,
1334+ .pid = VIDTV_SDT_PID ,
1335+ .dest_buf_sz = args -> buf_sz ,
1336+ };
1337+ struct vidtv_psi_table_sdt_service * service = args -> sdt -> service ;
13121338 struct vidtv_psi_desc * service_desc ;
1313- struct header_write_args h_args = {};
1314- struct psi_write_args psi_args = {};
1315- struct desc_write_args d_args = {};
1316- struct crc32_write_args c_args = {};
1317- u16 sdt_pid = VIDTV_SDT_PID ;
13181339 u32 nbytes = 0 ;
13191340 u32 crc = INITIAL_CRC ;
13201341
13211342 /* see ETSI EN 300 468 v1.15.1 p. 11 */
13221343
1323- vidtv_psi_sdt_table_update_sec_len (args . sdt );
1344+ vidtv_psi_sdt_table_update_sec_len (args -> sdt );
13241345
1325- h_args .dest_buf = args .buf ;
1326- h_args .dest_offset = args .offset ;
1327- h_args .h = & args .sdt -> header ;
1328- h_args .pid = sdt_pid ;
1329- h_args .continuity_counter = args .continuity_counter ;
1330- h_args .dest_buf_sz = args .buf_sz ;
1346+ h_args .continuity_counter = args -> continuity_counter ;
13311347 h_args .crc = & crc ;
13321348
13331349 nbytes += vidtv_psi_table_header_write_into (& h_args );
13341350
1335- psi_args .dest_buf = args .buf ;
1336- psi_args .from = & args .sdt -> network_id ;
1337-
1338- psi_args .len = sizeof_field (struct vidtv_psi_table_sdt , network_id ) +
1339- sizeof_field (struct vidtv_psi_table_sdt , reserved );
1340-
1341- psi_args .dest_offset = args .offset + nbytes ;
1342- psi_args .pid = sdt_pid ;
1343- psi_args .new_psi_section = false;
1344- psi_args .continuity_counter = args .continuity_counter ;
1345- psi_args .is_crc = false;
1346- psi_args .dest_buf_sz = args .buf_sz ;
1351+ psi_args .from = & args -> sdt -> network_id ;
1352+ psi_args .dest_offset = args -> offset + nbytes ;
1353+ psi_args .continuity_counter = args -> continuity_counter ;
13471354 psi_args .crc = & crc ;
13481355
13491356 /* copy u16 network_id + u8 reserved)*/
13501357 nbytes += vidtv_psi_ts_psi_write_into (& psi_args );
13511358
1359+ /* skip both pointers at the end */
1360+ psi_args .len = sizeof (struct vidtv_psi_table_sdt_service ) -
1361+ sizeof (struct vidtv_psi_desc * ) -
1362+ sizeof (struct vidtv_psi_table_sdt_service * );
1363+
13521364 while (service ) {
13531365 /* copy the services, if any */
13541366 psi_args .from = service ;
1355- /* skip both pointers at the end */
1356- psi_args .len = sizeof (struct vidtv_psi_table_sdt_service ) -
1357- sizeof (struct vidtv_psi_desc * ) -
1358- sizeof (struct vidtv_psi_table_sdt_service * );
1359- psi_args .dest_offset = args .offset + nbytes ;
1367+ psi_args .dest_offset = args -> offset + nbytes ;
1368+ psi_args .continuity_counter = args -> continuity_counter ;
13601369
13611370 nbytes += vidtv_psi_ts_psi_write_into (& psi_args );
13621371
13631372 service_desc = service -> descriptor ;
13641373
13651374 while (service_desc ) {
13661375 /* copy the service descriptors, if any */
1367- d_args .dest_buf = args .buf ;
1368- d_args .dest_offset = args .offset + nbytes ;
1376+ d_args .dest_offset = args -> offset + nbytes ;
13691377 d_args .desc = service_desc ;
1370- d_args .pid = sdt_pid ;
1371- d_args .continuity_counter = args .continuity_counter ;
1372- d_args .dest_buf_sz = args .buf_sz ;
1378+ d_args .continuity_counter = args -> continuity_counter ;
13731379 d_args .crc = & crc ;
13741380
13751381 nbytes += vidtv_psi_desc_write_into (& d_args );
@@ -1380,12 +1386,9 @@ u32 vidtv_psi_sdt_write_into(struct vidtv_psi_sdt_write_args args)
13801386 service = service -> next ;
13811387 }
13821388
1383- c_args .dest_buf = args .buf ;
1384- c_args .dest_offset = args .offset + nbytes ;
1389+ c_args .dest_offset = args -> offset + nbytes ;
13851390 c_args .crc = cpu_to_be32 (crc );
1386- c_args .pid = sdt_pid ;
1387- c_args .continuity_counter = args .continuity_counter ;
1388- c_args .dest_buf_sz = args .buf_sz ;
1391+ c_args .continuity_counter = args -> continuity_counter ;
13891392
13901393 /* Write the CRC at the end */
13911394 nbytes += table_section_crc32_write_into (& c_args );
0 commit comments