Skip to content

Commit 5a5b9fb

Browse files
committed
media: vidtv: simplify NIT write function
- pass struct vidtv_psi_nit_write_args as a pointer; - avoid initializing struct fields multiple times. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
1 parent 6286a4b commit 5a5b9fb

3 files changed

Lines changed: 47 additions & 48 deletions

File tree

drivers/media/test-drivers/vidtv/vidtv_mux.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ static u32 vidtv_mux_push_si(struct vidtv_mux *m)
204204
nit_args.offset = m->mux_buf_offset;
205205
nit_args.continuity_counter = &nit_ctx->cc;
206206

207-
m->mux_buf_offset += vidtv_psi_nit_write_into(nit_args);
207+
m->mux_buf_offset += vidtv_psi_nit_write_into(&nit_args);
208208

209209
eit_args.offset = m->mux_buf_offset;
210210
eit_args.continuity_counter = &eit_ctx->cc;

drivers/media/test-drivers/vidtv/vidtv_psi.c

Lines changed: 45 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1647,53 +1647,60 @@ struct vidtv_psi_table_nit
16471647
return NULL;
16481648
}
16491649

1650-
u32 vidtv_psi_nit_write_into(struct vidtv_psi_nit_write_args args)
1650+
u32 vidtv_psi_nit_write_into(struct vidtv_psi_nit_write_args *args)
16511651
{
1652-
struct vidtv_psi_desc *table_descriptor = args.nit->descriptor;
1653-
struct vidtv_psi_table_transport *transport = args.nit->transport;
1652+
struct header_write_args h_args = {
1653+
.dest_buf = args->buf,
1654+
.dest_offset = args->offset,
1655+
.h = &args->nit->header,
1656+
.pid = VIDTV_NIT_PID,
1657+
.dest_buf_sz = args->buf_sz,
1658+
};
1659+
struct psi_write_args psi_args = {
1660+
.dest_buf = args->buf,
1661+
.from = &args->nit->bitfield,
1662+
.len = sizeof_field(struct vidtv_psi_table_nit, bitfield),
1663+
.pid = VIDTV_NIT_PID,
1664+
.new_psi_section = false,
1665+
.is_crc = false,
1666+
.dest_buf_sz = args->buf_sz,
1667+
};
1668+
struct desc_write_args d_args = {
1669+
.dest_buf = args->buf,
1670+
.pid = VIDTV_NIT_PID,
1671+
.dest_buf_sz = args->buf_sz,
1672+
};
1673+
struct crc32_write_args c_args = {
1674+
.dest_buf = args->buf,
1675+
.pid = VIDTV_NIT_PID,
1676+
.dest_buf_sz = args->buf_sz,
1677+
};
1678+
struct vidtv_psi_desc *table_descriptor = args->nit->descriptor;
1679+
struct vidtv_psi_table_transport *transport = args->nit->transport;
16541680
struct vidtv_psi_desc *transport_descriptor;
1655-
struct header_write_args h_args = {};
1656-
struct psi_write_args psi_args = {};
1657-
struct desc_write_args d_args = {};
1658-
struct crc32_write_args c_args = {};
16591681
u32 crc = INITIAL_CRC;
16601682
u32 nbytes = 0;
16611683

1662-
vidtv_psi_nit_table_update_sec_len(args.nit);
1684+
vidtv_psi_nit_table_update_sec_len(args->nit);
16631685

1664-
h_args.dest_buf = args.buf;
1665-
h_args.dest_offset = args.offset;
1666-
h_args.h = &args.nit->header;
1667-
h_args.pid = VIDTV_NIT_PID;
1668-
h_args.continuity_counter = args.continuity_counter;
1669-
h_args.dest_buf_sz = args.buf_sz;
1686+
h_args.continuity_counter = args->continuity_counter;
16701687
h_args.crc = &crc;
16711688

16721689
nbytes += vidtv_psi_table_header_write_into(&h_args);
16731690

16741691
/* write the bitfield */
1675-
psi_args.dest_buf = args.buf;
1676-
psi_args.from = &args.nit->bitfield;
1677-
psi_args.len = sizeof_field(struct vidtv_psi_table_nit, bitfield);
16781692

1679-
psi_args.dest_offset = args.offset + nbytes;
1680-
psi_args.pid = VIDTV_NIT_PID;
1681-
psi_args.new_psi_section = false;
1682-
psi_args.continuity_counter = args.continuity_counter;
1683-
psi_args.is_crc = false;
1684-
psi_args.dest_buf_sz = args.buf_sz;
1693+
psi_args.dest_offset = args->offset + nbytes;
1694+
psi_args.continuity_counter = args->continuity_counter;
16851695
psi_args.crc = &crc;
16861696

16871697
nbytes += vidtv_psi_ts_psi_write_into(&psi_args);
16881698

16891699
while (table_descriptor) {
16901700
/* write the descriptors, if any */
1691-
d_args.dest_buf = args.buf;
1692-
d_args.dest_offset = args.offset + nbytes;
1701+
d_args.dest_offset = args->offset + nbytes;
16931702
d_args.desc = table_descriptor;
1694-
d_args.pid = VIDTV_NIT_PID;
1695-
d_args.continuity_counter = args.continuity_counter;
1696-
d_args.dest_buf_sz = args.buf_sz;
1703+
d_args.continuity_counter = args->continuity_counter;
16971704
d_args.crc = &crc;
16981705

16991706
nbytes += vidtv_psi_desc_write_into(&d_args);
@@ -1702,34 +1709,29 @@ u32 vidtv_psi_nit_write_into(struct vidtv_psi_nit_write_args args)
17021709
}
17031710

17041711
/* write the second bitfield */
1705-
psi_args.dest_buf = args.buf;
1706-
psi_args.from = &args.nit->bitfield2;
1712+
psi_args.from = &args->nit->bitfield2;
17071713
psi_args.len = sizeof_field(struct vidtv_psi_table_nit, bitfield2);
1708-
psi_args.dest_offset = args.offset + nbytes;
1709-
psi_args.pid = VIDTV_NIT_PID;
1714+
psi_args.dest_offset = args->offset + nbytes;
17101715

17111716
nbytes += vidtv_psi_ts_psi_write_into(&psi_args);
17121717

1718+
psi_args.len = sizeof_field(struct vidtv_psi_table_transport, transport_id) +
1719+
sizeof_field(struct vidtv_psi_table_transport, network_id) +
1720+
sizeof_field(struct vidtv_psi_table_transport, bitfield);
17131721
while (transport) {
17141722
/* write the transport sections, if any */
17151723
psi_args.from = transport;
1716-
psi_args.len = sizeof_field(struct vidtv_psi_table_transport, transport_id) +
1717-
sizeof_field(struct vidtv_psi_table_transport, network_id) +
1718-
sizeof_field(struct vidtv_psi_table_transport, bitfield);
1719-
psi_args.dest_offset = args.offset + nbytes;
1724+
psi_args.dest_offset = args->offset + nbytes;
17201725

17211726
nbytes += vidtv_psi_ts_psi_write_into(&psi_args);
17221727

17231728
transport_descriptor = transport->descriptor;
17241729

17251730
while (transport_descriptor) {
17261731
/* write the transport descriptors, if any */
1727-
d_args.dest_buf = args.buf;
1728-
d_args.dest_offset = args.offset + nbytes;
1732+
d_args.dest_offset = args->offset + nbytes;
17291733
d_args.desc = transport_descriptor;
1730-
d_args.pid = VIDTV_NIT_PID;
1731-
d_args.continuity_counter = args.continuity_counter;
1732-
d_args.dest_buf_sz = args.buf_sz;
1734+
d_args.continuity_counter = args->continuity_counter;
17331735
d_args.crc = &crc;
17341736

17351737
nbytes += vidtv_psi_desc_write_into(&d_args);
@@ -1740,12 +1742,9 @@ u32 vidtv_psi_nit_write_into(struct vidtv_psi_nit_write_args args)
17401742
transport = transport->next;
17411743
}
17421744

1743-
c_args.dest_buf = args.buf;
1744-
c_args.dest_offset = args.offset + nbytes;
1745+
c_args.dest_offset = args->offset + nbytes;
17451746
c_args.crc = cpu_to_be32(crc);
1746-
c_args.pid = VIDTV_NIT_PID;
1747-
c_args.continuity_counter = args.continuity_counter;
1748-
c_args.dest_buf_sz = args.buf_sz;
1747+
c_args.continuity_counter = args->continuity_counter;
17491748

17501749
/* Write the CRC32 at the end */
17511750
nbytes += table_section_crc32_write_into(&c_args);

drivers/media/test-drivers/vidtv/vidtv_psi.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -709,7 +709,7 @@ struct vidtv_psi_nit_write_args {
709709
* equal to the size of the NIT, since more space is needed for TS headers during TS
710710
* encapsulation.
711711
*/
712-
u32 vidtv_psi_nit_write_into(struct vidtv_psi_nit_write_args args);
712+
u32 vidtv_psi_nit_write_into(struct vidtv_psi_nit_write_args *args);
713713

714714
void vidtv_psi_nit_table_destroy(struct vidtv_psi_table_nit *nit);
715715

0 commit comments

Comments
 (0)