Skip to content

Commit 7f95751

Browse files
committed
media: vidtv: cleanup PAT write function
Avoid initializing the structs multiple times and pass the PAT struct as a pointer, instead of a var. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
1 parent c570fb9 commit 7f95751

3 files changed

Lines changed: 32 additions & 29 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
@@ -173,7 +173,7 @@ static u32 vidtv_mux_push_si(struct vidtv_mux *m)
173173
pat_args.offset = m->mux_buf_offset;
174174
pat_args.continuity_counter = &pat_ctx->cc;
175175

176-
m->mux_buf_offset += vidtv_psi_pat_write_into(pat_args);
176+
m->mux_buf_offset += vidtv_psi_pat_write_into(&pat_args);
177177

178178
for (i = 0; i < m->si.pat->num_pmt; ++i) {
179179
pmt_pid = vidtv_psi_pmt_get_pid(m->si.pmt_secs[i],

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

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -961,57 +961,60 @@ struct vidtv_psi_table_pat *vidtv_psi_pat_table_init(u16 transport_stream_id)
961961
return pat;
962962
}
963963

964-
u32 vidtv_psi_pat_write_into(struct vidtv_psi_pat_write_args args)
964+
u32 vidtv_psi_pat_write_into(struct vidtv_psi_pat_write_args *args)
965965
{
966-
struct vidtv_psi_table_pat_program *p = args.pat->program;
967-
struct header_write_args h_args = {};
968-
struct psi_write_args psi_args = {};
969-
struct crc32_write_args c_args = {};
970-
const u16 pat_pid = VIDTV_PAT_PID;
966+
struct vidtv_psi_table_pat_program *p = args->pat->program;
967+
struct header_write_args h_args = {
968+
.dest_buf = args->buf,
969+
.dest_offset = args->offset,
970+
.pid = VIDTV_PAT_PID,
971+
.h = &args->pat->header,
972+
.continuity_counter = args->continuity_counter,
973+
.dest_buf_sz = args->buf_sz,
974+
};
975+
struct psi_write_args psi_args = {
976+
.dest_buf = args->buf,
977+
.pid = VIDTV_PAT_PID,
978+
.new_psi_section = false,
979+
.continuity_counter = args->continuity_counter,
980+
.is_crc = false,
981+
.dest_buf_sz = args->buf_sz,
982+
};
983+
struct crc32_write_args c_args = {
984+
.dest_buf = args->buf,
985+
.pid = VIDTV_PAT_PID,
986+
.dest_buf_sz = args->buf_sz,
987+
};
971988
u32 crc = INITIAL_CRC;
972989
u32 nbytes = 0;
973990

974-
vidtv_psi_pat_table_update_sec_len(args.pat);
991+
vidtv_psi_pat_table_update_sec_len(args->pat);
975992

976-
h_args.dest_buf = args.buf;
977-
h_args.dest_offset = args.offset;
978-
h_args.h = &args.pat->header;
979-
h_args.pid = pat_pid;
980-
h_args.continuity_counter = args.continuity_counter;
981-
h_args.dest_buf_sz = args.buf_sz;
982993
h_args.crc = &crc;
983994

984995
nbytes += vidtv_psi_table_header_write_into(&h_args);
985996

986997
/* note that the field 'u16 programs' is not really part of the PAT */
987998

988-
psi_args.dest_buf = args.buf;
989-
psi_args.pid = pat_pid;
990-
psi_args.new_psi_section = false;
991-
psi_args.continuity_counter = args.continuity_counter;
992-
psi_args.is_crc = false;
993-
psi_args.dest_buf_sz = args.buf_sz;
994-
psi_args.crc = &crc;
999+
psi_args.crc = &crc;
9951000

9961001
while (p) {
9971002
/* copy the PAT programs */
9981003
psi_args.from = p;
9991004
/* skip the pointer */
10001005
psi_args.len = sizeof(*p) -
1001-
sizeof(struct vidtv_psi_table_pat_program *);
1002-
psi_args.dest_offset = args.offset + nbytes;
1006+
sizeof(struct vidtv_psi_table_pat_program *);
1007+
psi_args.dest_offset = args->offset + nbytes;
1008+
psi_args.continuity_counter = args->continuity_counter;
10031009

10041010
nbytes += vidtv_psi_ts_psi_write_into(&psi_args);
10051011

10061012
p = p->next;
10071013
}
10081014

1009-
c_args.dest_buf = args.buf;
1010-
c_args.dest_offset = args.offset + nbytes;
1015+
c_args.dest_offset = args->offset + nbytes;
1016+
c_args.continuity_counter = args->continuity_counter;
10111017
c_args.crc = cpu_to_be32(crc);
1012-
c_args.pid = pat_pid;
1013-
c_args.continuity_counter = args.continuity_counter;
1014-
c_args.dest_buf_sz = args.buf_sz;
10151018

10161019
/* Write the CRC32 at the end */
10171020
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
@@ -556,7 +556,7 @@ struct vidtv_psi_pat_write_args {
556556
* equal to the size of the PAT, since more space is needed for TS headers during TS
557557
* encapsulation.
558558
*/
559-
u32 vidtv_psi_pat_write_into(struct vidtv_psi_pat_write_args args);
559+
u32 vidtv_psi_pat_write_into(struct vidtv_psi_pat_write_args *args);
560560

561561
/**
562562
* struct vidtv_psi_sdt_write_args - Arguments for writing a SDT table

0 commit comments

Comments
 (0)