Skip to content

Commit b087982

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

3 files changed

Lines changed: 46 additions & 44 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
@@ -209,7 +209,7 @@ static u32 vidtv_mux_push_si(struct vidtv_mux *m)
209209
eit_args.offset = m->mux_buf_offset;
210210
eit_args.continuity_counter = &eit_ctx->cc;
211211

212-
m->mux_buf_offset += vidtv_psi_eit_write_into(eit_args);
212+
m->mux_buf_offset += vidtv_psi_eit_write_into(&eit_args);
213213

214214
nbytes = m->mux_buf_offset - initial_offset;
215215

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

Lines changed: 44 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1857,68 +1857,73 @@ struct vidtv_psi_table_eit
18571857
return eit;
18581858
}
18591859

1860-
u32 vidtv_psi_eit_write_into(struct vidtv_psi_eit_write_args args)
1860+
u32 vidtv_psi_eit_write_into(struct vidtv_psi_eit_write_args *args)
18611861
{
1862-
struct vidtv_psi_table_eit_event *event = args.eit->event;
1862+
struct header_write_args h_args = {
1863+
.dest_buf = args->buf,
1864+
.dest_offset = args->offset,
1865+
.h = &args->eit->header,
1866+
.pid = VIDTV_EIT_PID,
1867+
.dest_buf_sz = args->buf_sz,
1868+
};
1869+
struct psi_write_args psi_args = {
1870+
.dest_buf = args->buf,
1871+
.len = sizeof_field(struct vidtv_psi_table_eit, transport_id) +
1872+
sizeof_field(struct vidtv_psi_table_eit, network_id) +
1873+
sizeof_field(struct vidtv_psi_table_eit, last_segment) +
1874+
sizeof_field(struct vidtv_psi_table_eit, last_table_id),
1875+
.pid = VIDTV_EIT_PID,
1876+
.new_psi_section = false,
1877+
.is_crc = false,
1878+
.dest_buf_sz = args->buf_sz,
1879+
};
1880+
struct desc_write_args d_args = {
1881+
.dest_buf = args->buf,
1882+
.pid = VIDTV_EIT_PID,
1883+
.dest_buf_sz = args->buf_sz,
1884+
};
1885+
struct crc32_write_args c_args = {
1886+
.dest_buf = args->buf,
1887+
.pid = VIDTV_EIT_PID,
1888+
.dest_buf_sz = args->buf_sz,
1889+
};
1890+
struct vidtv_psi_table_eit_event *event = args->eit->event;
18631891
struct vidtv_psi_desc *event_descriptor;
1864-
struct header_write_args h_args = {};
1865-
struct psi_write_args psi_args = {};
1866-
struct desc_write_args d_args = {};
1867-
struct crc32_write_args c_args = {};
18681892
u32 crc = INITIAL_CRC;
18691893
u32 nbytes = 0;
18701894

1871-
vidtv_psi_eit_table_update_sec_len(args.eit);
1895+
vidtv_psi_eit_table_update_sec_len(args->eit);
18721896

1873-
h_args.dest_buf = args.buf;
1874-
h_args.dest_offset = args.offset;
1875-
h_args.h = &args.eit->header;
1876-
h_args.pid = VIDTV_EIT_PID;
1877-
h_args.continuity_counter = args.continuity_counter;
1878-
h_args.dest_buf_sz = args.buf_sz;
1897+
h_args.continuity_counter = args->continuity_counter;
18791898
h_args.crc = &crc;
18801899

18811900
nbytes += vidtv_psi_table_header_write_into(&h_args);
18821901

1883-
psi_args.dest_buf = args.buf;
1884-
psi_args.from = &args.eit->transport_id;
1885-
1886-
psi_args.len = sizeof_field(struct vidtv_psi_table_eit, transport_id) +
1887-
sizeof_field(struct vidtv_psi_table_eit, network_id) +
1888-
sizeof_field(struct vidtv_psi_table_eit, last_segment) +
1889-
sizeof_field(struct vidtv_psi_table_eit, last_table_id);
1890-
1891-
psi_args.dest_offset = args.offset + nbytes;
1892-
psi_args.pid = VIDTV_EIT_PID;
1893-
psi_args.new_psi_section = false;
1894-
psi_args.continuity_counter = args.continuity_counter;
1895-
psi_args.is_crc = false;
1896-
psi_args.dest_buf_sz = args.buf_sz;
1902+
psi_args.from = &args->eit->transport_id;
1903+
psi_args.dest_offset = args->offset + nbytes;
1904+
psi_args.continuity_counter = args->continuity_counter;
18971905
psi_args.crc = &crc;
18981906

18991907
nbytes += vidtv_psi_ts_psi_write_into(&psi_args);
19001908

1909+
/* skip both pointers at the end */
1910+
psi_args.len = sizeof(struct vidtv_psi_table_eit_event) -
1911+
sizeof(struct vidtv_psi_desc *) -
1912+
sizeof(struct vidtv_psi_table_eit_event *);
19011913
while (event) {
19021914
/* copy the events, if any */
19031915
psi_args.from = event;
1904-
/* skip both pointers at the end */
1905-
psi_args.len = sizeof(struct vidtv_psi_table_eit_event) -
1906-
sizeof(struct vidtv_psi_desc *) -
1907-
sizeof(struct vidtv_psi_table_eit_event *);
1908-
psi_args.dest_offset = args.offset + nbytes;
1916+
psi_args.dest_offset = args->offset + nbytes;
19091917

19101918
nbytes += vidtv_psi_ts_psi_write_into(&psi_args);
19111919

19121920
event_descriptor = event->descriptor;
19131921

19141922
while (event_descriptor) {
19151923
/* copy the event descriptors, if any */
1916-
d_args.dest_buf = args.buf;
1917-
d_args.dest_offset = args.offset + nbytes;
1924+
d_args.dest_offset = args->offset + nbytes;
19181925
d_args.desc = event_descriptor;
1919-
d_args.pid = VIDTV_EIT_PID;
1920-
d_args.continuity_counter = args.continuity_counter;
1921-
d_args.dest_buf_sz = args.buf_sz;
1926+
d_args.continuity_counter = args->continuity_counter;
19221927
d_args.crc = &crc;
19231928

19241929
nbytes += vidtv_psi_desc_write_into(&d_args);
@@ -1929,12 +1934,9 @@ u32 vidtv_psi_eit_write_into(struct vidtv_psi_eit_write_args args)
19291934
event = event->next;
19301935
}
19311936

1932-
c_args.dest_buf = args.buf;
1933-
c_args.dest_offset = args.offset + nbytes;
1937+
c_args.dest_offset = args->offset + nbytes;
19341938
c_args.crc = cpu_to_be32(crc);
1935-
c_args.pid = VIDTV_EIT_PID;
1936-
c_args.continuity_counter = args.continuity_counter;
1937-
c_args.dest_buf_sz = args.buf_sz;
1939+
c_args.continuity_counter = args->continuity_counter;
19381940

19391941
/* Write the CRC at the end */
19401942
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
@@ -773,7 +773,7 @@ struct vidtv_psi_eit_write_args {
773773
* equal to the size of the EIT, since more space is needed for TS headers during TS
774774
* encapsulation.
775775
*/
776-
u32 vidtv_psi_eit_write_into(struct vidtv_psi_eit_write_args args);
776+
u32 vidtv_psi_eit_write_into(struct vidtv_psi_eit_write_args *args);
777777

778778
void vidtv_psi_eit_table_destroy(struct vidtv_psi_table_eit *eit);
779779

0 commit comments

Comments
 (0)